public void LoadParking(Parking parking)
        {
            var            jsonFormatter = new DataContractJsonSerializer(typeof(List <Parking>));
            List <Parking> parkings      = new List <Parking>();


            using (var file = new FileStream($@"{Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}\parkings.json", FileMode.OpenOrCreate))
            {
                if (file.Length > 0)
                {
                    parkings.AddRange(jsonFormatter.ReadObject(file) as List <Parking>);
                }
                else
                {
                    Console.WriteLine("Нет доступных парковок!");
                    Console.ReadKey();
                    MainMenu menu = new MainMenu();
                    file.Close();
                    menu.Menu(parking);
                }
            }

            Console.Clear();
            Parking p = new Parking();

            Console.WriteLine("Выберите парковку для загрузки:");

            if (parkings != null)
            {
                foreach (Parking park in parkings)
                {
                    Console.WriteLine(park.Title);
                }
            }


            string parkName = Console.ReadLine();

            p = parkings.Where(x => x.Title == parkName).FirstOrDefault();
            if (p != null)
            {
                Console.WriteLine($"Парковка {p.Title} загружена");
                Console.ReadKey();
                Menu(p);
            }
            else
            {
                Console.WriteLine("Такой парковки нет!");
                LoadParking(parking);
            }
        }
        private void DeleteCar(Parking parking)
        {
            if (parking.NumberOfCars == 0)
            {
                Console.WriteLine("Все места на парковке свободны, вы не можете удалить машину.");
                Console.ReadKey();
                Menu(parking);
            }

            Console.WriteLine("Введите номер освобождаемого места");
            int  placeNumber = 0;
            bool valid       = Int32.TryParse(Console.ReadLine(), out placeNumber);

            if (valid)
            {
                ParkingPlace place = null;
                foreach (ParkingPlace parkingPlace in parking.ParkingPlaces)
                {
                    if (parkingPlace.Id == placeNumber)
                    {
                        place = parkingPlace;
                    }
                }
                if (place != null)
                {
                    if (place.CarInPlace != null)
                    {
                        place.CarInPlace = null;
                        Console.WriteLine($"Место {place.Id} освобождено");
                        Console.ReadKey();
                        Menu(parking);
                    }
                    else
                    {
                        Console.WriteLine("Это место уже свободно!");
                        DeleteCar(parking);
                    }
                }
                else
                {
                    Console.WriteLine("Такого места нет!");
                    DeleteCar(parking);
                }
            }
            else
            {
                Console.WriteLine("Вы ввели не число!");
                DeleteCar(parking);
            }
        }
        private void DisplayParkingStatus(Parking parking)
        {
            int    emptyPlaces = 0;
            int    allPlaces   = parking.ParkingPlaces.Count;
            string emp         = "";

            foreach (ParkingPlace place in parking.ParkingPlaces)
            {
                if (place.CarInPlace == null)
                {
                    emptyPlaces++;
                    emp += $"{place.Id}, ";
                }
            }

            Console.WriteLine($"На парковке сейчас {emptyPlaces} свободных мест из {allPlaces}. Это места: {emp}");
            Console.ReadKey();
            Menu(parking);
        }
Beispiel #4
0
        public void Menu(Parking parking)
        {
            Console.Clear();
            switch (Display())
            {
            case "new":
                parking.CreateNewParking(parking);
                break;

            case "load":
                parking.LoadParking(parking);
                break;

            case "exit":
                Environment.Exit(1);
                break;

            default:
                Console.Clear();
                Menu(parking);
                break;
            }
        }
        private void AddNewCar(Parking parking)
        {
            Console.WriteLine("Введите название пребывающей машины");
            string carName = Console.ReadLine();

            if (carName.Length == 0)
            {
                Console.WriteLine("Введена пустая строка!");
                AddNewCar(parking);
            }

            Console.WriteLine("Введите номер пребывающей машины");
            string carNumber = Console.ReadLine();

            if (carNumber.Length == 0)
            {
                Console.WriteLine("Введена пустая строка!");
                AddNewCar(parking);
            }

            foreach (ParkingPlace place in parking.ParkingPlaces)
            {
                if (place.CarInPlace != null)
                {
                    if (place.CarInPlace.Number == carNumber)
                    {
                        Console.WriteLine("Машина с таким номером уже находится на вашей парковке!");
                        AddNewCar(parking);
                    }
                }
            }

            Console.WriteLine("Введите номер места для этой машины");
            int  placeNumber = 0;
            bool valid       = Int32.TryParse(Console.ReadLine(), out placeNumber);

            if (valid)
            {
                ParkingPlace place = null;
                foreach (ParkingPlace parkingPlace in parking.ParkingPlaces)
                {
                    if (parkingPlace.Id == placeNumber)
                    {
                        place = parkingPlace;
                    }
                }
                if (place != null)
                {
                    if (place.CarInPlace == null)
                    {
                        place.CarInPlace = new Car(carName, carNumber);
                        parking.NumberOfCars++;
                        Console.WriteLine($"Автомобиль {carName} занял свое место - {place.Id}.");
                        Console.ReadKey();
                        Menu(parking);
                    }
                    else
                    {
                        Console.WriteLine("Место уже занято!");
                        AddNewCar(parking);
                    }
                }
                else
                {
                    Console.WriteLine("Такого места нет!");
                    AddNewCar(parking);
                }
            }
            else
            {
                Console.WriteLine("Вы ввели не число!");
                AddNewCar(parking);
            }
        }