public void Return(Bike bike, RentPoint rentPoint, bool IsBroken) { if (bike == null) { throw new ArgumentNullException(nameof(bike)); } if (rentPoint == null) { throw new ArgumentNullException(nameof(rentPoint)); } Rent rent = _rentRepository .All() .SingleOrDefault( x => x.Bike == bike && !x.IsEnded); if (rent == null) { throw new InvalidOperationException("Rent not found"); } DateTime endTime = DateTime.UtcNow; decimal sum = _rentSumCalculate.Calcilate(rent.StartedAt, endTime, rent.HourCost); rent.End(rentPoint, endTime, sum); if (IsBroken) { bike.IsBroken = true; rentPoint.CashBox.PutMoney(bike.Cost); } }
public void Return(Bike bike, RentPoint rentPoint) { if (bike == null) { throw new ArgumentNullException(nameof(bike)); } if (rentPoint == null) { throw new ArgumentNullException(nameof(rentPoint)); } Rent rent = _rentRepository .All() .SingleOrDefault( x => x.Bike == bike && !x.IsEnded); if (rent == null) { throw new InvalidOperationException("Rent not found"); } bike.Return(); rent.End(rentPoint); }
public void Return(Bike bike, RentPoint rentPoint) { if (bike == null) { throw new ArgumentNullException(nameof(bike)); } if (rentPoint == null) { throw new ArgumentNullException(nameof(rentPoint)); } Rent rent = _rentRepository .All() .SingleOrDefault( x => x.Bike == bike); if (rent == null) { throw new InvalidOperationException("Rent not found"); } decimal sum = Sum(rent, rent.StartedAt); if (bike.Crushed) { rentPoint.Cashbox.PutMoney(sum); if (rent.Deposit.Type == DepositTypes.Passport) { _depositService.ReturnDeposit(rent.Deposit, rentPoint); } _bikeService.Remove(bike); } else { _depositService.ReturnDeposit(rent.Deposit, rentPoint); rent.End(rentPoint, sum); } _rentRepository.Remove(rent); }