UNPKG

@it_kyryl/arbitrage_admin_schema

Version:

Schema for arbitrage admin panel

42 lines (41 loc) 2.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const moment_timezone_1 = __importDefault(require("moment-timezone")); class ResolveFinanceProviderReportUseCase { dependency; constructor(dependency) { this.dependency = dependency; } async execute({ totalFinanceReport, providerAccounts }) { const providerBaseReports = await this.dependency.providerBaseReportRepository.getProviderBaseReportsByTotalReportIdForResolveFinanceProviderUseCase(totalFinanceReport.id); // check and create all possible provider base reports for (let providerAccount of providerAccounts) { const providerBaseReportExist = providerBaseReports.find(pbr => pbr.providerAccountId === providerAccount.id); if (!providerBaseReportExist) { const newProviderBaseReport = await this.dependency.providerBaseReportRepository.createProviderBaseReportForResolveFinanceProviderUseCase({ providerAccountId: providerAccount.id, totalFinanceReportId: totalFinanceReport.id, totalRevenue: 0, clawback: 0 }); providerBaseReports.push(newProviderBaseReport); } } // collect revenue for provider base reports and if not match - update for (let providerBaseReport of providerBaseReports) { const currentRevenue = await this.dependency.dateRevenueRepository.getTotalDateRevenueForResolveFinanceProviderUseCase({ dateFrom: (0, moment_timezone_1.default)(totalFinanceReport.dateFrom), dateTo: (0, moment_timezone_1.default)(totalFinanceReport.dateFrom), providerAccountId: providerBaseReport.providerAccountId }); if (providerBaseReport.totalRevenue !== currentRevenue) await this.dependency.providerBaseReportRepository.updateProviderBaseReport(providerBaseReport.id, { totalRevenue: currentRevenue }); } } } exports.default = ResolveFinanceProviderReportUseCase;