UNPKG

@golemio/parkings

Version:
102 lines 5.74 kB
"use strict"; 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"); 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 { isRestrictedToOpenData, allowedSources } = await this.getAllowedScope(req); return { primarySource: allowedSources, validFrom: req.query.validFrom ? req.query.validFrom : undefined, openFrom: req.query.openingHoursValidFrom ? req.query.openingHoursValidFrom : undefined, openTo: req.query.openingHoursValidTo ? req.query.openingHoursValidTo : undefined, boundingBox: req.query.boundingBox ? req.query.boundingBox.split(",").map((x) => parseFloat(x)) : undefined, limit: req.query.limit ? parseInt(req.query.limit) : 1000, offset: req.query.offset ? parseInt(req.query.offset) : undefined, accessDedicatedTo: req.query.accessDedicatedTo ? req.query.accessDedicatedTo instanceof Array ? req.query.accessDedicatedTo : [req.query.accessDedicatedTo] : undefined, minutesBefore: req.query.minutesBefore ? parseInt(req.query.minutesBefore) : undefined, updatedSince: req.query.updatedSince ? req.query.updatedSince : undefined, isRestrictedToOpenData: isRestrictedToOpenData, parkingPolicy: req.query.parkingPolicy ? req.query.parkingPolicy instanceof Array ? req.query.parkingPolicy : [req.query.parkingPolicy] : undefined, activeOnly: req.query.activeOnly !== "false", }; } catch (err) { throw new golemio_errors_1.GeneralError("Param parsing error", "V3ParkingController", err, 500); } } } exports.V3ParkingController = V3ParkingController; //# sourceMappingURL=V3ParkingController.js.map