예제 #1
0
        private void start_program()
        {
            ServiceSoap_1.HotelPricesRequest hotelpricereq1 = new ServiceSoap_1.HotelPricesRequest();
            ServiceSoap_1.User requestor1 = new ServiceSoap_1.User();

            requestor1.Login         = Properties.Settings.Default.login;
            requestor1.Password      = Properties.Settings.Default.pass;
            requestor1.Name          = "test1";
            hotelpricereq1.Requestor = requestor1;
            ServiceSoap_1.HotelPriceCondition hotelpricecond1 = new ServiceSoap_1.HotelPriceCondition();

            ServiceSoap_1.ReferenceCondition refcity1 = new ServiceSoap_1.ReferenceCondition();

            ServiceSoap_1.ReferenceCondition refhotel1   = new ServiceSoap_1.ReferenceCondition();
            ServiceSoap_1.DurationPeriod     createddur1 = new ServiceSoap_1.DurationPeriod();
            createddur1.BeginSpecified = true;
            createddur1.EndSpecified   = true;
            createddur1.Begin          = DateTime.Now.AddDays(-1);
            createddur1.End            = DateTime.Now;
            hotelpricecond1.Created    = createddur1;

            hotelpricecond1.City = refcity1;

            hotelpricereq1.Conditions    = new ServiceSoap_1.HotelPriceCondition[1];
            hotelpricereq1.Conditions[0] = hotelpricecond1;

            //hotelpriceresponse
            ServiceSoap_1.HotelPricesResponse hotelpriceresp1;
            //client
            ServiceSoap_1.ExchangeServiceSoapClient client1 = new ServiceSoap_1.ExchangeServiceSoapClient();



            //Делаем запрос hotelpricesrq()
            Console.WriteLine("Request...");
            hotelpriceresp1 = client1.HotelPricesRQ(hotelpricereq1);
            ServiceSoap_1.HotelPricesResponse hotelprs = hotelpriceresp1;

            Console.WriteLine("Response.");
            Console.WriteLine("Count_prices: {0}", hotelprs.Prices.Length);
            //Console.ReadLine();
            //return;

            if (hotelprs.Errors != null)
            {
                using (StreamWriter strwrite = File.AppendText("log.txt"))
                {
                    foreach (ServiceSoap_1.Warning er in hotelprs.Errors)
                    {
                        strwrite.Write(DateTime.Now.ToLongTimeString() + "    Error code: " + er.Code + ";    Error value:    " + er.Value + ";   ");
                        if (er.Code == 0)
                        {
                            strwrite.WriteLine("Проверьте правильность логина и пароля");
                        }
                    }
                }
                return;
            }

            using (StreamWriter strwrite = File.AppendText(AppDomain.CurrentDomain.BaseDirectory + @"\log.txt"))//Assembly.GetExecutingAssembly().Location
            {
                strwrite.WriteLine("\r\n_______________");
                strwrite.WriteLine(DateTime.Now.ToString() + " data received...\r\n processing...");
            }

            filling_BD2(hotelprs);


            using (StreamWriter strwrite = File.AppendText(AppDomain.CurrentDomain.BaseDirectory + @"log.txt"))
            {
                strwrite.WriteLine("  end: " + DateTime.Now.ToLongTimeString());
            }
        }
예제 #2
0
        private void filling_BD2(ServiceSoap_1.HotelPricesResponse hotelprices)
        {
            Dictionary <string, int> dict_tables = new Dictionary <string, int>();

            dict_tables.Add("bookingperiod", 0);
            dict_tables.Add("city", 0);
            dict_tables.Add("hotel", 0);
            dict_tables.Add("mealtype", 0);
            dict_tables.Add("period", 0);
            dict_tables.Add("room", 0);
            dict_tables.Add("specialoffer", 0);
            dict_tables.Add("price", 0);

            winsoap_dal.winsoap_conn_dal win_conn_dal = new winsoap_conn_dal();
            string str_cn = Properties.Settings.Default.SQL_conn_str;//ConfigurationManager.ConnectionStrings["sql_provider1"].ConnectionString;


            var hotelprices_sorted = hotelprices.Prices.OrderBy(item => item.InternalID);

            win_conn_dal.OpenConnection(str_cn);
            int company_last_id = win_conn_dal.select_company_last_id(Properties.Settings.Default.id_company_in_BD);

            int index_of_current_element = 0;

            foreach (ServiceSoap_1.HotelPrice srt in hotelprices_sorted)
            {
                Console.Write(index_of_current_element++ + "\r");

                if (srt.InternalID <= company_last_id)
                {
                    continue;
                }
                else
                {
                    company_last_id = srt.InternalID;
                    win_conn_dal.update_company_last_id(company_last_id, Properties.Settings.Default.id_company_in_BD);
                }

                if (srt.City.Name == null &&
                    srt.Hotel.Name == null &&
                    srt.Amount == 0 &&
                    srt.Currency == null)
                {
                    continue;
                }
                //SELECT Проверка наличия. Не проверяем только bookingperiod, prices, company, links
                dict_tables["bookingperiod"] = win_conn_dal.select_bookingperiod(srt.BookingPeriod.Begin,
                                                                                 srt.BookingPeriod.End);

                dict_tables["city"]  = win_conn_dal.select_city(srt.City.Code, srt.City.Name);
                dict_tables["hotel"] = win_conn_dal.select_hotel(srt.Hotel.Code,
                                                                 srt.Hotel.Name,
                                                                 srt.Hotel.Category.Name);
                dict_tables["mealtype"] = win_conn_dal.select_mealtype(srt.MealType.Code,
                                                                       srt.MealType.Name);
                dict_tables["period"] = win_conn_dal.select_period(srt.Period.Begin,
                                                                   srt.Period.End);
                dict_tables["room"] = win_conn_dal.select_room(srt.Room.Accommodation.Code,
                                                               srt.Room.Accommodation.Name,
                                                               srt.Room.Category.Code,
                                                               srt.Room.Category.Name,
                                                               srt.Room.Type.Code,
                                                               srt.Room.Type.Name);
                dict_tables["specialoffer"] = win_conn_dal.select_specialoffer(srt.SpecialOffer.Name,
                                                                               srt.SpecialOffer.Code,
                                                                               srt.SpecialOffer.FreeNights,
                                                                               srt.SpecialOffer.SpecialOfferType.Code,
                                                                               srt.SpecialOffer.SpecialOfferType.Name);


                dict_tables["price"] = win_conn_dal.insert_price(srt.Created,
                                                                 srt.Amount,
                                                                 srt.Currency,
                                                                 srt.MinimumStay,
                                                                 srt.MaximumStay,
                                                                 srt.Type.ToString());
                //INSERTS прошедшие SELECT
                if (dict_tables["city"] == 0)
                {
                    dict_tables["city"] = win_conn_dal.insert_city(srt.City.Code, srt.City.Name);
                }

                if (dict_tables["hotel"] == 0)
                {
                    dict_tables["hotel"] = win_conn_dal.insert_hotel(srt.Hotel.Code,
                                                                     srt.Hotel.Name,
                                                                     srt.Hotel.Category.Name);
                }

                if (dict_tables["mealtype"] == 0)
                {
                    dict_tables["mealtype"] = win_conn_dal.insert_mealtype(srt.MealType.Code,
                                                                           srt.MealType.Name);
                }

                if (dict_tables["bookingperiod"] == 0)
                {
                    if (srt.BookingPeriod != null)
                    {
                        dict_tables["bookingperiod"] = win_conn_dal.insert_bookingperiod(srt.BookingPeriod.Begin,
                                                                                         srt.BookingPeriod.End);
                    }
                }

                if (dict_tables["period"] == 0)
                {
                    if (srt.Period != null)
                    {
                        dict_tables["period"] = win_conn_dal.insert_period(srt.Period.Begin,
                                                                           srt.Period.End);
                    }
                }

                if (dict_tables["room"] == 0)
                {
                    dict_tables["room"] = win_conn_dal.insert_room(srt.Room.Accommodation.Code,
                                                                   srt.Room.Accommodation.Name,
                                                                   srt.Room.Category.Code,
                                                                   srt.Room.Category.Name,
                                                                   srt.Room.Type.Code,
                                                                   srt.Room.Type.Name);
                }

                if (dict_tables["specialoffer"] == 0)
                {
                    dict_tables["specialoffer"] = win_conn_dal.insert_specialoffer(srt.SpecialOffer.Name,
                                                                                   srt.SpecialOffer.Code,
                                                                                   srt.SpecialOffer.FreeNights,
                                                                                   srt.SpecialOffer.SpecialOfferType.Code,
                                                                                   srt.SpecialOffer.SpecialOfferType.Name);
                }

                //INSERTS links
                win_conn_dal.insert_link(dict_tables["hotel"],
                                         dict_tables["city"],
                                         dict_tables["room"],
                                         dict_tables["price"],
                                         dict_tables["mealtype"],
                                         dict_tables["bookingperiod"],
                                         dict_tables["period"],
                                         dict_tables["specialoffer"],
                                         Properties.Settings.Default.id_company_in_BD, //dict_tables["company"]);
                                         Properties.Settings.Default.id_country_in_BD);
            }
            win_conn_dal.CloseConnection();
        }