public void Start(int b) { try { reises.Clear(); } catch { }; bool flag = false; reises = GenerateReises(); while (!flag) { try { flag = true; foreach (var a in reises) { if (a.plain == null && a.registrtionTime != null) { easyPlane eP = new easyPlane(a, 0); var client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:7014/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string req = "planes//create"; var serializer = new DataContractJsonSerializer(typeof(easyPlane)); var stringPayload = JsonConvert.SerializeObject(eP); var content = new StringContent(stringPayload, Encoding.UTF8, "application/json"); var result = client.PostAsync(req, content).Result; var body = result.Content.ReadAsStringAsync().Result; //Взять у Васи самолеты JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new PlaneConvertor()); var plane = JsonConvert.DeserializeObject <Plane>(body, settings); a.plain = plane.Id; a.count = plane.PassengersMax; } } Console.WriteLine("Привязка самолетов закончена"); } catch { Console.WriteLine("Не удалось прикрепить самолет"); flag = false; } } string txt = "\n"; foreach (Reis r in reises) { txt += r.reisToString() + "\n"; } Console.WriteLine("Расписание:" + txt); flag = false; while (!flag) { try { flag = true; var client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:7015/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string req = "api//board//Flights"; var serializer = new DataContractJsonSerializer(typeof(List <Reis>)); var stringPayload = JsonConvert.SerializeObject(reises); var content = new StringContent(stringPayload, Encoding.UTF8, "application/json"); var result = client.PostAsync(req, content).Result; var body = result.Content.ReadAsStringAsync().Result; Console.WriteLine("Cвязь с табло установлена"); flag = true; } catch { Console.WriteLine("Не удалось связаться с табло"); flag = false; } } if (b == 1) { Thread timer = new Thread(delegate() { Timer(b); }); timer.Start(); } foreach (var r in reises) { Thread t = new Thread(delegate() { ForTime(r); }); t.Start(); } }
public int ForTime(Reis reis) { Uri A = new Uri("http://localhost:7015/"); Uri L = new Uri("http://localhost:44304/"); Uri V = new Uri("http://localhost:7014/"); string txtA = "api/board/FlightStatus//"; string txtL = "CheckIn//CheckInStatus//"; string txtV = "plane//update_status//"; bool b = false, r = false, s = false, pp = false, pb = false, pf = false; if (reis.registrtionTime != null) { while (!s) { if (curMin >= reis.registrtionTime && !r) { r = true; try { ChangeSt(reis.reisNumber.ToString(), "//1", txtA, A); ChangeSt(reis.reisNumber.ToString(), "//1", txtL, L); //отправить Алине и Лере статус о начале регистрации Console.WriteLine("На рейс " + reis.reisNumber.ToString() + " открыта регистрация"); reis.registrtionTime = curMin; } catch { Console.WriteLine("Служба регистрации и/или табло не доступны-> регистрация не началась->пробуем еще раз. Рейс " + reis.reisNumber.ToString()); r = false; } if (!pp) { pp = true; try { int message = ChangeSt(reis.plain.ToString(), "//1", txtV, V); if (message == 0) { pp = false; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не может начать подготовку(Не готов к этому)."); } else { Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", начал подготовку."); } } catch { Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не доступен.-> не начал подготовку->пробуем еще раз."); pp = false; } } } if (curMin >= reis.boardingTime && !b && pp && r) { if (!pb) { pb = true; try { int message = ChangeSt(reis.plain.ToString(), "//6", txtV, V); if (message == 0) { pb = false; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не может начать посадку пассажиров."); } else { Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", начал посадку пассажиров."); } } catch { Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не доступен.-> не начал посадку пассажиров.->пробуем еще раз."); pb = false; } } if (pb) { try { b = true; ChangeSt(reis.reisNumber.ToString(), "//2", txtA, A); ChangeSt(reis.reisNumber.ToString(), "//2", txtL, L); Console.WriteLine("На рейс " + reis.reisNumber.ToString() + " открыта посадка"); } catch { Console.WriteLine("Служба регистрации и/или табло не доступны->открытm посадку не удалось на рейс " + reis.reisNumber.ToString() + " ->пробуем еще раз."); b = false; } } } if (curMin >= reis.timeStart && !s && pb && b) { if (!pf) { s = true; pf = true; try { int message = ChangeSt(reis.plain.ToString(), "//8", txtV, V); if (message == 0) { pf = false; s = false; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не может уйти на взлет."); } else { Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", ушел на взлет."); } } catch { pf = false; s = false; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", не доступен.->Не улетел->пробуем еще раз."); } } if (pf) { try { ChangeSt(reis.reisNumber.ToString(), "//3", txtA, A); // Алине, что посадка закончена Console.WriteLine("Информация, что самолет, связанный с рейсом " + reis.reisNumber.ToString() + ", ушел на взлет, передана табло"); } catch { Console.WriteLine("Табло недоступно."); } } } Thread.Sleep(1000); } reises.Remove(reis); return(0); } else { while (!s) { if (curMin >= reis.timeStop - 10 && !s) { try { easyPlane eP = new easyPlane(reis, 10); var client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:7014/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string req = "planes//create"; var serializer = new DataContractJsonSerializer(typeof(easyPlane)); var stringPayload = JsonConvert.SerializeObject(eP); var content = new StringContent(stringPayload, Encoding.UTF8, "application/json"); var result = client.PostAsync(req, content).Result; var body = result.Content.ReadAsStringAsync().Result; s = true; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", создан и скоро прилетит в аэропорт."); //генерация самолета } catch { s = false; Console.WriteLine("Cамолет, связанный с рейсом " + reis.reisNumber.ToString() + ", создать не удалось.->Не прилетит"); } } Thread.Sleep(1000); curMin += speed; } reises.Remove(reis); return(0); } }