From 4534bff74e44cc61b433da8238f51d920c123c61 Mon Sep 17 00:00:00 2001 From: Xziy Date: Sat, 4 May 2024 07:48:20 +0300 Subject: [PATCH] use someInArray --- .../promotion/default/configuredPromotion.ts | 18 +++++++++--------- libs/stringsInArray.d.ts | 2 +- libs/stringsInArray.js | 19 +++---------------- libs/stringsInArray.ts | 8 ++++++++ models/Promotion.js | 5 +---- models/Promotion.ts | 14 +++++--------- test/generators/discount.generator.ts | 12 ++++++------ test/mocks/adapter/discount.ts | 8 ++++---- 8 files changed, 37 insertions(+), 49 deletions(-) diff --git a/adapters/promotion/default/configuredPromotion.ts b/adapters/promotion/default/configuredPromotion.ts index 9c28c012..c15c750b 100644 --- a/adapters/promotion/default/configuredPromotion.ts +++ b/adapters/promotion/default/configuredPromotion.ts @@ -8,7 +8,7 @@ import Order, { PromotionState } from '../../../models/Order'; import User from '../../../models/User'; import findModelInstanceByAttributes from "../../../libs/findModelInstance"; import Decimal from "decimal.js"; -import { stringsInArray } from "../../../libs/stringsInArray"; +import { someInArray, someInArray } from "../../../libs/someInArray"; export default class ConfiguredPromotion extends AbstractPromotionHandler { public badge: string = 'configured-promotion'; @@ -48,7 +48,7 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler { public condition(arg: Group | Dish | Order): boolean { if (findModelInstanceByAttributes(arg) === "Order" && (this.concept[0] === undefined || this.concept[0] === "") - ? true : stringsInArray(arg.concept, this.concept)) { + ? true : someInArray(arg.concept, this.concept)) { let order: Order = arg as Order // TODO: if order.dishes type number[] let orderDishes: OrderDish[] = order.dishes as OrderDish[] @@ -62,13 +62,13 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler { } if (findModelInstanceByAttributes(arg) === "Dish" && (this.concept[0] === undefined || this.concept[0] === "") ? true : - stringsInArray(arg.concept, this.concept)) { - return stringsInArray(arg.id, this.config.dishes) + someInArray(arg.concept, this.concept)) { + return someInArray(arg.id, this.config.dishes) } if (findModelInstanceByAttributes(arg) === "Group" && (this.concept[0] === undefined || this.concept[0] === "") ? true : - stringsInArray(arg.concept, this.concept)) { - return stringsInArray(arg.id, this.config.groups) + someInArray(arg.concept, this.concept)) { + return someInArray(arg.id, this.config.groups) } return false @@ -139,12 +139,12 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler { } if ((this.concept[0] === undefined || this.concept[0] === "") ? - false : !stringsInArray(orderDish.dish.concept, this.concept)) { + false : !someInArray(orderDish.dish.concept, this.concept)) { continue; } - let checkDishes = stringsInArray(orderDish.dish.id, this.config.dishes) - let checkGroups = stringsInArray(orderDish.dish.parentGroup, this.config.groups) + let checkDishes = someInArray(orderDish.dish.id, this.config.dishes) + let checkGroups = someInArray(orderDish.dish.parentGroup, this.config.groups) if (!checkDishes || !checkGroups) continue diff --git a/libs/stringsInArray.d.ts b/libs/stringsInArray.d.ts index ae178a25..58b50ff6 100644 --- a/libs/stringsInArray.d.ts +++ b/libs/stringsInArray.d.ts @@ -1 +1 @@ -export declare function stringsInArray(check: string[] | string, array: string[]): boolean; +export declare function someInArray(check: string[] | string, array: string[]): boolean; diff --git a/libs/stringsInArray.js b/libs/stringsInArray.js index c9aaf406..08a18d64 100644 --- a/libs/stringsInArray.js +++ b/libs/stringsInArray.js @@ -2,22 +2,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.stringsInArray = void 0; function stringsInArray(check, array) { - // If check is an array of strings - if (Array.isArray(check)) { - // Check each string in the check array - for (const str of check) { - // If any of the strings is not present in the array array, return false - if (!array.includes(str)) { - return false; - } - } - // If all strings in the check array are present in the array array, return true - return true; - } - // If check is a string - else { - // Check if the check string is present in the array array - return array.includes(check); + if (typeof check === 'string') { + check = [check]; } + return array.some((e) => check.includes(e)); } exports.stringsInArray = stringsInArray; diff --git a/libs/stringsInArray.ts b/libs/stringsInArray.ts index 6f1076e9..963594ac 100644 --- a/libs/stringsInArray.ts +++ b/libs/stringsInArray.ts @@ -17,3 +17,11 @@ export function stringsInArray(check: string[] | string, array: string[]): boole return array.includes(check); } } + +export function someInArray(check: string[] | string, array: string[]) { + if (typeof check === 'string') { + check = [check]; + } + + return array.some((e)=> check.includes(e)); +} \ No newline at end of file diff --git a/models/Promotion.js b/models/Promotion.js index f65f85c4..7d4176e4 100644 --- a/models/Promotion.js +++ b/models/Promotion.js @@ -159,11 +159,8 @@ let Model = { getAllByConcept(concept) { if (typeof concept === "string") concept = [concept]; - // if (concept.length < 1) { - // sails.log.warn(`Promotion > getAllByConcept : [concept] array is unstable feature`, concept) - // } const promotionAdapter = adapters_1.Adapter.getPromotionAdapter(); - if (!concept) + if (!concept.length) throw "concept is required"; let activePromotionIds = promotionAdapter.getActivePromotionsIds(); if (concept[0] === "") { diff --git a/models/Promotion.ts b/models/Promotion.ts index d37a7af7..06d0bce4 100644 --- a/models/Promotion.ts +++ b/models/Promotion.ts @@ -5,7 +5,7 @@ import { OptionalAll, RequiredField } from "../interfaces/toolsTS"; import hashCode from "../libs/hashCode"; import { Adapter } from "../adapters"; import { IconfigDiscount } from "../interfaces/ConfigDiscount"; -import { stringsInArray } from "../libs/stringsInArray"; +import { someInArray } from "../libs/someInArray"; import PromotionCode from "../models/PromotionCode"; import { v4 as uuid } from "uuid"; @@ -217,24 +217,20 @@ let Model = { getAllByConcept(concept: string[]): Promotion[] { if(typeof concept === "string") concept = [concept]; - // if (concept.length < 1) { - // sails.log.warn(`Promotion > getAllByConcept : [concept] array is unstable feature`, concept) - // } - const promotionAdapter = Adapter.getPromotionAdapter() - if (!concept) throw "concept is required"; + if (!concept.length) throw "concept is required"; let activePromotionIds = promotionAdapter.getActivePromotionsIds() if(concept[0] === ""){ let filteredRAM = promotionRAM.filter(promotion => (promotion.concept[0] === undefined || promotion.concept[0] === "") - && stringsInArray(promotion.id,activePromotionIds)) + && someInArray(promotion.id,activePromotionIds)) return filteredRAM; } let filteredRAM = promotionRAM.filter(promotion => - stringsInArray(promotion.concept,concept) || (promotion.concept[0] === undefined || promotion.concept[0] === "") - && stringsInArray(promotion.id,activePromotionIds)) + someInArray(promotion.concept,concept) || (promotion.concept[0] === undefined || promotion.concept[0] === "") + && someInArray(promotion.id,activePromotionIds)) if (!filteredRAM) throw "Promotion with concept: " + concept + " not found"; diff --git a/test/generators/discount.generator.ts b/test/generators/discount.generator.ts index 88fa684f..8225e76d 100644 --- a/test/generators/discount.generator.ts +++ b/test/generators/discount.generator.ts @@ -7,7 +7,7 @@ import { PromotionAdapter } from "../../adapters/promotion/default/promotionAdap import findModelInstanceByAttributes from "../../libs/findModelInstance"; import AbstractPromotionHandler from "../../adapters/promotion/AbstractPromotion"; import ConfiguredPromotion from "../../adapters/promotion/default/configuredPromotion"; -import { stringsInArray } from "../../libs/stringsInArray"; +import { someInArray } from "../../libs/someInArray"; import Decimal from "decimal.js"; var autoincrement: number = 0; @@ -51,7 +51,7 @@ export default function discountGenerator(config: Omit