public Response <VehicleRentalPriceCalculationResultDTO> Calculate(RentVehicleDTO rentVehicle) { var validationResponse = Validate(rentVehicle); if (validationResponse.IsSuccess == false) { return(validationResponse); } var checkVehicleAvailability = CheckVehicleAvailability(rentVehicle.VehicleId, rentVehicle.DeliveryDate.Value, rentVehicle.ReturnDate.Value); if (checkVehicleAvailability.IsSuccess == false) { return(checkVehicleAvailability); } int days = rentVehicle.ReturnDate.Value.Subtract(rentVehicle.DeliveryDate.Value).Days; var prices = VehicleRentalPriceService.Get(new VehicleRentalPriceFilter(rentVehicle.VehicleId, rentVehicle.DeliveryDate.Value)); if (days < 30) {//Günlük return(CalculateDaily(days, prices)); } else if (days < 180) {//Aylık return(CalculateMonthly(days, prices)); } else {//6 Aylık return(Calculate6Monthly(days, prices)); } }
public IActionResult Detail(int id) { SetVehicleDetailToViewBag(id); RentVehicleDTO model = new RentVehicleDTO(); model.VehicleId = id; return(View(model)); }
private Response <VehicleRentalPriceCalculationResultDTO> Validate(RentVehicleDTO rentVehicle) { if (rentVehicle.DeliveryDate.HasValue == false || rentVehicle.ReturnDate.HasValue == false) { return(Response <VehicleRentalPriceCalculationResultDTO> .Fail("Lütfen tarihleri kontrol ediniz")); } if (rentVehicle.DeliveryDate.Value > rentVehicle.ReturnDate.Value) { return(Response <VehicleRentalPriceCalculationResultDTO> .Fail("İade tarihini alış tarihinden ileri bir tarih olarak seçiniz")); } if (rentVehicle.DeliveryDate.Value.Date <= DateTime.Today) { return(Response <VehicleRentalPriceCalculationResultDTO> .Fail("Lütfen alış tarihini en erken yarın olarak seçiniz")); } return(Response <VehicleRentalPriceCalculationResultDTO> .Success()); }
public IActionResult Calculate(RentVehicleDTO model) { var calculationResponse = VehicleRentalPriceCalculatorService.Calculate(model); if (calculationResponse.IsSuccess == false) { ViewBag.Response = Domain.DTOs.Response.Fail(calculationResponse.Message); } else { model.Amount = calculationResponse.Data.Amount; model.VehicleRentalPriceId = calculationResponse.Data.VehicleRentalPriceId; model.NumberOfDays = calculationResponse.Data.NumberOfDays; } SetVehicleDetailToViewBag(model.VehicleId); return(View("Detail", model)); }
public IActionResult Rent(RentVehicleDTO model) { RentVehicle rentVehicle = new RentVehicle { Amount = model.Amount.Value, CreatedDate = DateTime.Now, DeliveryDate = model.DeliveryDate.Value, NumberOfDays = model.NumberOfDays, ReturnDate = model.ReturnDate.Value, VehicleId = model.VehicleId, VehicleRentalPriceId = model.VehicleRentalPriceId, UserId = HttpContext.User.GetUserId() }; var rentResponse = RentVehicleService.Add(rentVehicle); ViewBag.Response = rentResponse; SetVehicleDetailToViewBag(model.VehicleId); return(View("Detail", model)); }