import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { type FindOptionsWhere, Repository } from 'typeorm'; import { AdminConfigNotFoundException } from '../../exceptions'; import { AdminConfigEntity } from './admin-config..entity'; import { type UpdateAdminConfigDto } from './dtos/update-admin-config.dto'; @Injectable() export class AdminConfigService { constructor( @InjectRepository(AdminConfigEntity) private adminConfigRepository: Repository<AdminConfigEntity>, ) {} async findOne( findData?: FindOptionsWhere<AdminConfigEntity>, ): Promise<AdminConfigEntity> { const queryBuilder = this.adminConfigRepository.createQueryBuilder('adminConfig'); if (findData) { queryBuilder.where(findData); } const returnEntity = await queryBuilder.getOne(); if (!returnEntity) { throw new AdminConfigNotFoundException(); } return returnEntity; } async updateAdminConfig( adminConfigEntity: AdminConfigEntity, dto: UpdateAdminConfigDto, ): Promise<AdminConfigEntity> { const { restDayWagesRequiredDaysInWeek, advanceRequiredDays, advanceRequiredWages, advanceAmount, advanceLastExecutionDate, } = dto; if (restDayWagesRequiredDaysInWeek !== undefined) { adminConfigEntity.restDayWagesRequiredDaysInWeek = restDayWagesRequiredDaysInWeek; } if (advanceRequiredDays !== undefined) { adminConfigEntity.advanceRequiredDays = advanceRequiredDays; } if (advanceRequiredWages !== undefined) { adminConfigEntity.advanceRequiredWages = advanceRequiredWages; } if (advanceAmount !== undefined) { adminConfigEntity.advanceAmount = advanceAmount; } if (advanceLastExecutionDate !== undefined) { adminConfigEntity.advanceLastExecutionDate = advanceLastExecutionDate; } await this.adminConfigRepository.save(adminConfigEntity); return adminConfigEntity; } }