Esempio n. 1
0
        public async Task <IActionResult> Park2Async(ParkRequest parkRequest)
        {
            try
            {
                List <ParkingAvailablity> parkingAvailablities = await _ooParkingLotRepository.GetParkingAvailablitiesByCarCategoryIdAsync(parkRequest.CarCategoryId);

                Guid[] parkingCategoryIds = parkingAvailablities.Select(s => s.ParkingCategoryId).Distinct().ToArray();

                List <ParkingSpace> parkingSpaces = await _ooParkingLotRepository.GetAllParkingSpacesByParkingCategoryIdsAsync(parkingCategoryIds);

                Guid[] parkingSpaceIds = parkingSpaces.Select(s => s.Id).Distinct().ToArray();

                List <ParkingDistance> parkingDistance = await _ooParkingLotRepository.GetDistanceByEntryIdAndSpaceIdsAsync(parkRequest.EntryPointId, parkingSpaceIds);

                List <ParkingCategory> parkingCategories = await _ooParkingLotRepository.GetAllParkingCategoriesAsync();

                object res = (from pa in parkingAvailablities
                              join ps in parkingSpaces on pa.ParkingCategoryId equals ps.ParkingCategoryId
                              join pc in parkingCategories on ps.ParkingCategoryId equals pc.Id
                              join pd in parkingDistance on ps.Id equals pd.ParkingSpaceId
                              orderby pa.Priority, pd.DistanceInMeters
                              select new
                {
                    pd.ParkingSpaceId,
                    pd.DistanceInMeters,
                    ParkingSpaceCode = ps.Code,
                    ParkingCategoryCode = pc.Code,
                    ParkingCategoryDescription = pc.Description,
                    pc.HourlyRate
                }).FirstOrDefault();


                return(Ok(res));
            }
            catch (Exception ex)
            {
                _logger.LogError(JsonConvert.SerializeObject(ex));
                return(BadRequest());
            }
        }