public async Task <IActionResult> PutLikes([FromRoute] int id, [FromBody] ParkRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != request.Id) { return(BadRequest()); } var oldPark = await _dataContext.Parks.Include(p => p.Manager) .Include(p => p.Zones) .Include(p => p.Contents) .Include(p => p.Locations) .FirstOrDefaultAsync(c => c.Id == request.Id); if (oldPark == null) { return(BadRequest("El Parque No Existe.")); } oldPark.Like = request.like; oldPark.DisLike = request.dislike; _dataContext.Parks.Update(oldPark); await _dataContext.SaveChangesAsync(); return(Ok(true)); }
public async Task <IActionResult> ParkAsync(ParkRequest parkRequest) { try { return(Ok(await _ooParkingLotRepository.GetNearestAvailableParkingAsync(parkRequest))); } catch (Exception ex) { _logger.LogError(JsonConvert.SerializeObject(ex)); return(BadRequest()); } }
public ParkResponse ParkVehicle(int securityID, ParkRequest parkDetails) { if (parkDetails != null) { var responseData = _parkingRepository.ParkVehicle(securityID, parkDetails); return(responseData); } else { return(null); } }
public IActionResult GetCost([FromBody] ParkRequest parkRequest) { if (!ModelState.IsValid) { return(BadRequest()); } if ((parkRequest.ExitDate - parkRequest.EntryDate).Value.TotalMinutes < 0) { return(BadRequest("Entry date time cannot be less than exit date time!")); } var costDetails = _costService.CalculateCost(parkRequest); return(Ok(costDetails)); }
public ParkResponse ParkVehicle(int securityID, ParkRequest parkDetails) { try { var securityExists = _appDBContext.Users. Any(security => security.ID == securityID); if (securityExists) { ParkingDetails parkData = new ParkingDetails { OwnerName = parkDetails.OwnerName, VehicleNumber = parkDetails.VehicleNumber, VehicleBrand = parkDetails.VehicleBrand, Color = parkDetails.Color, IsParked = true, AttendantName = parkDetails.AttendantName, Disability = parkDetails.Disability, ParkingDate = DateTime.Now }; if (parkDetails.Disability) { parkingSlot = GetParkingSlotForHandicap(); } else { parkingSlot = GetParkingSlot(); } if (parkingSlot == null) { return(null); } parkData.ParkingSlot = parkingSlot; _appDBContext.ParkingDetails.Add(parkData); _appDBContext.SaveChanges(); ParkResponse responseData = ParkedVehicleResponse(parkData); return(responseData); } return(null); } catch (Exception ex) { throw new Exception(ex.Message); } }
public IActionResult Park([FromBody] ParkRequest request) { Parking parking = new Parking(); parking.car.car_number = request.car_number; ServiceResponse response = unitOfWork.ParkingRepository.ParkCar(parking); _logger.LogInformation("Request received for Car Parking"); if (response.isSuccessful) { return(Ok(response)); } else { return(BadRequest(response)); } }
public async Task <object> GetNearestAvailableParkingAsync(ParkRequest parkRequest) { return(await(from pa in _ooParkingLotDbContext.ParkingAvailablities where pa.CarCategoryId == parkRequest.CarCategoryId join ps in _ooParkingLotDbContext.ParkingSpaces on pa.ParkingCategoryId equals ps.ParkingCategoryId where ps.IsOccupied == false join pd in _ooParkingLotDbContext.ParkingDistances on ps.Id equals pd.ParkingSpaceId where pd.EntryPointId == parkRequest.EntryPointId join pc in _ooParkingLotDbContext.ParkingCategories on ps.ParkingCategoryId equals pc.Id orderby pa.Priority, pd.DistanceInMeters select new { pd.ParkingSpaceId, pd.DistanceInMeters, ParkingSpaceCode = ps.Code, ParkingCategoryCode = pc.Code, ParkingCategoryDescription = pc.Description, pc.HourlyRate }).FirstOrDefaultAsync()); }
public async Task <object> RequestAsync(ParkRequest parkRequest) { try { var httpClientHelperRequest = new HttpClientHelperRequest { Url = "https://localhost:44358/api/Parking/Request", HttpMethod = "POST", Content = JsonConvert.SerializeObject(parkRequest) }; httpClientHelperRequest.Headers.Add("accept", "*/*"); httpClientHelperRequest.Headers.Add("Content-Type", "application/json"); return(await _httpClientHelper.SendAsync(httpClientHelperRequest)); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest()); } }
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()); } }
/// <summary> /// Calculate the parking cost /// </summary> /// <param name="parkRequest">Request represent the parking lot (type) and parking duration</param> /// <returns></returns> public CostDetails CalculateCost(ParkRequest parkRequest) { var costCalculator = CalculatorFactory.Get <ICostCalc>(parkRequest.ParkType.ToString()); if (costCalculator == null) { return(null); } var totalMinutes = (parkRequest.ExitDate - parkRequest.EntryDate).Value.TotalMinutes; var totalCost = costCalculator.CalculateCost(totalMinutes); var duration = TimeSpan.FromMinutes(totalMinutes); return(new CostDetails { Cost = decimal.Round(totalCost, 2), Days = duration.Days, Hours = duration.Hours, Minutes = duration.Minutes }); }