private RentResult CalculateRental(Rent rent) { var result = new RentResult(rent); result.Vehicle = _vehicleFactory.Build(rent.VehicleType); result.TotalDays = CalculateTotalDays(rent.StartDate, rent.StopDate.Date); result.Optionals = GetOptionals(result.Vehicle, rent.Optionals).ToList(); result.OptionalsValue = result.Optionals.Sum(x => x.Rate); result.EstimateKmValue = result.Vehicle.KmRate * rent.EstimateKm; result.TotalDaysValue = result.TotalDays * result.Vehicle.DailyRate; result.TotalValue = result.TotalDaysValue + result.OptionalsValue + result.EstimateKmValue; return(result); }