private void GetCurrentPricing(ParkingStayModel parkingStay) { PriceControlModel currentPrice = _context.PriceControlList.First(p => parkingStay.Entry.Date >= p.InitialDate.Date && parkingStay.Exit.Value.Date <= p.FinalDate.Date); if (currentPrice != null) { parkingStay.CurrentPrice = currentPrice.Price; parkingStay.CurrentAdditionalPrice = currentPrice.AdditionalPrice; } }
public IActionResult Payment(long id) { ParkingStayModel model = _context.ParkingStayList.First(m => m.Id == id); if (model == null) { return(Redirect("Index")); } GetCurrentPricing(model); return(View(model)); }
public IActionResult RegisterEntry(ParkingStayModel parkingEntry) { var parkingStay = new ParkingStayModel() { Entry = parkingEntry.Entry, VehiclePlate = parkingEntry.VehiclePlate }; _context.ParkingStayList.Add(parkingStay); _context.SaveChanges(); return(Redirect("Index")); }
public double CalculateTotalValue(ParkingStayModel parkingStay) { if (parkingStay.Duration.TotalMinutes <= 30) { return(parkingStay.CurrentPrice / 2); } else if (parkingStay.Duration.TotalMinutes > 30 && parkingStay.Duration.TotalMinutes <= 70) { return(parkingStay.CurrentPrice); } else { var hoursToCalculate = parkingStay.Duration.Minutes <= 10 ? parkingStay.Duration.TotalHours : parkingStay.Duration.TotalHours - 1; return(Math.Round(hoursToCalculate) * parkingStay.CurrentPrice); } }
public IActionResult RegisterExit(ParkingExitModel parkingExit) { ParkingStayModel parkingStay = _context.ParkingStayList.First(m => m.Id == parkingExit.Id); if (parkingStay == null) { return(Redirect("Index")); } parkingStay.Exit = parkingExit.Exit; GetCurrentPricing(parkingStay); parkingStay.TotalValue = _priceCalculator.CalculateTotalValue(parkingStay); _context.Entry(parkingStay).State = EntityState.Modified; _context.SaveChanges(); return(RedirectToAction("Payment", "Parking", new { id = parkingStay.Id })); }