generator client {
  provider = "prisma-client-js"
  output   = "generated/client"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Cliente {
  id            BigInt   @id @default(autoincrement())
  created_at    DateTime @default(dbgenerated("(now() AT TIME ZONE 'utc')"))
  updated_at    DateTime @default(dbgenerated("(now() AT TIME ZONE 'utc')")) @updatedAt
  name          String
  cedula        BigInt   @unique
  ubicacion     String   @default(".")
  grupo_estudio String?
  empleado      Boolean  @default(false)
  avatar_url    String?
  telefono      String?
  idciat        String?

  asistencias      Asistencia[]
  tareasRealizadas TareaRealizada[]
  planillas        Planilla[]
}

model Planilla {
  id            BigInt    @id @default(autoincrement())
  created_at    DateTime  @default(dbgenerated("(now() AT TIME ZONE 'utc')"))
  updated_at    DateTime  @default(dbgenerated("(now() AT TIME ZONE 'utc')")) @updatedAt
  fecha_desde   DateTime
  fecha_hasta   DateTime
  titulo        String
  total         Decimal?
  estado        String    @default("pagado")
  fecha_anulado DateTime?

  tareasRealizadas TareaRealizada[]

  empleado_id BigInt
  empleado    Cliente @relation(fields: [empleado_id], references: [id])


  creador_id  String? @default(uuid()) @db.Uuid
  anulador_id String? @db.Uuid
}

model TareaRealizada {
  id            BigInt    @id @default(autoincrement())
  titulo        String
  precio        Float?
  estado        String    @default("pendiente")
  observacion   String?
  fecha         DateTime
  created_at    DateTime  @default(dbgenerated("(now() AT TIME ZONE 'utc')"))
  tipo          String    @default("")
  fecha_anulado DateTime?

  planilla_id   BigInt?
  planilla    Planilla? @relation(fields: [planilla_id], references: [id])

  empleado_id BigInt
  empleado    Cliente @relation(fields: [empleado_id], references: [id])

  creador_id  String  @default(uuid()) @db.Uuid
  anulador_id String? @db.Uuid
}

model Asistencia {
  id            BigInt    @id @default(autoincrement())
  created_at    DateTime  @default(dbgenerated("(now() AT TIME ZONE 'utc')"))
  updated_at    DateTime  @default(dbgenerated("(now() AT TIME ZONE 'utc')")) @updatedAt
  entrada       DateTime? @default(dbgenerated("(now() AT TIME ZONE 'utc')"))
  salida        DateTime?
  historial     Json?
  observacion   String?
  estado        String?   @default("pendiente")
  fecha_anulado DateTime?

  empleado_id BigInt
  empleado    Cliente @relation(fields: [empleado_id], references: [id])

  creador_id    String  @default(uuid()) @db.Uuid
  modificado_id String? @db.Uuid
  anulador_id   String? @db.Uuid
}
