42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { Injectable, NotFoundException } from '@nestjs/common';
|
|
import { CreateComplaintDto } from './dto/create-complaint.dto';
|
|
import { UpdateComplaintDto } from './dto/update-complaint.dto';
|
|
import { ComplaintRepository } from './repositories/complaint.repository';
|
|
import { Complaint } from './entities/complaint.entity';
|
|
import { ComplaintMessages } from 'src/common/enums/messages.enum';
|
|
|
|
@Injectable()
|
|
export class ComplaintService {
|
|
constructor(private readonly complaintRepository: ComplaintRepository) {}
|
|
|
|
async create(createComplaintDto: CreateComplaintDto): Promise<Complaint> {
|
|
const complaint = this.complaintRepository.create(createComplaintDto);
|
|
await this.complaintRepository.save(complaint);
|
|
return complaint;
|
|
}
|
|
|
|
async findAll(): Promise<Complaint[]> {
|
|
return this.complaintRepository.find();
|
|
}
|
|
|
|
async findOneOrFail(id: string): Promise<Complaint> {
|
|
const complaint = await this.complaintRepository.findOne({ where: { id } });
|
|
if (!complaint)
|
|
throw new NotFoundException(ComplaintMessages.COMPLAINT_NOT_FOUND);
|
|
|
|
return complaint;
|
|
}
|
|
|
|
async update(id: string, updateComplaintDto: UpdateComplaintDto): Promise<Complaint> {
|
|
const complaint = await this.findOneOrFail(id);
|
|
Object.assign(complaint, updateComplaintDto);
|
|
return this.complaintRepository.save(complaint);
|
|
}
|
|
|
|
async remove(id: string): Promise<Complaint> {
|
|
const complaint = await this.findOneOrFail(id);
|
|
await this.complaintRepository.remove(complaint);
|
|
return complaint;
|
|
}
|
|
}
|