fix: amount use from request
This commit is contained in:
parent
b6cac94a61
commit
87f253bbb9
@ -1,13 +1,16 @@
|
||||
import { Types } from "mongoose";
|
||||
|
||||
import { TariffModel } from "@/models/tariff.model";
|
||||
import { PrivilegeModel } from "@/models/privilege.model";
|
||||
|
||||
import { validateEmptyFields } from "@/utils/validate-empty-fields";
|
||||
import { determinePaginationParameters } from "@/utils/determine-pagination-parameters";
|
||||
import { validateTariff } from "./helpers";
|
||||
|
||||
import type { FastifyReply } from "fastify";
|
||||
import type { Privilege } from "@/types/models/privilege.type";
|
||||
import type { Tariff } from "@/types/models/tariff.type";
|
||||
import type { Eloquent } from "@/types/models/eloquent.type";
|
||||
import type {
|
||||
CreateTariffRequest,
|
||||
GetTariffRequest,
|
||||
@ -68,11 +71,30 @@ export const createTariff = async (request: CreateTariffRequest, reply: FastifyR
|
||||
}
|
||||
}
|
||||
|
||||
const privilegiesMap = new Map(requestBody.privilegies.map((privilege) => [privilege.privilegeId, privilege]));
|
||||
const privilegeIDs = requestBody.privilegies.map(({ privilegeId }) => privilegeId);
|
||||
const privilegies = await PrivilegeModel.find({ privilegeId: privilegeIDs }).lean();
|
||||
|
||||
const cleanPrivilegies = privilegies.map<Omit<Privilege, keyof Eloquent>>((privilege) => {
|
||||
const currentPrivilege = privilegiesMap.get(privilege.privilegeId);
|
||||
|
||||
return {
|
||||
name: privilege.name,
|
||||
privilegeId: privilege.privilegeId,
|
||||
serviceKey: privilege.serviceKey,
|
||||
description: privilege.description,
|
||||
amount: currentPrivilege?.amount ?? 0,
|
||||
type: privilege.type,
|
||||
value: privilege.value,
|
||||
price: privilege.price,
|
||||
};
|
||||
});
|
||||
|
||||
const newTariff = new TariffModel({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
privilegies: cleanPrivilegies,
|
||||
});
|
||||
|
||||
await newTariff.save();
|
||||
@ -107,11 +129,30 @@ export const replaceTariff = async (request: ReplaceTariffRequest, reply: Fastif
|
||||
}
|
||||
}
|
||||
|
||||
const privilegiesMap = new Map(requestBody.privilegies.map((privilege) => [privilege.privilegeId, privilege]));
|
||||
const privilegeIDs = requestBody.privilegies.map(({ privilegeId }) => privilegeId);
|
||||
const privilegies = await PrivilegeModel.find({ privilegeId: privilegeIDs }).lean();
|
||||
|
||||
const cleanPrivilegies = privilegies.map<Omit<Privilege, keyof Eloquent>>((privilege) => {
|
||||
const currentPrivilege = privilegiesMap.get(privilege.privilegeId);
|
||||
|
||||
return {
|
||||
name: privilege.name,
|
||||
privilegeId: privilege.privilegeId,
|
||||
serviceKey: privilege.serviceKey,
|
||||
description: privilege.description,
|
||||
amount: currentPrivilege?.amount ?? 0,
|
||||
type: privilege.type,
|
||||
value: privilege.value,
|
||||
price: privilege.price,
|
||||
};
|
||||
});
|
||||
|
||||
await tariff.replaceOne({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
privilegies: cleanPrivilegies,
|
||||
});
|
||||
|
||||
return tariff;
|
||||
|
Loading…
Reference in New Issue
Block a user