Files
dsc-api/src/modules/task-manager/providers/check-list-item.service.ts
T

54 lines
2.0 KiB
TypeScript

import { Injectable, NotFoundException } from '@nestjs/common';
import { CheckListItemRepository } from '../repositories/check-list-item.repository';
import { TMCheckListItem } from '../entities/check-list-item.entity';
import { CreateCheckListItemDto } from '../dto/check-list-item/create-check-list-item.dto';
import { UpdateCheckListItemDto } from '../dto/check-list-item/update-check-list-item.dto';
import { checkListItemMessage } from '../../../common/enums/message.enum';
import { TaskService } from './task.service';
@Injectable()
export class CheckListItemService {
constructor(
private readonly checkListItemRepository: CheckListItemRepository,
private readonly taskService: TaskService,
) {}
async findOneOrFail(id: string): Promise<TMCheckListItem> {
const checkListItem = await this.checkListItemRepository.findOneById(id);
if (!checkListItem) throw new NotFoundException(checkListItemMessage.CHECKLISTITEM_NOT_FOUND);
return checkListItem;
}
async create(dto: CreateCheckListItemDto): Promise<TMCheckListItem> {
await this.taskService.findOneOrFail(dto.taskId);
const checkListItem = this.checkListItemRepository.create(dto);
return this.checkListItemRepository.save(checkListItem);
}
async update(id: string, dto: UpdateCheckListItemDto): Promise<TMCheckListItem> {
const checkListItem = await this.findOneOrFail(id);
if (dto.taskId) {
await this.taskService.findOneOrFail(dto.taskId);
}
Object.assign(checkListItem, dto);
return this.checkListItemRepository.save(checkListItem);
}
async remove(id: string): Promise<TMCheckListItem> {
const checkListItem = await this.findOneOrFail(id);
await this.checkListItemRepository.delete(id);
return checkListItem;
}
async toggleStatus(id: string) : Promise<TMCheckListItem> {
const checkListItem = await this.findOneOrFail(id);
const isDone = checkListItem.isDone;
checkListItem.isDone = !isDone;
await this.checkListItemRepository.save(checkListItem);
return checkListItem;
}
}