Пример #1
0
        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));
            }
        }
Пример #2
0
        public IActionResult Detail(int id)
        {
            SetVehicleDetailToViewBag(id);

            RentVehicleDTO model = new RentVehicleDTO();

            model.VehicleId = id;
            return(View(model));
        }
Пример #3
0
 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());
 }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }