public static void EditFlight(IFlight[] flights) { Console.Clear(); Printer.PrintAllFlights(flights); int i; bool isParse = false; FlightType typeFlight = new FlightType(); FlightStatus flightStatusInput = new FlightStatus(); int flightNumberInput = 0; string portCityTitleInput = ""; byte terminalNumberInput = 0; string readLine = ""; DateTime dt = new DateTime(); if (flights[0] == null) { Console.WriteLine("Nope flights! Adding new flights."); } else { Console.WriteLine("Enter flight index to editing (column 'ID' in table.)"); //TEST HERNIA PROVERKA isParse = int.TryParse(Console.ReadLine(), out i); if (!isParse | i > 3) // change validation data { Console.WriteLine("Invalid input, try again"); } else if (isParse && i > flights.Length - 1 && i < 0) { Console.WriteLine("This element does not exist. Please input index >= 0 and < {0}", flights.Length); } else { Console.WriteLine("Your selected element: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("| {0, -3}{1}", i.ToString(), flights[i].ToString()); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(); Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("If you do not choose anything, nothing would change. Press Enter to skip or move forward."); Console.ResetColor(); bool isCheck = true; //Edit Flight type while (isCheck) { Console.WriteLine($"{"Enter flight type. Notice: 1 - Arrival, 2 - Departure",-30}"); readLine = Console.ReadLine(); if (!string.Empty.Equals(readLine)) { isParse = FlightType.TryParse(readLine, true, out typeFlight); if (!isParse || (int)typeFlight >= 3) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input. Try again. Notice: 1 - Arrival, 2 - Departure"); Console.ResetColor(); continue; } } else { typeFlight = flights[i].TypeFlight; } break; } // Edit Flight number while (isCheck) { Console.Write($"{"Enter flight number",-30}"); // input flight number > 0 readLine = Console.ReadLine(); if (!string.Empty.Equals(readLine)) { isParse = int.TryParse(readLine, out flightNumberInput); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input, try again"); Console.ResetColor(); continue; } else if (isParse && flightNumberInput <= 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input, please input flight number more than 0"); Console.ResetColor(); continue; } else if (Searcher.SearchByFlightNumber(flights, flightNumberInput) != null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("This flight number already exists. Please input other flight number."); Console.ResetColor(); continue; } } else { flightNumberInput = flights[i].FlightNumber; } break; } // Edit City while (isCheck) { Console.Write($"{"Input port or city title",-30}"); portCityTitleInput = Console.ReadLine(); if (string.Empty.Equals(portCityTitleInput)) { portCityTitleInput = flights[i].PortCityTitle; break; } else if (Regex.IsMatch(portCityTitleInput, @"[^\d]+$")) { break; } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input. Only letters are avaible."); Console.ResetColor(); continue; } } //Edit terminal number while (isCheck) { Console.Write($"{"Input terminal number",-30}"); readLine = Console.ReadLine(); if (!string.Empty.Equals(readLine)) { isParse = byte.TryParse(readLine, out terminalNumberInput); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input, try again. Available range from 1 to 254"); Console.ResetColor(); continue; } else if (isParse && terminalNumberInput <= 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input, please input terminal number > 0"); Console.ResetColor(); continue; } else if (isParse && terminalNumberInput >= 255) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input, please input terminal number < 255"); Console.ResetColor(); continue; } } else { terminalNumberInput = flights[i].TerminalNumber; } break; } // Edit flight status while (isCheck) { Console.Write($"{"Input flight status:",-30}"); Console.WriteLine(@" CheckIn - 0, GateClosed - 1, Arrived - 2, DepartedAt - 3, Unknown - 4, Canceled - 5, ExpectedAt - 6, Delayed - 7, InFlight - 8"); readLine = Console.ReadLine(); if (Console.ReadKey().Key == ConsoleKey.Enter) { break; } if (!string.Empty.Equals(readLine)) { isParse = FlightStatus.TryParse(readLine, true, out flightStatusInput); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input, try again"); Console.ResetColor(); continue; } else if (isParse && (byte)flightStatusInput > 8) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Note: available indexes to enter are from 0 to 8. Try again."); Console.ResetColor(); continue; } else { flightStatusInput = flights[i].StatusFlight; } break; } } //Edit date while (isCheck) { Console.Write($"{"Enter the date please (e.g. 27.08.1990) and time (format: 00:00:00)",-30}"); readLine = Console.ReadLine(); isParse = DateTime.TryParse(readLine, out dt); if (!string.Empty.Equals(readLine)) { if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input, try again"); Console.ResetColor(); continue; } } else { dt = flights[i].FlightDT; } break; } flights[i].TypeFlight = typeFlight; flights[i].FlightNumber = flightNumberInput; flights[i].FlightDT = dt; flights[i].PortCityTitle = portCityTitleInput; flights[i].TerminalNumber = terminalNumberInput; flights[i].StatusFlight = flightStatusInput; Console.WriteLine("Updating..."); Console.WriteLine("Your item has been modified\\saved"); Printer.PrintAllFlights(flights); } } }
public static void AddFlight(IFlight[] flights) { FlightType typeFlight = new FlightType(); int flightNumberInput = 0; string portCityTitleInput = ""; byte terminalNumberInput = 0; FlightStatus flightStatusInput = new FlightStatus(); DateTime dt = new DateTime(); bool isParse = false; if (flights[flights.Length - 1] != null) { Console.WriteLine("Sorry, there are no free seats! Please, delete flight element."); } else { Console.WriteLine("Enter new element..."); bool isCheck = true; //Flight Type input while (isCheck) { Console.WriteLine($"{"Enter flight type. 1 - Arrival, 2 - Departure",-30}"); isParse = FlightType.TryParse(Console.ReadLine(), true, out typeFlight); if ((int)typeFlight >= 3 || !isParse || (int)typeFlight == 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input! Notice: 1 - Arrival, 2 - Departure"); Console.ResetColor(); continue; } break; } Console.WriteLine(); //Flight Number input while (isCheck) { Console.Write($"{"Enter flight number",-30}"); isParse = int.TryParse(Console.ReadLine(), out flightNumberInput); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input. Try again. Number is only available."); Console.ResetColor(); continue; } else if (isParse && flightNumberInput <= 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input, please enter flight number more than 0"); Console.ResetColor(); continue; } else if (Searcher.SearchByFlightNumber(flights, flightNumberInput) != null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("This flight number is already exists. Please enter another flight number."); Console.ResetColor(); continue; } break; } // City input while (isCheck) { Console.Write($"{"Enter port or city name",-30}"); portCityTitleInput = Console.ReadLine(); if (Regex.IsMatch(portCityTitleInput, @"[^\d]+$")) //_ detected { break; } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input. Only letters are avaible."); Console.ResetColor(); continue; } } //Terminal number input while (isCheck) { Console.Write($"{"Enter terminal number",-30}"); isParse = byte.TryParse(Console.ReadLine(), out terminalNumberInput); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input. Try again. Only numbers (1 - 255) are avaible."); Console.ResetColor(); continue; } else if (isParse && terminalNumberInput <= 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Incorrect input, please enter terminal number more than 0"); Console.ResetColor(); continue; } else if (isParse && terminalNumberInput > 255) { Console.WriteLine("Incorrect input, please input terminal number < 255"); continue; } break; } //Flight Status input while (isCheck) { Console.Write($"{"Enter flight status",-30}"); Console.WriteLine(@" CheckIn - 0, GateClosed - 1, Arrived - 2, DepartedAt - 3, Unknown - 4, Canceled - 5, ExpectedAt - 6, Delayed - 7, InFlight - 8"); isParse = FlightStatus.TryParse(Console.ReadLine(), true, out flightStatusInput); if (!isParse) { Console.WriteLine("Invalid input, try again"); continue; } else if (isParse && (byte)flightStatusInput > 8) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Note: available indexes to enter are from 0 to 8. Try again."); Console.ResetColor(); continue; } break; } //DateTime input while (isCheck) { Console.WriteLine($"{"Enter the date please (e.g. 27.08.1990) and time (format: 00:00:00)",-30}"); isParse = DateTime.TryParse(Console.ReadLine(), out dt); if (!isParse) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid input, try again"); Console.ResetColor(); continue; } break; } // Add entered element for (int i = 0; i < flights.Length; i++) { if (flights[i] == null) { flights[i] = new Flight { TypeFlight = typeFlight, FlightNumber = flightNumberInput, FlightDT = dt, PortCityTitle = portCityTitleInput, TerminalNumber = terminalNumberInput, StatusFlight = flightStatusInput, }; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Congratilations! Your element has been added"); Console.ResetColor(); break; } } } Console.WriteLine("Updating..."); Printer.PrintAllFlights(flights); }