Beispiel #1
0
        public void Remove(ParkedCar removedCar)
        {
            if (removedCar == null)
            {
                return;
            }

            _carsInParking.Remove(removedCar);

            var totalSecondsInParking = (DateTime.Now - removedCar.InitialParkingTime).Value.TotalSeconds;

            var paidCar = new LeavedCar()
            {
                Client = removedCar.Client,
                TotalSecondsInParking = totalSecondsInParking
            };

            if (totalSecondsInParking > AppSettings.FreePeriodInSeconds)
            {
                var amount = AppSettings.PricePerSeconds * (totalSecondsInParking - AppSettings.FreePeriodInSeconds);

                Console.WriteLine($"{removedCar.Client.FirstName}, Вы пробыли на парковке {totalSecondsInParking:f0} секунд. Ваш счёт: {amount:f2}$");

                ParkingManager.Pay(removedCar.Client, amount);
            }
            else
            {
                Console.WriteLine($"Вы успели уехать в бесплатный период. Хорошего дня, {removedCar.Client.FirstName}!");
            }

            ReportDay.LeavedCars.Add(paidCar);
        }
Beispiel #2
0
        public void Add(ParkedCar parkedCar)
        {
            _carsInParking.Add(parkedCar);
            parkedCar.Id = GetFreeID();
            parkedCar.InitialParkingTime = DateTime.Now;

            ReportDay.CarsPerDay.Add(parkedCar);
        }
        public async Task <ParkingLot> Execute(string code, string plate, DateTime date)
        {
            var parkingLot = await _parkingLotRepository.GetParkingLot(code);

            var parkedCar = new ParkedCar(code, plate, date);

            if (!parkingLot.IsOpen(parkedCar.Date))
            {
                throw new Exception("The parking lot is closed");
            }
            if (parkingLot.IsFull())
            {
                throw new Exception("The parking lot is full");
            }

            await _parkingLotRepository.SaveParkedCar(parkedCar.Code, parkedCar.Plate, parkedCar.Date);

            return(parkingLot);
        }
        private static void AddCarToParking(ParkedCar parkedCar, ParkingManager parkingManager)
        {
            if (parkingManager.GetCountFreeCarPlaces() <= 0)
            {
                Console.Clear();
                Console.WriteLine($"К сожалению, все места на парковке заняты, {parkedCar.Client.FirstName} уезжает на своей {parkedCar.Car.Make} на другую парковку");
                return;
            }

            var timerStartTimeSpan = DateTime.Now.AddSeconds(AppSettings.FreePeriodInSeconds) - DateTime.Now;
            var notify             = new TimerCallback(Notify);
            var timer = new Timer(notify, parkedCar.Client, timerStartTimeSpan, Timeout.InfiniteTimeSpan);

            parkingManager.Add(parkedCar);

            Console.Clear();

            Console.WriteLine($"На парковку заехала машина: {parkedCar}");
        }
 public void Remove(ParkedCar removedCar)
 {
     _parking.Remove(removedCar);
 }
 public void Add(ParkedCar addedCar)
 {
     _parking.Add(addedCar);
 }