public ExcursionExtendedDescriptionList ExtendedDescription([FromUri] ExtendedDescriptionParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.Excursions == null)
            {
                throw new ArgumentNullExceptionWithCode(0x69, "ex");
            }
            WebPartner partner = UserToolsProvider.GetPartner(param);

            if (!param.FirstDate.HasValue)
            {
                param.fd = new DateTime?(DateTime.Now.Date);
            }
            if (!param.LastDate.HasValue)
            {
                param.ld = new DateTime?(param.FirstDate.Value.AddDays((double)Settings.ExcursionCheckAvailabilityDays));
            }
            ExcursionExtendedDescriptionList list = new ExcursionExtendedDescriptionList();

            List <ExcursionDescription> list2 = ExcursionProvider.GetDescription(param.Language, param.Excursions);

            foreach (ExcursionDescription description in list2)
            {
                ExcursionExtendedDescription item = new ExcursionExtendedDescription(description);
                if ((description != null) && (description.excursion != null))
                {
                    item.categorygroups = ExcursionProvider.BuildDescriptionCategories(description.excursion);
                    item.excursiondates = ExcursionProvider.GetDates(partner.id, description.excursion.id, param.FirstDate.Value, param.LastDate.Value);
                    item.ranking        = CatalogDescriptionExcursionRanking.Create(SurveyProvider.GetExcursionRanking(description.excursion.id, param.Language), param.Language);
                    item.surveynotes    = ExcursionSurveyNote.Create(SurveyProvider.GetExcursionNotes(description.excursion.id));
                }

                int maxCheckCount = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["max_dates_check_places"]);

                foreach (ExcursionDate ed in item.excursiondates)
                {
                    if (ed.isprice)
                    {
                        if (--maxCheckCount < 0)
                        {
                            break;
                        }

                        var price = ExcursionProvider.GetPrice(param.Language, partner.id, description.excursion.id, ed.date, null);

                        if ((price.Count > 0) && (price[0].totalseats >= 0) && (!price[0].freeseats.HasValue))
                        {
                            ed.isstopsale = true;
                        }
                    }
                }


                list.Add(item);
            }
            return(list);
        }
        public ExcursionExtendedDescriptionList ExtendedDescription([FromUri] ExtendedDescriptionParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.Excursions == null)
            {
                throw new ArgumentNullExceptionWithCode(0x69, "ex");
            }
            WebPartner partner = UserToolsProvider.GetPartner(param);

            if (!param.FirstDate.HasValue)
            {
                param.fd = new DateTime?(DateTime.Now.Date);
            }
            if (!param.LastDate.HasValue)
            {
                param.ld = new DateTime?(param.FirstDate.Value.AddDays((double)Settings.ExcursionCheckAvailabilityDays));
            }
            ExcursionExtendedDescriptionList list  = new ExcursionExtendedDescriptionList();
            List <ExcursionDescription>      list2 = ExcursionProvider.GetDescription(param.Language, param.Excursions);

            foreach (ExcursionDescription description in list2)
            {
                ExcursionExtendedDescription item = new ExcursionExtendedDescription(description);
                if ((description != null) && (description.excursion != null))
                {
                    item.categorygroups = ExcursionProvider.BuildDescriptionCategories(description.excursion);
                    item.excursiondates = ExcursionProvider.GetDates(partner.id, description.excursion.id, param.FirstDate.Value, param.LastDate.Value);
                    item.ranking        = CatalogDescriptionExcursionRanking.Create(SurveyProvider.GetExcursionRanking(description.excursion.id, param.Language), param.Language);
                    item.surveynotes    = ExcursionSurveyNote.Create(SurveyProvider.GetExcursionNotes(description.excursion.id));
                }
                list.Add(item);
            }
            return(list);
        }
 public ExcursionExtendedDescriptionList ExtendedDescription([FromUri] ExtendedDescriptionParam param)
 {
     if (param == null)
     {
         throw new ArgumentNullException("param");
     }
     if (param.Excursions == null)
     {
         throw new ArgumentNullExceptionWithCode(0x69, "ex");
     }
     WebPartner partner = UserToolsProvider.GetPartner(param);
     if (!param.FirstDate.HasValue)
     {
         param.fd = new DateTime?(DateTime.Now.Date);
     }
     if (!param.LastDate.HasValue)
     {
         param.ld = new DateTime?(param.FirstDate.Value.AddDays((double) Settings.ExcursionCheckAvailabilityDays));
     }
     ExcursionExtendedDescriptionList list = new ExcursionExtendedDescriptionList();
     List<ExcursionDescription> list2 = ExcursionProvider.GetDescription(param.Language, param.Excursions);
     foreach (ExcursionDescription description in list2)
     {
         ExcursionExtendedDescription item = new ExcursionExtendedDescription(description);
         if ((description != null) && (description.excursion != null))
         {
             item.categorygroups = ExcursionProvider.BuildDescriptionCategories(description.excursion);
             item.excursiondates = ExcursionProvider.GetDates(partner.id, description.excursion.id, param.FirstDate.Value, param.LastDate.Value);
             item.ranking = CatalogDescriptionExcursionRanking.Create(SurveyProvider.GetExcursionRanking(description.excursion.id, param.Language), param.Language);
             item.surveynotes = ExcursionSurveyNote.Create(SurveyProvider.GetExcursionNotes(description.excursion.id));
         }
         list.Add(item);
     }
     return list;
 }
        public ExcursionExtendedDescriptionList ExtendedDescription([FromUri] ExtendedDescriptionParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.Excursions == null)
            {
                throw new ArgumentNullExceptionWithCode(0x69, "ex");
            }
            WebPartner partner = UserToolsProvider.GetPartner(param);
            if (!param.FirstDate.HasValue)
            {
                param.fd = new DateTime?(DateTime.Now.Date);
            }
            if (!param.LastDate.HasValue)
            {
                param.ld = new DateTime?(param.FirstDate.Value.AddDays((double) Settings.ExcursionCheckAvailabilityDays));
            }
            ExcursionExtendedDescriptionList list = new ExcursionExtendedDescriptionList();

            List<ExcursionDescription> list2 = ExcursionProvider.GetDescription(param.Language, param.Excursions);

            foreach (ExcursionDescription description in list2)
            {
                ExcursionExtendedDescription item = new ExcursionExtendedDescription(description);
                if ((description != null) && (description.excursion != null))
                {
                    item.categorygroups = ExcursionProvider.BuildDescriptionCategories(description.excursion);
                    item.excursiondates = ExcursionProvider.GetDates(partner.id, description.excursion.id, param.FirstDate.Value, param.LastDate.Value);
                    item.ranking = CatalogDescriptionExcursionRanking.Create(SurveyProvider.GetExcursionRanking(description.excursion.id, param.Language), param.Language);
                    item.surveynotes = ExcursionSurveyNote.Create(SurveyProvider.GetExcursionNotes(description.excursion.id));
                }

                int maxCheckCount = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["max_dates_check_places"]);

                foreach (ExcursionDate ed in item.excursiondates)
                {
                    if (ed.isprice)
                    {
                        if (--maxCheckCount < 0) break;

                        var price = ExcursionProvider.GetPrice(param.Language, partner.id, description.excursion.id, ed.date, null);

                        if ((price.Count > 0) && (price[0].totalseats >= 0) && (!price[0].freeseats.HasValue))
                            ed.isstopsale = true;
                    }
                }
                list.Add(item);
            }

            return list;
        }