import { UserId } from "@/server/user/domain/models"; import { DeleteMaterial, DeleteProjectMaterial, Material, ProjectMaterial, UpdateProjectMaterial } from "../domain/models"; import { MaterialService } from "./material-service-definition"; import { defaultMaterialService } from "./material-service-impl"; import { ProjectMaterialDto } from "./dto"; import { v4 as uuidv4 } from 'uuid'; class MaterialServiceFacadeImpl { constructor(private materialService: MaterialService) {} getAllMaterials(): Promise { return this.materialService.getAllMaterials() } async createMaterial(data: Material, userId: UserId): Promise { try { return await this.materialService.createMaterial(data,userId) } catch (error) { console.log('error', error) throw new Error('Error creating material') } } async createProjectMaterial(dto:ProjectMaterialDto , userId: UserId): Promise { const projectMaterial:ProjectMaterial={ ...dto, id:uuidv4(), projectId:dto.projectId.value, materialId:dto.materialId.value, } return await this.materialService.createProjectMaterial(projectMaterial,userId) } async updateProjectMaterial(dto: Partial, userId: UserId): Promise> { return this.materialService.updateProjectMaterial(dto,userId) } async deleteMaterials(deleteMaterials: DeleteMaterial, userId: UserId): Promise { try { return await this.materialService.deleteMaterials(deleteMaterials,userId) } catch (error) { throw new Error('Error al eliminar material') } } async deleteProjectMaterials(data: DeleteProjectMaterial, userId: UserId): Promise { try { return await this.materialService.deleteProjectMaterials(data,userId) } catch (error) { console.log('error deleting prohect material',error) throw new Error('Error deleting project material') } } } export const materialServiceFacade=new MaterialServiceFacadeImpl(defaultMaterialService)