static void Main(string[] args) { var app = new BashApplication(); app.AddCommand("crimes", (arguments) => { if (arguments.Length == 0) { PrintHelp(); return; } if (arguments[0] == "all") { foreach (var crime in CrimeRepository.GetAll()) { Console.WriteLine(crime.ToString()); if (crime != CrimeRepository.GetAll().Last()) { Console.WriteLine(); } } return; } if (arguments[0] == "add") { var crime = new Crime(); Console.Write("Place: "); crime.Place = Console.ReadLine(); Console.Write("Effects: "); crime.Effects = Console.ReadLine(); Console.Write("Comments: "); crime.Comments = Console.ReadLine(); CrimeRepository.Add(crime); CrimeRepository.Save(); return; } if (arguments.Length == 1) { PrintHelp(); return; } if (arguments[0] == "remove") { var crime = CrimeRepository.GetById(Convert.ToInt32(arguments[1])); CrimeRepository.Delete(crime); CrimeRepository.Save(); return; } if (arguments[0] == "id") { Crime crime = CrimeRepository.GetAll().FirstOrDefault(c => c.CrimeId == Convert.ToInt32(arguments[1])); Console.WriteLine(crime?.ToString() ?? "Не найдено"); return; } if (arguments[0] == "place") { Crime crime = CrimeRepository.GetAll().FirstOrDefault(c => c.Place == arguments[1]); Console.WriteLine(crime?.ToString() ?? "Не найдено"); return; } if (arguments[0] == "effects") { Crime crime = CrimeRepository.GetAll().FirstOrDefault(c => c.Effects == arguments[1]); Console.WriteLine(crime?.ToString() ?? "Не найдено"); return; } if (arguments[0] == "comments") { Crime crime = CrimeRepository.GetAll().FirstOrDefault(c => c.Comments == arguments[1]); Console.WriteLine(crime?.ToString() ?? "Не найдено"); return; } if (arguments[0] == "remove") { CrimeRepository.Delete(CrimeRepository.GetAll(). FirstOrDefault(crime => crime.CrimeId == Convert.ToInt32(arguments[1]))); CrimeRepository.Save(); return; } PrintHelp(); }); app.AddCommand("criminals", (arguments) => { void PrintCriminalInfo(Criminal criminal, string indent = "") { if (criminal == null) { Console.WriteLine("Не найдено"); } Console.WriteLine(criminal.ToString(indent)); Console.WriteLine("Преступления: "); foreach (var crime in criminal.Crimes) { Console.WriteLine(crime.ToString(indent + " ")); if (crime != criminal.Crimes.Last()) { Console.WriteLine(); } } } if (arguments.Length == 0) { PrintHelp(); return; } if (arguments[0] == "all") { foreach (var criminal in CriminalRepository.GetAll()) { PrintCriminalInfo(criminal); if (criminal != CriminalRepository.GetAll().Last()) { Console.WriteLine(); } } return; } if (arguments[0] == "add") { var criminal = new Criminal(); Console.Write("Грожданство: "); criminal.Cirezenship = Console.ReadLine(); Console.Write("Типы преступлений: "); criminal.CrimeTypes = Console.ReadLine(); Console.Write("ФИО: "); criminal.FullName = Console.ReadLine(); Console.Write("Росто: "); criminal.Height = Convert.ToInt32(Console.ReadLine()); Console.Write("Цвет волос: "); criminal.HeirColor = Console.ReadLine(); Console.Write("Языки: "); criminal.Languages = Console.ReadLine(); Console.Write("Кличка: "); criminal.Nickaname = Console.ReadLine(); Console.Write("Особые приметы: "); criminal.SpecialSigns = Console.ReadLine(); CriminalRepository.Add(criminal); CriminalRepository.Save(); return; } if (arguments.Length == 1) { PrintHelp(); return; } if (arguments[0] == "remove") { CriminalRepository.Delete(CriminalRepository.GetById(Convert.ToInt32(arguments[1]))); CriminalRepository.Save(); return; } if (arguments[0] == "id") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.CriminalId == Convert.ToInt32(arguments[1])); PrintCriminalInfo(criminal); return; } if (arguments[0] == "crirezenship") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.Cirezenship == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "crimetypes") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.CrimeTypes == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "name") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.FullName == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "height") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.Height == Convert.ToInt32(arguments[1])); PrintCriminalInfo(criminal); return; } if (arguments[0] == "color") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.HeirColor == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "langs") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.Languages == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "nick") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.Nickaname == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments[0] == "signs") { var criminal = CriminalRepository.GetAll().FirstOrDefault(c => c.SpecialSigns == arguments[1]); PrintCriminalInfo(criminal); return; } if (arguments.Length <= 3) { PrintHelp(); return; } if ((arguments[1] == "crimes") && (arguments[2] == "add")) { var criminal = CriminalRepository.GetById(Convert.ToInt32(arguments[0])); if (criminal == null) { Console.WriteLine("Преступника с таким id не существует"); return; } var crime = CrimeRepository.GetById(Convert.ToInt32(arguments[3])); if (crime == null) { Console.WriteLine("Преступления с таким id не существует"); } else { criminal.Crimes.Add(crime); CriminalRepository.Save(); return; } } if ((arguments[1] == "crimes") && (arguments[2] == "remove")) { var criminal = CriminalRepository.GetById(Convert.ToInt32(arguments[0])); if (criminal == null) { Console.WriteLine("Преступника с таким id не существует"); return; } var crime = CrimeRepository.GetById(Convert.ToInt32(arguments[3])); if (crime == null) { Console.WriteLine("Преступления с таким id не существует"); } else { criminal.Crimes.Remove(crime); CriminalRepository.Save(); return; } } PrintHelp(); });