Example #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jo              = JObject.Load(reader);
            string  frm             = (string)jo["frm"];
            string  to              = (string)jo["to"];
            int     timeStart       = (int)jo["timeStart"];
            int     timeStop        = (int)jo["timeStop"];
            int?    count           = (int?)jo["count"];
            int     reisNumber      = (int)jo["reisNumber"];
            int?    plain           = (int?)jo["plain"];
            int?    registrtionTime = (int?)jo["registrtionTime"];
            int?    boardingTime    = (int?)jo["boardingTime"];
            Reis    result          = new Reis(frm, to, timeStart, timeStop, count, reisNumber, plain, registrtionTime, boardingTime);

            return(result);
        }
Example #2
0
 public easyPlane(Reis r, int s)
 {
     Route = r; Status = s;
 }
Example #3
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);
            }
        }