All files / libs/payout-calculation/compute-engine/core-engine/src/engine/handlers schedulePaymentRelease.handler.ts

69.69% Statements 23/33
33.33% Branches 1/3
50% Functions 1/2
69.69% Lines 23/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 341x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 16x 16x 16x 1x 1x                     1x  
import { Injectable } from '@nestjs/common';
 
import {
  MessageTasks,
  MessageType,
  QueueService,
  type PaymentReleasePayload,
  type TaskHandler,
} from '@amalia/kernel/queue/core';
import { CompaniesService } from '@amalia/tenants/companies/core';
 
/**
 * This event is called by the scheduler to generate one payment release message per active company.
 */
@Injectable()
export class SchedulePaymentReleaseHandler implements TaskHandler<PaymentReleasePayload> {
  public constructor(
    private readonly companiesService: CompaniesService,
    private readonly queueService: QueueService,
  ) {}
 
  public async handle() {
    const companies = await this.companiesService.getActiveCompanies();

    await Promise.all(
      companies.map((c) =>
        this.queueService.sendToQueue({ type: MessageType.TASK, taskIdentifier: MessageTasks.RELEASE_PAYMENTS }, {
          companyId: c.id,
        } as PaymentReleasePayload),
      ),
    );
  }
}