fix: amount use from request

This commit is contained in:
Kirill 2023-06-16 21:53:20 +03:00
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;