aps-data-api
Version:
package for data extraction from APS company for omnimetic project
130 lines (129 loc) • 6.19 kB
JavaScript
"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;