Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }