UNPKG

@golemio/pid

Version:
123 lines 6.32 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.VehicleDescriptorTripScopeHandler = void 0; const RouteTypeEnums_1 = require("../../../../../../helpers/RouteTypeEnums"); const VehicleDescriptorCachedRepository_1 = require("../../../../data-access/VehicleDescriptorCachedRepository"); const OgModuleToken_1 = require("../../../../ioc/OgModuleToken"); const PublicVPVehicleDescriptorTransformation_1 = require("../../../transformations/scopes/PublicVPVehicleDescriptorTransformation"); const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe"); const AbstractDetailedTripScopeHandler_1 = require("./AbstractDetailedTripScopeHandler"); let VehicleDescriptorTripScopeHandler = exports.VehicleDescriptorTripScopeHandler = class VehicleDescriptorTripScopeHandler extends AbstractDetailedTripScopeHandler_1.AbstractDetailedTripScopeHandler { constructor(vehicleDescriptorRepository) { super(); this.vehicleDescriptorRepository = vehicleDescriptorRepository; this.vehicleDescriptorTransformation = new PublicVPVehicleDescriptorTransformation_1.PublicVPVehicleDescriptorTransformation(); } async handle(output, vehiclePosition) { output.vehicle_descriptor = this.vehicleDescriptorTransformation.transformElement(vehiclePosition); const registrationNumber = vehiclePosition.detailed_info.registration_number; if (registrationNumber) { const routeType = vehiclePosition.route_type; const descriptor = await this.vehicleDescriptorRepository.getOneByRegNumber(routeType, registrationNumber); if (!descriptor) { return output; } output.vehicle_descriptor = { ...output.vehicle_descriptor, vehicle_type: this.getVehicleType(descriptor, vehiclePosition), is_air_conditioned: descriptor.is_air_conditioned, has_usb_chargers: descriptor.has_usb_chargers, }; } return output; } getVehicleType(descriptor, vehiclePosition) { const date = new Date(); // getMonth() returns 0-based index, unlike getDate() if (date.getDate() === 1 && date.getMonth() === 3) { return this.getAprilVehicleType(descriptor, vehiclePosition); } return `${descriptor.manufacturer} ${descriptor.type}`; } getAprilVehicleType(descriptor, vehiclePosition) { switch (vehiclePosition.route_type) { case RouteTypeEnums_1.GTFSRouteTypeEnum.TRAM: switch (descriptor.type) { case "T3R.P": case "T3R.PLF": case "T3R.PV": case "T3M.2": return "Mašinka Tomáš"; case "KT8D5.RN2P": return "Orient Express"; case "14T": return "Polární expres"; case "15T1": case "15T2": case "15T3": case "15T4": case "15T5": case "15T6": case "15T7": return "Snowpiercer"; default: return "Trainy McTrainface"; } case RouteTypeEnums_1.GTFSRouteTypeEnum.METRO: case RouteTypeEnums_1.GTFSRouteTypeEnum.TRAIN: return "Trainy McTrainface"; case RouteTypeEnums_1.GTFSRouteTypeEnum.BUS: switch (descriptor.manufacturer) { case "Iveco": return "Batmobile"; case "SOR": return "Ectomobile"; case "Setra": return "KITT"; case "Otokar": return "Formule"; case "Irisbus": return "DeLorean time machine"; case "Scania": return "Mr. Slowly"; case "MAN": return "Tatra T815 aka The War Rig"; case "Solaris": return "Citroën DS Fantomas"; case "ROŠERO - P": return "The Mystery Machine"; default: return "Bussy McBusface"; } case RouteTypeEnums_1.GTFSRouteTypeEnum.FERRY: return "RMS Titanic"; case RouteTypeEnums_1.GTFSRouteTypeEnum.TROLLEYBUS: switch (descriptor.manufacturer) { case "Škoda-Solaris": return "Lightning McQueen"; default: return "Bussy McBusface"; } default: return `${descriptor.manufacturer} ${descriptor.type}`; } } }; exports.VehicleDescriptorTripScopeHandler = VehicleDescriptorTripScopeHandler = __decorate([ (0, tsyringe_1.injectable)(), __param(0, (0, tsyringe_1.inject)(OgModuleToken_1.OgModuleToken.VehicleDescriptorCachedRepository)), __metadata("design:paramtypes", [VehicleDescriptorCachedRepository_1.VehicleDescriptorCachedRepository]) ], VehicleDescriptorTripScopeHandler); //# sourceMappingURL=VehicleDescriptorTripScopeHandler.js.map