public IEnumerable <Car> Execute() { if ((prorespectiveCar.climateControl == null) && prorespectiveCar.engineType == null && prorespectiveCar.mark == null && prorespectiveCar.model == null && prorespectiveCar.power == null && prorespectiveCar.salonType == null && prorespectiveCar.transmissionType == null && prorespectiveCar.typeOfBody == null && prorespectiveCar.volume == null) { throw new ArgumentOutOfRangeException(); } List <Car> addedList = new List <Car>(); foreach (Car nextCar in carShowroom.stock) { ProspectiveCar addInList = new ProspectiveCar(); addInList.mark = nextCar.GetType().Name; addInList.model = nextCar.model; addInList.power = nextCar.power; addInList.salonType = nextCar.salonType; addInList.transmissionType = nextCar.transmissionType; addInList.typeOfBody = nextCar.typeOfBody; addInList.volume = nextCar.volume; addInList.engineType = nextCar.engineType; addInList.climateControl = nextCar.climateControl; addedList.Add(addInList); } addedList.Add(prorespectiveCar); File.WriteAllText(carShowroom.wayToStock, JsonConvert.SerializeObject(addedList)); carShowroom.ReadJsonFile(); IEnumerable <Car> updatedInformationInFile = from nextCar in carShowroom.stock select nextCar; return(updatedInformationInFile); }
public SimilarOptionsInStock(CarShowroom carShowroomSet, ProspectiveCar prorespectiveCarSet) { carShowroom = carShowroomSet; prorespectiveCar = prorespectiveCarSet; }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.DarkGreen; try { CarShowroom salon = new CarShowroom(args[0], args[1]); salon.ReadJsonFile(); bool escapeCondition = true; Invoker newInvoker = new Invoker(); ProspectiveCar wantedCar = new ProspectiveCar(); while (escapeCondition) { Console.WriteLine("Select an action (enter the action number in the console) :\n1) Enter the desired characteristics for car search \n2)Check stock for cars with similar characteristics \n3)Check catalog for cars with similar characteristics \n4)Select and add a Car from variants that satisfy the condition \n5)View information from the catalog and stock \nTo exit, enter 'exit'"); string stringKey = Console.ReadLine(); switch (stringKey) { case "1": wantedCar.EnteringTheDesiredCharacteristics(); break; case "2": try { newInvoker.SetCommand(new SimilarOptionsInStock(salon, wantedCar)); foreach (Car next in newInvoker.Execute()) { next.OutInformationAboutCar(); } } catch (ArgumentOutOfRangeException) { Console.WriteLine("Unfortunately at the moment there are no machines in the stock that satisfy the entered characteristics. You can check the catalog for a match or see all possible options in the catalog"); } break; case "3": try { newInvoker.SetCommand(new SimilarOptionsInCatalog(salon, wantedCar)); foreach (Car next in newInvoker.Execute()) { next.OutInformationAboutCar(); } } catch (ArgumentOutOfRangeException) { Console.WriteLine("Unfortunately there are no machines in your catalog that meet your requirements."); } break; case "4": try { newInvoker.SetCommand(new SimilarOptionsInCatalog(salon, wantedCar)); List <Car> similarCars = new List <Car>(newInvoker.Execute()); ProspectiveCar selectCar = new ProspectiveCar(); Console.WriteLine("Cars matching your request:"); for (int i = 0; i < similarCars.Count; i++) { Console.WriteLine(i + 1 + ":"); similarCars[i].OutInformationAboutCar(); } Console.WriteLine("Choose which model you want to order (add to stock) and enter her number"); bool selectionСondition = true; while (selectionСondition) { int numberOfCar = int.Parse(Console.ReadLine()); if (numberOfCar < similarCars.Count || numberOfCar > similarCars.Count) { Console.WriteLine("You entered an invalid number"); } else { selectionСondition = false; selectCar.mark = similarCars[numberOfCar - 1].GetType().Name; selectCar.climateControl = similarCars[numberOfCar - 1].climateControl; selectCar.engineType = similarCars[numberOfCar - 1].engineType; selectCar.model = similarCars[numberOfCar - 1].model; selectCar.power = similarCars[numberOfCar - 1].power; selectCar.salonType = similarCars[numberOfCar - 1].salonType; selectCar.transmissionType = similarCars[numberOfCar - 1].transmissionType; selectCar.typeOfBody = similarCars[numberOfCar - 1].typeOfBody; selectCar.volume = similarCars[numberOfCar - 1].volume; } } newInvoker.SetCommand(new AddingItemToFile(salon, selectCar)); Console.WriteLine("The selected car was added to the stock"); foreach (Car next in newInvoker.Execute()) { next.OutInformationAboutCar(); } } catch (ArgumentOutOfRangeException) { Console.WriteLine("Unfortunately there are no machines in your catalog that meet your requirements."); } break; case "5": salon.OutputInformation(); break; case "exit": escapeCondition = false; break; } } } catch (NotImplementedException) { Console.WriteLine("The file has incorrectly written data"); } }
public AddingItemToFile(CarShowroom carShowroomSet, ProspectiveCar prorespectiveCarSet) { carShowroom = carShowroomSet; prorespectiveCar = prorespectiveCarSet; }