public Discount disc; //об'єкт знижки //Конструктор з параметрами public Trips(DelegOutPut OutPutEvent, DelegAdd addEvent, DelegDel deleteEvent) { if (OutPutEvent != null) { Trips.OutPutEvent += OutPutEvent; } EventAdd = (addEvent != null) ? addEvent : null; EventDel = (deleteEvent != null) ? deleteEvent : null; }
//Конструктор з параметрами public Trips(Passeger passeger, int key_of_Passeger, double kilometrs, double priceForOneKilometr, double waitTime, double waitPrice, DelegOutPut OutPutEvent, DelegAdd addEvent, DelegDel deleteEvent) { if (kilometrs <= 0) { throw new ArgumentNullException("Hours must be more than zero!!!"); } if (priceForOneKilometr <= 0) { throw new ArgumentException("Price for one kilometr must be more than zero!"); } if (waitTime < 0) { throw new ArgumentNullException("wait TIME should be more or equal zero"); } if (waitTime > 0 && waitPrice <= 0) { throw new ArithmeticException("Waitng price must be more than zero, when waiting time > 0"); } this.kilometrs = kilometrs; this.waitTime = waitTime; this.priceForOneKilometr = priceForOneKilometr; this.waitPrice = waitPrice; this.waitTime = waitTime; this.key_of_passeger = key_of_Passeger; passeger.countTrips += 1; peo = passeger; namePassenger = peo.Name(); sernamePassenger = peo.SerName(); disc = new Discount(peo.countTrips); if (OutPutEvent != null) { Trips.OutPutEvent += OutPutEvent; } EventAdd += (addEvent != null) ? addEvent : null; EventDel += (deleteEvent != null) ? deleteEvent : null; }
//Метод для додавання нової поїздки static public void AddTrip(List <Trips> NTrip, List <Passeger> passegers) { DelegOutPut OutPutToFile = OutPutListOfTripsInTheFile; Console.Write("Key = "); int key = Convert.ToInt32(Console.ReadLine()); Console.Write("Name: "); string name = Console.ReadLine(); Console.Write("Sername: "); string sername = Console.ReadLine(); Console.Write("Long:"); double Long = Convert.ToDouble(Console.ReadLine()); if (Long <= 0) { throw new ArgumentNullException("Long must be more than zero!!!"); } Console.Write("Price for one kilimert: "); double PriceForOneKilometr = Convert.ToDouble(Console.ReadLine()); if (PriceForOneKilometr <= 0) { throw new ArithmeticException("Price for a one kilometrs should be more than 0!"); } Console.Write("Waiting time: "); double waiting_time = Convert.ToDouble(Console.ReadLine()); if (waiting_time < 0) { throw new ArgumentException("Waiting time must be >= 0"); } Console.Write("Waiting price: "); double waiting_price = Convert.ToDouble(Console.ReadLine()); if (waiting_price < 0) { throw new ArgumentException("Price for a waiting should be more than zero or is equal with zero!!!"); } Console.Write("Do you want to describe to news about adding this trip(YES - input: true, if NO - input -false: "); bool BDelegAdd = bool.Parse(Console.ReadLine()); DelegAdd delegAdd = null; if (BDelegAdd == true) { delegAdd = InfoAddTrips; } Console.Write("Do you want to describe to news about deletting this trip(YES - input: true, if NO - input -false: "); bool BDelegDel = bool.Parse(Console.ReadLine()); DelegDel delegDel = null; if (BDelegDel == true) { delegDel = InfoPopTrips; } Trips.Add(passegers, NTrip, name, sername, key, Long, PriceForOneKilometr, waiting_time, waiting_price, OutPutToFile, delegAdd, delegDel); OutPutListOfTripsInTheFile(NTrip); OutPutPassegersInFile(passegers); }
//Додавання поїздки static public void Add(List <Passeger> passegers, List <Trips> NTrip, string name, string sername, int key, double Long, double PriceForOneKilometr, double waiting_time, double waiting_price, DelegOutPut OutPutEvent, DelegAdd addEvent, DelegDel deleteEvent) { bool flag = false; foreach (var val in passegers) { if (val.Name() == name && val.SerName() == sername && val.key == key) { flag = true; break; } } if (flag == false) { throw new ArgumentException("Did not find this person in list of Passegers. We recomendet to you add this person in list of passegers"); } flag = false; foreach (var val in NTrip) { if (val.key_of_passeger == key) { throw new ArgumentException("This person yet to drive "); } } flag = false; foreach (var Value in passegers) { if (Value.Name() == name && Value.SerName() == sername && Value.key == key) { NTrip.Add(new Trips(Value, key, Long, PriceForOneKilometr, waiting_time, waiting_price, Trips.OutPutEvent, addEvent, deleteEvent)); if (OutPutEvent != null) { Trips.OutPutEvent = OutPutEvent; Trips.OutPutEvent?.Invoke(NTrip); } flag = true; break; } } if (flag == false) { throw new ArgumentException("Warning: This passeger did not find. You can to try this: add new passeger."); } Trips.EventAdd?.Invoke(); }
//Метод для того, щоб зчитувати діні про поїздки з файлу public static void InputNowListOfTrips(ref List <Trips> ArrgOfTrips, List <Passeger> passegers) { DelegDel delegDel; DelegAdd delegAdd; delegAdd = InfoAddTrips; delegDel = InfoPopTrips; DelegOutPut OutPutTOFileDeleg = OutPutListOfTripsInTheFile; string pathNowTrips = @"ListOfTrips.txt"; FileInfo fileInf = new FileInfo(pathNowTrips); StreamReader inTrip = new StreamReader(pathNowTrips); string trees = inTrip.ReadToEnd(); int files_count = 0; int lenght = Convert.ToInt32(fileInf.Length); while (files_count < lenght) { int key = 0; double Long = 0; double TripNowPrice = 0; double waiting_time = 0; double waiting_price = 0; string s = ""; char c = ' '; c = trees[files_count]; files_count += 1; s += c; int k_space = 1; while (c != '\n' && files_count < lenght) { c = trees[files_count]; files_count += 1; if (c == ' ' || files_count == lenght || c == '\n') { if (files_count == lenght) { s += c; } switch (k_space) { case 1: key = Convert.ToInt32(s); break; case 2: Long = Convert.ToDouble(s); break; case 3: TripNowPrice = Convert.ToDouble(s); break; case 4: waiting_time = Convert.ToDouble(s); break; case 5: waiting_price = Convert.ToDouble(s); break; } k_space += 1; s = ""; } else { s += c; } } for (int i = 0; i < passegers.Count(); i++) { if (passegers[i].key == key) { ArrgOfTrips.Add(new Trips(passegers[i], key, Long, TripNowPrice, waiting_time, waiting_price, OutPutTOFileDeleg, delegAdd, delegDel)); break; } } } inTrip.Close(); }