UNPKG

aps-data-api

Version:

package for data extraction from APS company for omnimetic project

130 lines (129 loc) 6.19 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.APSUtilityDataService = void 0; const aps_1 = require("../workflow/aps"); const helpers_1 = require("../../helpers"); class APSUtilityDataService { getServiceAccounts(payload) { return __awaiter(this, void 0, void 0, function* () { try { this.logger.info('[APS] Get service accounts function start'); const apsWorkflow = new aps_1.APSWorkflow(); apsWorkflow.logger = this.logger; yield apsWorkflow.login(payload, this.tunnelingAgentOptions); const utilityUserAccountResponse = yield apsWorkflow.getServiceAccounts(); this.logger.info('[APS] Get service accounts function end'); return utilityUserAccountResponse; } catch (err) { this.logger.error(`[APS] Get service accounts function error: ${err.message}`); return Promise.reject(err); } }); } getMonthlyUtilityData(payload) { return __awaiter(this, void 0, void 0, function* () { try { this.logger.info('[APS] Get monthly utility data function start'); const apsWorkflow = new aps_1.APSWorkflow(); apsWorkflow.logger = this.logger; yield apsWorkflow.login(payload, this.tunnelingAgentOptions); const monthlyUtilityDataList = yield apsWorkflow.getMonthlyUtilityData(); this.logger.info('[APS] Get monthly utility data function end'); return monthlyUtilityDataList; } catch (err) { this.logger.error(`[APS] Get monthly utility data function error: ${err.message}`); return Promise.reject(err); } }); } getHourlyUtilityData(payload, beginDate, endDate) { return __awaiter(this, void 0, void 0, function* () { try { this.logger.info('[APS] Get hourly utility data function start'); let hourlyUtilityData = []; let dateDifference = 0; if (beginDate && endDate) { dateDifference = helpers_1.DateHelper.diffInDays(beginDate, endDate); while (dateDifference > 0) { const res = yield this.getHourlyData(payload, endDate, beginDate); hourlyUtilityData = hourlyUtilityData.concat(res.batchResponse); if (res.nextBatchDate === null) break; dateDifference = helpers_1.DateHelper.diffInDays(beginDate, res.nextBatchDate); } } else { let startDate = new Date(); while (startDate !== null) { const res = yield this.getHourlyData(payload, startDate); hourlyUtilityData = hourlyUtilityData.concat(res.batchResponse); startDate = res.nextBatchDate; } } this.logger.info('[APS] Get hourly utility data function end'); return hourlyUtilityData; } catch (err) { this.logger.error(`[APS] Get hourly utility data function error: ${err.message}`); return Promise.reject(err); } }); } getHourlyData(payload, nextDate, finishDate) { return __awaiter(this, void 0, void 0, function* () { try { const apsWorkflow = new aps_1.APSWorkflow(); apsWorkflow.logger = this.logger; yield apsWorkflow.login(payload, this.tunnelingAgentOptions); const headerAndBody = yield apsWorkflow.getReqHeaderAndBody(); const headers = headerAndBody.headers; const postBody = headerAndBody.requestBody; const res = yield apsWorkflow.makeBatchRequest(headers, postBody, nextDate, finishDate); return res; } catch (err) { this.logger.error(`[APS] Get hourly utility data function error: ${err.message}`); return Promise.reject(err); } }); } getUtilityBills(payload, serviceAccountId, upload) { return __awaiter(this, void 0, void 0, function* () { try { this.logger.info('[APS] Get utility bills function start'); const apsWorkflow = new aps_1.APSWorkflow(); apsWorkflow.logger = this.logger; yield apsWorkflow.login(payload, this.tunnelingAgentOptions); yield apsWorkflow.getUtilityBillPDFs(serviceAccountId, upload); this.logger.info('[APS] Get utility bills function end'); } catch (err) { this.logger.error(`[APS] Get utility bills function error: ${err.message}`); return Promise.reject(err); } }); } setTunnelingAgent(tunnelingAgentOptions) { return __awaiter(this, void 0, void 0, function* () { try { this.tunnelingAgentOptions = tunnelingAgentOptions; return; } catch (err) { return Promise.reject(err); } }); } } exports.APSUtilityDataService = APSUtilityDataService;