import { Injectable } from '@nestjs/common'; import { PrismaService } from '../prisma/prisma.service'; import { CreatePieceDto, UpdatePieceDto } from '../shared/dto/piece.dto'; @Injectable() export class PiecesService { constructor(private prisma: PrismaService) {} async create(createPieceDto: CreatePieceDto) { return this.prisma.piece.create({ data: createPieceDto, include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, pieceModel: true, typeMachinePieceRequirement: { include: { typePiece: true, }, }, customFieldValues: { include: { customField: true, }, }, }, }); } async findAll() { return this.prisma.piece.findMany({ include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, pieceModel: true, typeMachinePieceRequirement: { include: { typePiece: true, }, }, customFieldValues: { include: { customField: true, }, }, }, }); } async findOne(id: string) { return this.prisma.piece.findUnique({ where: { id }, include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, pieceModel: true, typeMachinePieceRequirement: { include: { typePiece: true, }, }, customFieldValues: { include: { customField: true, }, }, }, }); } async findByMachine(machineId: string) { return this.prisma.piece.findMany({ where: { machineId }, include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, pieceModel: true, typeMachinePieceRequirement: { include: { typePiece: true, }, }, customFieldValues: { include: { customField: true, }, }, }, }); } async findByComposant(composantId: string) { return this.prisma.piece.findMany({ where: { composantId }, include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, pieceModel: true, typeMachinePieceRequirement: { include: { typePiece: true, }, }, customFieldValues: { include: { customField: true, }, }, }, }); } async update(id: string, updatePieceDto: UpdatePieceDto) { return this.prisma.piece.update({ where: { id }, data: updatePieceDto, include: { machine: true, composant: true, typePiece: true, documents: true, constructeur: true, }, }); } async remove(id: string) { return this.prisma.piece.delete({ where: { id }, }); } }