import { Prisma } from '@prisma/client';
import { prisma } from '../db/prisma';

export type UtilisateurAvecRole = Prisma.UtilisateurGetPayload<{ include: { role: true } }>;

export type UtilisateurProfil = Prisma.UtilisateurGetPayload<{
  include: { role: true; campus: true };
}>;

export function findByEmail(email: string): Promise<UtilisateurAvecRole | null> {
  return prisma.utilisateur.findUnique({
    where: { email },
    include: { role: true },
  });
}

export function findById(id: number): Promise<UtilisateurProfil | null> {
  return prisma.utilisateur.findUnique({
    where: { id },
    include: { role: true, campus: true },
  });
}

export function findResponsablesParCampus(campusId: number): Promise<{ id: number }[]> {
  return prisma.utilisateur.findMany({
    where: { campusId, actif: true, role: { code: 'RESPONSABLE' } },
    select: { id: true },
  });
}
