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)); }
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)); }
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)); }