예제 #1
0
    public QueryStringParametrs(HttpRequest request)
    {
        _request = request;
        var queryString = _request.QueryString;

        if (!queryString.HasKeys())
        {
            IsEmpty          = true;
            IsParametrsValid = false;
            return;
        }

        IsParametrsValid = true;
        IsEmpty          = true;

        try
        {
            // todo: доделать обработку обязательных параметров в строке запроса.
            var strPrmValues = queryString["country"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                CountryToKey = int.Parse(strPrmValues);
            }

            strPrmValues = queryString["departFrom"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                CityFromKey = int.Parse(strPrmValues);
            }


            strPrmValues = queryString["tourtype"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                TourTypeKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["city"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                CitiesToKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["tour"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                TourKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["dateFrom"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                ArrivalDateFrom = DateTime.Parse(strPrmValues);
            }
            strPrmValues = queryString["dateTo"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                if (ArrivalDateFrom.HasValue)
                {
                    ArrivalDateTo = DateTime.Parse(strPrmValues);
                }
                else
                {
                    throw new FormatException("QueryString parametr dateTo mast be used with parametr dateFrom");
                }
            }
            else
            {
                if (ArrivalDateFrom.HasValue)
                {
                    throw new FormatException("QueryString parametr dateFrom mast be used with parametr dateTo");
                }
            }

            strPrmValues = queryString["nights"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                Nights = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = WebUtility.UrlDecode(queryString["stars"]);
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                HotelCategoriesKeys = strPrmValues.Split(',').ToArray();
            }

            strPrmValues = queryString["pansion"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                PansionKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["filterHotelsArrNights"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                IsHotelsFiltredByArrNights = bool.Parse(strPrmValues);
            }

            strPrmValues = queryString["hotel"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                HotelKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["room"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                RoomTypeKeys = strPrmValues.Split(',').Select(int.Parse).ToArray();
            }

            strPrmValues = queryString["adults"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                AdultsNumber = ushort.Parse(strPrmValues);
            }
            strPrmValues = queryString["childs"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                ChildsNumber = ushort.Parse(strPrmValues);
            }
            strPrmValues = queryString["firstChildAge"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                FirstChildAge = ushort.Parse(strPrmValues);
            }
            strPrmValues = queryString["secondChildAge"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                SecondChildAge = ushort.Parse(strPrmValues);
            }

            strPrmValues = queryString["aviaQuotaMask"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                QuotesStates tmp;
                if (!Enum.TryParse(strPrmValues, true, out tmp))
                {
                    throw new FormatException("aviaQuotaMask querystring parametr is wrong.");
                }
                AviaQuotesStates = tmp | QuotesStates.None;
            }

            strPrmValues = queryString["hotelQuotaMask"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                QuotesStates tmp;
                if (!Enum.TryParse(strPrmValues, true, out tmp))
                {
                    throw new FormatException("hotelQuotaMask querystring parametr is wrong.");
                }
                RoomsQuotesStates = tmp;
            }

            strPrmValues = queryString["currency"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                RateKey = int.Parse(strPrmValues);
            }
            strPrmValues = queryString["priceLimit"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                MaxPrice = uint.Parse(strPrmValues);
            }
            strPrmValues = queryString["pageSize"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                RowsNumber = ushort.Parse(strPrmValues);
            }
            strPrmValues = queryString["showResults"];
            if (!String.IsNullOrWhiteSpace(strPrmValues))
            {
                ShowResults = bool.Parse(strPrmValues);
            }
        }
        catch (FormatException e)
        {
            IsEmpty          = false;
            IsParametrsValid = false;
            return;
        }

        IsEmpty =
            !(CityFromKey.HasValue || CountryToKey.HasValue || (TourTypeKeys != null && TourTypeKeys.Any()) ||
              (CitiesToKeys != null && CitiesToKeys.Any()) || (TourKeys != null && TourKeys.Any()) ||
              (ArrivalDateFrom.HasValue && ArrivalDateTo.HasValue) || (Nights != null && Nights.Any()) ||
              (HotelCategoriesKeys != null && HotelCategoriesKeys.Any()) || (PansionKeys != null && PansionKeys.Any()) ||
              (HotelKeys != null && HotelKeys.Any()) || (RoomTypeKeys != null && RoomTypeKeys.Any()) ||
              AdultsNumber.HasValue || ChildsNumber.HasValue || FirstChildAge.HasValue || SecondChildAge.HasValue ||
              AviaQuotesStates.HasValue || RoomsQuotesStates.HasValue || RateKey.HasValue || MaxPrice.HasValue || RowsNumber.HasValue || ShowResults.HasValue);
    }