67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import type { CusProductStatus } from "../../models/cusProductModels/cusProductEnums.js";
|
|
import type { FullCusProduct } from "../../models/cusProductModels/cusProductModels.js";
|
|
import { nullish } from "../utils.js";
|
|
|
|
export const productToCusProduct = ({
|
|
productId,
|
|
cusProducts,
|
|
internalEntityId,
|
|
cusProductId,
|
|
version,
|
|
inStatuses,
|
|
}: {
|
|
productId: string;
|
|
cusProducts: FullCusProduct[];
|
|
internalEntityId?: string;
|
|
cusProductId?: string;
|
|
version?: number;
|
|
inStatuses?: CusProductStatus[];
|
|
}) => {
|
|
if (cusProductId) {
|
|
return cusProducts.find((cusProduct) => {
|
|
const cusProductIdMatch = cusProduct.id === cusProductId;
|
|
const versionMatch = version
|
|
? cusProduct.product.version === version
|
|
: true;
|
|
|
|
const prodIdMatch = cusProduct.product.id === productId;
|
|
|
|
const entityMatch = internalEntityId
|
|
? cusProduct.internal_entity_id === internalEntityId
|
|
: nullish(cusProduct.internal_entity_id);
|
|
|
|
// const statusMatch = inStatuses
|
|
// ? inStatuses.includes(cusProduct.status)
|
|
// : true;
|
|
|
|
// if (cusProductIdMatch) {
|
|
// console.log(`Cus Product ID Match: ${cusProductIdMatch}`);
|
|
// console.log(`Version Match: ${versionMatch}`);
|
|
// console.log(`Prod ID Match: ${prodIdMatch}`);
|
|
// console.log(`Entity Match: ${entityMatch}`);
|
|
// console.log(`--------------------------------`);
|
|
// }
|
|
|
|
return cusProductIdMatch && versionMatch && prodIdMatch && entityMatch;
|
|
});
|
|
}
|
|
|
|
return cusProducts.find((cusProduct) => {
|
|
const versionMatch = version
|
|
? cusProduct.product.version === version
|
|
: true;
|
|
|
|
const prodIdMatch = cusProduct.product.id === productId;
|
|
|
|
const entityMatch = internalEntityId
|
|
? cusProduct.internal_entity_id === internalEntityId
|
|
: nullish(cusProduct.internal_entity_id);
|
|
|
|
const statusMatch = inStatuses
|
|
? inStatuses.includes(cusProduct.status)
|
|
: true;
|
|
|
|
return prodIdMatch && entityMatch && versionMatch && statusMatch;
|
|
});
|
|
};
|