fix: bug in update sub plan
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import dayjs from "dayjs";
|
||||
import { DataSource, In } from "typeorm";
|
||||
import Decimal from "decimal.js";
|
||||
import { DataSource, In, Not } from "typeorm";
|
||||
|
||||
import { ServiceMessage, SubscriptionMessage } from "../../../common/enums/message.enum";
|
||||
import { DanakServicesService } from "../../danak-services/providers/danak-services.service";
|
||||
@@ -99,25 +100,33 @@ export class SubscriptionsService {
|
||||
}
|
||||
//************************************ */
|
||||
async updateSubscriptionPlan(id: string, updateDto: UpdateSubscriptionPlanDto) {
|
||||
// Find the existing subscription plan
|
||||
const subscription = await this.subscriptionsPlanRepository.findOne({ where: { id }, relations: { service: true } });
|
||||
if (!subscription) throw new BadRequestException(SubscriptionMessage.NOT_FOUND);
|
||||
|
||||
// Check if service exists when trying to update it
|
||||
if (updateDto.serviceId) {
|
||||
const danakService = await this.danakServices.findServiceById(updateDto.serviceId);
|
||||
if (!danakService) throw new BadRequestException(ServiceMessage.SERVICE_NOT_FOUND_BY_ID);
|
||||
subscription.service = danakService;
|
||||
}
|
||||
|
||||
const subscription = await this.subscriptionsPlanRepository.findOneBy({ id });
|
||||
if (!subscription) throw new BadRequestException(SubscriptionMessage.NOT_FOUND);
|
||||
|
||||
// Check for name uniqueness if updating name
|
||||
if (updateDto.name) {
|
||||
const existSubscription = await this.subscriptionsPlanRepository.findOneByName(updateDto.name, id);
|
||||
const existSubscription = await this.subscriptionsPlanRepository.findOneBy({
|
||||
name: updateDto.name,
|
||||
id: Not(id),
|
||||
service: { id: subscription.service.id },
|
||||
});
|
||||
if (existSubscription) throw new BadRequestException(SubscriptionMessage.NAME_EXIST);
|
||||
subscription.name = updateDto.name;
|
||||
}
|
||||
|
||||
await this.subscriptionsPlanRepository.update(id, updateDto);
|
||||
await this.subscriptionsPlanRepository.save({
|
||||
...subscription,
|
||||
...updateDto,
|
||||
service: updateDto.serviceId ? { id: updateDto.serviceId } : subscription.service,
|
||||
});
|
||||
if (updateDto.duration) subscription.duration = updateDto.duration;
|
||||
if (updateDto.price) subscription.price = new Decimal(updateDto.price);
|
||||
|
||||
await this.subscriptionsPlanRepository.save(subscription);
|
||||
|
||||
return {
|
||||
message: SubscriptionMessage.UPDATED,
|
||||
subscription,
|
||||
|
||||
Reference in New Issue
Block a user