public static void AddIndex(CustomClasses.Hotel hotel)
 {
     foreach (var timing in hotel.availability)
     {
         for (DateTime date = timing.from; date <= timing.to; date = date.AddDays(1))
         {
             Add(date, hotel.id);
         }
     }
 }
示例#2
0
        public static CustomClasses.WebServiceResponse Execute(string url)
        {
            CustomClasses.WebServiceResponse retVal = new CustomClasses.WebServiceResponse();
            retVal.Status = (int)StatusEnum.OK;
            string         resStr       = string.Empty;
            HttpWebRequest request      = (HttpWebRequest)WebRequest.Create(url);
            bool           arrayStarted = false;

            try
            {
                List <CustomClasses.Hotel> hotels = null;
                int        count  = 0;
                HttpClient client = new HttpClient();
                using (Stream stream = client.GetStreamAsync(url).Result)
                    using (StreamReader sr = new StreamReader(stream))
                        using (JsonReader reader = new JsonTextReader(sr))
                        {
                            CustomClasses.Hotel hotel      = null;
                            JsonSerializer      serializer = new JsonSerializer
                            {
                                DateFormatString = "dd-MM-yyyy"
                            };

                            while (reader.Read())
                            {
                                if (arrayStarted && reader.TokenType == JsonToken.StartObject)
                                {
                                    hotel    = serializer.Deserialize <CustomClasses.Hotel>(reader);
                                    hotel.id = count;
                                    hotels.Add(hotel);
                                    DateIndexBuilder.AddIndex(hotel);
                                }
                                else if (reader.TokenType == JsonToken.StartArray)
                                {
                                    arrayStarted = true;
                                    hotels       = new List <CustomClasses.Hotel>();
                                }
                                count++;
                            }
                        }

                retVal.Data = hotels;
            }
            catch (WebException ex)
            {
                retVal.Status       = (int)StatusEnum.ERROR;
                retVal.ErrorMessage = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
            }

            return(retVal);
        }