Socket
Book a DemoInstallSign in
Socket

@kvytech/medusa-plugin-promotion

Package Overview
Dependencies
Maintainers
3
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kvytech/medusa-plugin-promotion

Install npm package with `yarn add medusa-plugin-promotion` or `npm i medusa-plugin-promotion`

latest
Source
npmnpm
Version
0.0.1
Version published
Maintainers
3
Created
Source

Installation

Install npm package with yarn add medusa-plugin-promotion or npm i medusa-plugin-promotion

Peer dependencies are @medusajs/medusa medusa-interfaces typeorm

Application apply

In folder src/subscribers create file promotions-handler.ts to subscribe event CREATED,UPDATED, of cart

Step 1

Add InjectionDepen interface

// src/subscribers/promotions-handler.ts

interface InjectionDepen {
  //...
  // Add more
  eventBusService: EventBusService
  promotionService: PromotionService
  cartService: CartService
  orderService: OrderService
  cartRepository: typeof CartRepository
  manager: EntityManager
}

Step 2

Create class PromotionHandler and add property


class PromotionsHandler extends TransactionBaseService {
  protected manager_: EntityManager
  protected transactionManager_: EntityManager

  cartService: CartService
  eventBusService: EventBusService
  promotionService: PromotionService
  orderService: OrderService
  cartRepository: typeof CartRepository

  constructor({
    manager,
    eventBusService,
    promotionService,
    cartService,
    orderService,
    cartRepository,
  }: InjectionDepen) {
    super(arguments[0])

    this.cartService = cartService
    this.eventBusService = eventBusService
    this.promotionService = promotionService
    this.orderService = orderService
    this.cartRepository = cartRepository
    this.manager_ = manager

    eventBusService.subscribe(CartService.Events.CREATED, async (data: Cart) => {
      //Add logic handle apply promotion here
      //You can call property of promotion service and use it here
      //Example like :  await this.promotionService.applyPromotions(cart, listPromotionAuto)

    })

    eventBusService.subscribe(CartService.Events.UPDATED, async (data: Cart) => {
      //Add logic handle apply promotion here
      //You can call property of promotion service and use it here
      //Example like :  await this.promotionService.applyPromotions(cart, listPromotionAuto)

    })
  }

}

export default PromotionsHandler

Promotion method


export class PromotionService extends TransactionBaseService {

  //Create promotion
  async create(data: PromotionCreateValidator) {}

  //Update promotion
  async update(data: PromotionUpdateValidator) {}

  //Delete promotion
  async delete(data: PromotionDeleteValidator) {}

  //add action of promotion
  async addAction(data: AddPromotionActionValidator) {}

  //update action of promotion
  async updateAction(data: UpdatePromotionActionValidator) {}

  //delete action of promotion
  async deleteAction(data: DeletePromotionActionValidator) {}

  //add condition of promotion
  async addCondition(data: DeletePromotionActionValidator) {}

  //update condition of promotion
  async updateCondition(data: UpdatePromotionConditionValidator) {}

  //delete condition of promotion
  async deleteCondition(data: DeletePromotionConditionValidator) {}

  //set resource promotion condition
  async setResource(data: SetPromotionConditionResource) {}

  //resolve resource promotion condition
  async resolveResource(resourceName: string, resourceId: string) {}

  //retrieve promotion
  async retrieve(id: string, relations: string[] = []) {}

  //get list promotion of cart 
  async listPromotionForCart(cart: Cart) {}

  //get list promotion
  async list(query: ListPromotionQuery | ListPromotionQuery[]) {}

  //Validate usage limit condition
  hasReachedLimit(promotion: Promotion): boolean {}

  //Validate start time of promotion
  hasNotStarted(promotion: Promotion): boolean {}

  //Validate expired of promotion
  hasExpired(promotion: Promotion): boolean {}

  //Validate region condition of promotion
  async isValidForRegion(promotion: Promotion, region_id: string): Promise<boolean> {}

  //Validate promotion is enable or disable
  isDisabled(promotion: Promotion): boolean {}

  //Validate promotion with setting condition
  async isValidForCard(cart: Cart, promotion: Promotion): Promise<boolean> {}

  //Remove all adjustment created by promotion of cart
  async resetAdjustmentOfPromotionUsed(cart: Cart) {}

  //Apply promotion for cart
  async applyPromotions(cart: Cart, promotions: Promotion[]) {}

}

Keywords

medusa-plugin

FAQs

Package last updated on 15 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts