Skip to content

Commit

Permalink
use someInArray
Browse files Browse the repository at this point in the history
  • Loading branch information
Xziy committed May 4, 2024
1 parent 873a107 commit 4534bff
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 49 deletions.
18 changes: 9 additions & 9 deletions adapters/promotion/default/configuredPromotion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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[]
Expand All @@ -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
Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion libs/stringsInArray.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export declare function stringsInArray(check: string[] | string, array: string[]): boolean;
export declare function someInArray(check: string[] | string, array: string[]): boolean;
19 changes: 3 additions & 16 deletions libs/stringsInArray.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
8 changes: 8 additions & 0 deletions libs/stringsInArray.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
5 changes: 1 addition & 4 deletions models/Promotion.js
Original file line number Diff line number Diff line change
Expand Up @@ -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] === "") {
Expand Down
14 changes: 5 additions & 9 deletions models/Promotion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down Expand Up @@ -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";

Expand Down
12 changes: 6 additions & 6 deletions test/generators/discount.generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -51,7 +51,7 @@ export default function discountGenerator(config: Omit<AbstractPromotionHandler,
},
// productCategoryDiscounts: undefined,
condition: function (arg: Group | Dish | Order): boolean {
if (findModelInstanceByAttributes(arg) === "Order" && stringsInArray(arg.concept, this.concept)) {
if (findModelInstanceByAttributes(arg) === "Order" && someInArray(arg.concept, this.concept)) {
let order:Order = arg as Order
// TODO: if order.dishes type number[]

Expand All @@ -65,15 +65,15 @@ export default function discountGenerator(config: Omit<AbstractPromotionHandler,
return false;
}

if (findModelInstanceByAttributes(arg) === "Dish" && stringsInArray(arg.concept, this.concept)) {
return stringsInArray(arg.id, this.configDiscount.dishes)
if (findModelInstanceByAttributes(arg) === "Dish" && someInArray(arg.concept, this.concept)) {
return someInArray(arg.id, this.configDiscount.dishes)
// if(this.config.dishes.includes(arg.id)){
// return true;
// }
}

if (findModelInstanceByAttributes(arg) === "Group" && stringsInArray(arg.concept, this.concept)) {
return stringsInArray(arg.id, this.configDiscount.groups)
if (findModelInstanceByAttributes(arg) === "Group" && someInArray(arg.concept, this.concept)) {
return someInArray(arg.id, this.configDiscount.groups)
// if(this.config.groups.includes(arg.id)){
// return true;
// }
Expand Down
8 changes: 4 additions & 4 deletions test/mocks/adapter/discount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { IconfigDiscount } from './../../../interfaces/ConfigDiscount';
import Group from './../../../models/Group';
import Dish from './../../../models/Dish';
import findModelInstanceByAttributes from "../../../libs/findModelInstance";
import { stringsInArray } from "../../../libs/stringsInArray";
import { someInArray } from "../../../libs/someInArray";
import configuredPromotion from "../../../adapters/promotion/default/configuredPromotion";
import ConfiguredPromotion from "../../../adapters/promotion/default/configuredPromotion";
import Decimal from "decimal.js";
Expand Down Expand Up @@ -33,7 +33,7 @@ export class InMemoryDiscountAdapter extends AbstractPromotionHandler {

public condition(arg: Group | Dish | Order): boolean {
// this.concept.includes(arg.concept)
if (findModelInstanceByAttributes(arg) === "Order" && stringsInArray(arg.concept, this.concept) ) {
if (findModelInstanceByAttributes(arg) === "Order" && someInArray(arg.concept, this.concept) ) {
// order not used for configuredPromotion
// Order.populate()
// TODO: check if includes groups and dishes
Expand All @@ -43,13 +43,13 @@ export class InMemoryDiscountAdapter extends AbstractPromotionHandler {
return true;
}

if (findModelInstanceByAttributes(arg) === "Dish" && stringsInArray(arg.concept, this.concept)) {
if (findModelInstanceByAttributes(arg) === "Dish" && someInArray(arg.concept, this.concept)) {
if(this.configDiscount.dishes.includes(arg.id)){
return true;
}
}

if (findModelInstanceByAttributes(arg) === "Group" && stringsInArray(arg.concept, this.concept)) {
if (findModelInstanceByAttributes(arg) === "Group" && someInArray(arg.concept, this.concept)) {
if(this.configDiscount.groups.includes(arg.id)){
return true;
}
Expand Down

0 comments on commit 4534bff

Please sign in to comment.