示例#1
0
        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);
        }
示例#3
0
        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);
        }