import {
  findDisponiblesParCampus,
  findDetailParCampus,
  CatalogueFiltres,
  MaterielDetail,
  MaterielAvecCategorie,
} from '../repositories/materiel.repository';
import { AppError } from '../errors/app-error';

/* RG10 : après identification, seuls les matériels disponibles du campus de
   l'étudiant sont affichés. */
export function listerCatalogue(
  campusId: number,
  filtres: CatalogueFiltres,
): Promise<MaterielAvecCategorie[]> {
  return findDisponiblesParCampus(campusId, filtres);
}

export async function obtenirDetailMateriel(id: number, campusId: number): Promise<MaterielDetail> {
  const materiel = await findDetailParCampus(id, campusId);
  if (!materiel) {
    throw new AppError(404, 'Materiel introuvable');
  }
  return materiel;
}
