Exemple #1
0
        public async Task <IDataResult <decimal> > GetMoneyToPaidByRentalIdAsync(int rentalId)
        {
            var rentalResult = await _rentalService.GetByIdAsync(rentalId);

            if (!rentalResult.Success)
            {
                return(new ErrorDataResult <decimal>(0, rentalResult.Message));
            }

            int carId = rentalResult.Data.CarId;

            var carResult = await this.GetByIdAsync(carId);

            if (!carResult.Success)
            {
                return(new ErrorDataResult <decimal>(0, carResult.Message));
            }


            CarPriceCalculateModel carPriceCalculateDto = new CarPriceCalculateModel()
            {
                DailyPrice     = carResult.Data.DailyPrice,
                RentDateTime   = rentalResult.Data.RentDate,
                ReturnDateTime = rentalResult.Data.ReturnDate.Value
            };

            decimal price = CalculatePrice(carPriceCalculateDto).Data;

            return(new SuccessDataResult <decimal>(price, Messages.CarRentPriceCalculated));
        }
Exemple #2
0
        private IDataResult <decimal> CalculatePrice(CarPriceCalculateModel carPriceCalculateDto)
        {
            TimeSpan timeSpan = carPriceCalculateDto.ReturnDateTime - carPriceCalculateDto.RentDateTime;

            decimal perMinutePrice = (carPriceCalculateDto.DailyPrice / 24) / 60;

            return(new SuccessDataResult <decimal>(Math.Ceiling(Convert.ToDecimal(timeSpan.TotalMinutes) * perMinutePrice), Messages.CarRentPriceCalculated));
        }
Exemple #3
0
        public async Task <IDataResult <decimal?> > GetCalculateTotalPrice(CarPriceCalculateDto carPriceCalculateDto)
        {
            var car = await _carDal.GetNoTrackingAsync(p => p.Id == carPriceCalculateDto.CarId);

            if (car == null)
            {
                return(new ErrorDataResult <decimal?>(null, Messages.CarNotFound));
            }

            CarPriceCalculateModel carPriceCalculateModel = new CarPriceCalculateModel()
            {
                DailyPrice     = car.DailyPrice,
                RentDateTime   = carPriceCalculateDto.RentDateTime,
                ReturnDateTime = carPriceCalculateDto.ReturnDateTime
            };

            return(new SuccessDataResult <decimal?>(CalculatePrice(carPriceCalculateModel).Data, Messages.CarRentPriceCalculated));
        }