UNPKG

@golemio/parkings

Version:
104 lines 5.9 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"); 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