@golemio/parkings
Version:
Golemio Parkings Module
104 lines • 5.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.V3ParkingController = void 0;
const Di_1 = require("../../ioc/Di");
const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
const ParkingDtoTransformation_1 = require("../../transformations/v3/ParkingDtoTransformation");
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
const AbstractV3ParkingController_1 = require("./AbstractV3ParkingController");
const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
class V3ParkingController extends AbstractV3ParkingController_1.AbstractV3ParkingController {
constructor() {
super();
this.getAll = async (req, res, next) => {
try {
const params = await this.parseParams(req);
const paymentsConfig = await this.cachedParkingSourcesRepository.getParkingPaymentsConfig({
isRestrictedToOpenData: params.isRestrictedToOpenData,
});
const transformation = new ParkingDtoTransformation_1.ParkingDtoTransformation(paymentsConfig, this.logger);
const result = params.primarySource?.length === 1
? await this.parkingRepository.GetAll(params)
: await this.parkingsFilteredRepository.GetAll(params);
const transformedResult = transformation.transformToFeatureCollection(result);
res.json(transformedResult);
}
catch (err) {
next(err);
}
};
this.getOne = async (req, res, next) => {
try {
const { isRestrictedToOpenData, allowedSources } = await this.getAllowedScope(req);
const id = req.params.id;
const result = await this.parkingRepository.GetOne(id, allowedSources);
if (result === null) {
throw new golemio_errors_1.GeneralError("not_found", "V3ParkingController", undefined, 404);
}
const paymentsConfig = await this.cachedParkingSourcesRepository.getParkingPaymentsConfig({ isRestrictedToOpenData });
const transformation = new ParkingDtoTransformation_1.ParkingDtoTransformation(paymentsConfig, this.logger);
const transformedResult = transformation.transformElement(result);
res.json(transformedResult);
}
catch (err) {
next(err);
}
};
this.getAverageOccupancy = async (req, res, next) => {
try {
const { allowedSources } = await this.getAllowedScope(req);
const id = req.params.id;
const result = await this.averageOccupancyRepository.GetOccupancy(id, allowedSources);
if (!result) {
throw new golemio_errors_1.GeneralError("not_found", this.constructor.name, undefined, 404);
}
const transformation = new ParkingDtoTransformation_1.ParkingDtoTransformation({}, this.logger);
return res.json(transformation.transformAverageOccupancyArray(result));
}
catch (err) {
next(err);
}
};
this.parkingRepository = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingRepository);
this.parkingsFilteredRepository = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingsFilteredRepository);
this.averageOccupancyRepository = Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.ParkingAverageOccupancyRepository);
this.logger = Di_1.ParkingsContainer.resolve(CoreToken_1.CoreToken.Logger);
}
async parseParams(req) {
try {
const queryData = (0, express_validator_1.matchedData)(req);
const { isRestrictedToOpenData, allowedSources } = await this.getAllowedScope(req);
return {
primarySource: allowedSources,
validFrom: queryData.validFrom ? queryData.validFrom : undefined,
openFrom: queryData.openingHoursValidFrom ? queryData.openingHoursValidFrom : undefined,
openTo: queryData.openingHoursValidTo ? queryData.openingHoursValidTo : undefined,
boundingBox: queryData.boundingBox
? queryData.boundingBox.split(",").map((x) => parseFloat(x))
: undefined,
limit: queryData.limit ? parseInt(queryData.limit) : 1000,
offset: queryData.offset ? parseInt(queryData.offset) : undefined,
accessDedicatedTo: queryData.accessDedicatedTo
? queryData.accessDedicatedTo instanceof Array
? queryData.accessDedicatedTo
: [queryData.accessDedicatedTo]
: undefined,
minutesBefore: queryData.minutesBefore ? parseInt(queryData.minutesBefore) : undefined,
updatedSince: queryData.updatedSince ? queryData.updatedSince : undefined,
isRestrictedToOpenData: isRestrictedToOpenData,
parkingPolicy: queryData.parkingPolicy
? queryData.parkingPolicy instanceof Array
? queryData.parkingPolicy
: [queryData.parkingPolicy]
: undefined,
activeOnly: queryData.activeOnly !== "false",
};
}
catch (err) {
throw new golemio_errors_1.GeneralError("Param parsing error", "V3ParkingController", err, 500);
}
}
}
exports.V3ParkingController = V3ParkingController;
//# sourceMappingURL=V3ParkingController.js.map