"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.ParkingController = void 0; const common_1 = require("@nestjs/common"); const swagger_1 = require("@nestjs/swagger"); const throttler_1 = require("@nestjs/throttler"); const parking_service_1 = require("./parking.service"); const find_nearby_parking_dto_1 = require("./dto/find-nearby-parking.dto"); const update_availability_dto_1 = require("./dto/update-availability.dto"); const parking_lot_entity_1 = require("./entities/parking-lot.entity"); const parking_update_entity_1 = require("./entities/parking-update.entity"); let ParkingController = class ParkingController { constructor(parkingService) { this.parkingService = parkingService; } async findNearbyParking(dto) { return this.parkingService.findNearbyParking(dto); } async getAllParkingLots() { return this.parkingService.getAllParkingLots(); } async getPopularParkingLots(limit) { return this.parkingService.getPopularParkingLots(limit); } async getParkingLotById(id) { return this.parkingService.findById(id); } async updateAvailability(id, dto) { return this.parkingService.updateAvailability(id, dto); } async getParkingLotHistory(id, limit) { return this.parkingService.getParkingLotHistory(id, limit); } }; exports.ParkingController = ParkingController; __decorate([ (0, common_1.Post)('nearby'), (0, swagger_1.ApiOperation)({ summary: 'Find nearby parking lots', description: 'Search for parking lots within a specified radius of the given coordinates' }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully found nearby parking lots', type: parking_lot_entity_1.ParkingLot, isArray: true, }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.BAD_REQUEST, description: 'Invalid coordinates or parameters', }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.INTERNAL_SERVER_ERROR, description: 'Failed to search for parking lots', }), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [find_nearby_parking_dto_1.FindNearbyParkingDto]), __metadata("design:returntype", Promise) ], ParkingController.prototype, "findNearbyParking", null); __decorate([ (0, common_1.Get)(), (0, swagger_1.ApiOperation)({ summary: 'Get all parking lots', description: 'Retrieve all active parking lots in the system' }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully retrieved parking lots', type: parking_lot_entity_1.ParkingLot, isArray: true, }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], ParkingController.prototype, "getAllParkingLots", null); __decorate([ (0, common_1.Get)('popular'), (0, swagger_1.ApiOperation)({ summary: 'Get popular parking lots', description: 'Retrieve the most frequently visited parking lots' }), (0, swagger_1.ApiQuery)({ name: 'limit', required: false, description: 'Maximum number of results', example: 10 }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully retrieved popular parking lots', type: parking_lot_entity_1.ParkingLot, isArray: true, }), __param(0, (0, common_1.Query)('limit')), __metadata("design:type", Function), __metadata("design:paramtypes", [Number]), __metadata("design:returntype", Promise) ], ParkingController.prototype, "getPopularParkingLots", null); __decorate([ (0, common_1.Get)(':id'), (0, swagger_1.ApiOperation)({ summary: 'Get parking lot details', description: 'Retrieve detailed information about a specific parking lot' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Parking lot ID', example: 1 }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully retrieved parking lot details', type: parking_lot_entity_1.ParkingLot, }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.NOT_FOUND, description: 'Parking lot not found', }), __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)), __metadata("design:type", Function), __metadata("design:paramtypes", [Number]), __metadata("design:returntype", Promise) ], ParkingController.prototype, "getParkingLotById", null); __decorate([ (0, common_1.Put)(':id/availability'), (0, swagger_1.ApiBearerAuth)(), (0, swagger_1.ApiOperation)({ summary: 'Update parking availability', description: 'Update the number of available slots for a parking lot' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Parking lot ID', example: 1 }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully updated parking availability', type: parking_lot_entity_1.ParkingLot, }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.NOT_FOUND, description: 'Parking lot not found', }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.BAD_REQUEST, description: 'Invalid availability data', }), __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, update_availability_dto_1.UpdateParkingAvailabilityDto]), __metadata("design:returntype", Promise) ], ParkingController.prototype, "updateAvailability", null); __decorate([ (0, common_1.Get)(':id/history'), (0, swagger_1.ApiOperation)({ summary: 'Get parking lot update history', description: 'Retrieve the update history for a specific parking lot' }), (0, swagger_1.ApiParam)({ name: 'id', description: 'Parking lot ID', example: 1 }), (0, swagger_1.ApiQuery)({ name: 'limit', required: false, description: 'Maximum number of history records', example: 100 }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Successfully retrieved parking lot history', type: parking_update_entity_1.ParkingUpdate, isArray: true, }), (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.NOT_FOUND, description: 'Parking lot not found', }), __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)), __param(1, (0, common_1.Query)('limit')), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, Number]), __metadata("design:returntype", Promise) ], ParkingController.prototype, "getParkingLotHistory", null); exports.ParkingController = ParkingController = __decorate([ (0, swagger_1.ApiTags)('Parking'), (0, common_1.Controller)('parking'), (0, common_1.UseGuards)(throttler_1.ThrottlerGuard), __metadata("design:paramtypes", [parking_service_1.ParkingService]) ], ParkingController); //# sourceMappingURL=parking.controller.js.map