예제 #1
0
        public bool EqualsResults(PackageResultsProfile.RootObject a, PackageResultsProfile.RootObject b)
        {
            bool resultatEquals = false;

            //если пришел пустой ответ
            if ((a.combinations.Count == 0) && (b.combinations.Count == 0))
            {
                return(false);
            }
            //для итерации первого объекта
            for (int iterascombinObA = 0; a.combinations.Count != iterascombinObA; iterascombinObA++)
            {
                //для итерации второго объекта
                for (int iterascombinObB = 0; b.combinations.Count != iterascombinObB; iterascombinObB++)
                {
                    //для итерации отелей
                    for (int otelA = 0; a.combinations[iterascombinObA].hotels.Count != otelA; otelA++)
                    {
                        for (int otelB = 0; b.combinations[iterascombinObB].hotels.Count != otelB; otelB++)
                        {
                            //итерация рутов
                            for (int routesA = 0; a.combinations[iterascombinObA].flight.routes.Count != routesA; routesA++)
                            {
                                for (int routesB = 0; b.combinations[iterascombinObB].flight.routes.Count != routesB; routesB++)
                                {
                                    for (int segmentsA = 0; a.combinations[iterascombinObA].flight.routes[routesA].segments.Count != segmentsA; segmentsA++)
                                    {
                                        Program program = new Program();
                                        resultatEquals = program.ZaprosSravneniePackageResultsProfileRootObject(a, b, iterascombinObA, iterascombinObB, otelA, otelB, routesA, routesA, segmentsA, segmentsA);

                                        ///true, если указанные объекты равны; в противном случае — false.Если оба параметра objA и objB имеют значение NULL, метод возвращает значение true.
                                        //resultatEquals = Equals(a.combinations[iterascombinObA], b.combinations[iterascombinObB]);

                                        //string jsoncombAFlight = JsonConvert.SerializeObject(a.combinations[iterascombinObA].flight);
                                        //string jsoncombAHotel = JsonConvert.SerializeObject(a.combinations[iterascombinObA].hotels);
                                        //string jsoncombBFlight = JsonConvert.SerializeObject(b.combinations[iterascombinObB].flight);
                                        //string jsoncombBHotel = JsonConvert.SerializeObject(b.combinations[iterascombinObB].hotels);

                                        //resultatEquals = (jsoncombAFlight == jsoncombBFlight) && (jsoncombAHotel == jsoncombBHotel);

                                        if (resultatEquals)
                                        {
                                            return(false);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }
예제 #2
0
        /// <summary>
        /// сравнение происходит между двумя объектами, в начале сравниваеся отели по кол-ву, далее если кол-во одинаково по цене, типу отеля, звездам, если равны далее по роутам если равны далее
        /// по кол-ву сегементов, далее каждый роут сравниваеся особенным образом, так как 1 маршрут будет из
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="iterascombinObA"></param>
        /// <param name="iterascombinObB"></param>
        /// <param name="otelA"></param>
        /// <param name="otelB"></param>
        /// <param name="routsA"></param>
        /// <param name="routsB"></param>
        /// <param name="segmentsA"></param>
        /// <param name="segmentsB"></param>
        /// <returns></returns>
        public bool ZaprosSravneniePackageResultsProfileRootObject(PackageResultsProfile.RootObject a, PackageResultsProfile.RootObject b, int iterascombinObA, int iterascombinObB, int otelA,
                                                                   int otelB, int routsA, int routsB, int segmentsA, int segmentsB)
        {
            ///Сравнение двух объектов,
            ///проверка по кол-ву отелей, далее номер отеля совпадает (пример первый отель 1го объекта будет сравниваться только с 1ым объектом второго объекта, если 2ой то со 2ым и т.д.).
            ///проверка по цене отеля
            ///проверка по типу отеля
            ///проверка по звездам отеля
            ///сравнение цены за билет flight.
            ///Проверка по роутам. Сравнивается первый полет с первым полетом другого объекта.
            ///Для того чтобы не было лишних сравниний (пример из А в Б и из Б в А).
            /// Сравнение по сервис классу и сервис класс типу
            bool resultatEquals = a.combinations[iterascombinObA].hotels.Count == b.combinations[iterascombinObB].hotels.Count
                                  &&
                                  a.combinations[iterascombinObA].hotels[otelA].price == b.combinations[iterascombinObB].hotels[otelB].price
                                  &&
                                  a.combinations[iterascombinObA].hotels[otelA].hotelType == b.combinations[iterascombinObB].hotels[otelB].hotelType
                                  &&
                                  a.combinations[iterascombinObA].hotels[otelA].stars == b.combinations[iterascombinObB].hotels[otelB].stars
                                  &&
                                  a.combinations[iterascombinObA].flight.price == b.combinations[iterascombinObB].flight.price
                                  &&
                                  a.combinations[iterascombinObA].flight.routes.Count == b.combinations[iterascombinObB].flight.routes.Count
                                  &&
                                  a.combinations[iterascombinObA].flight.routes[routsA].segments.Count == b.combinations[iterascombinObB].flight.routes[routsA].segments.Count
                                  &&
                                  a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClass == b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClass
                                  &&
                                  a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClassType == b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClassType;

            //Console.WriteLine(" шаг итерации i комбо первого объекта {0}, шаг итерации роутес {1}, шаг итерации сегментов {2} ", iterascombinObA, routsA, segmentsA);
            //Console.WriteLine(" шаг итерации i комбо второго объекта {0}, шаг итерации роутес {1} ", iterascombinObB, routsB);
            //Console.WriteLine("a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClass {0} == b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClass {1}", a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClass, b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClass);
            //Console.WriteLine("a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClassType {0} == b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClassType {1}", a.combinations[iterascombinObA].flight.routes[routsA].segments[segmentsA].serviceClassType, b.combinations[iterascombinObB].flight.routes[routsA].segments[segmentsA].serviceClassType);
            //Console.WriteLine("");
            //нижняя строка для отлова булево через отладку.
            //if (resultatEquals) return resultatEquals;
            return(resultatEquals);
        }