public IHttpActionResult Get(Guid formTemplateId)
        {
            if (formTemplateId == Guid.Empty)
            {
                return(BadRequest("form template id is empty"));
            }

            var cacheKey   = $"{CACHE_KEY}_{formTemplateId}";
            var cacheEntry = MemoryCacher.GetValue(cacheKey);

            if (cacheEntry == null)
            {
                var surveyProvider = new SurveyProvider(CurrentOrgUser, UnitOfWork, onlyPublished: false);
                var metricGroups   = surveyProvider.GetFormTemplate(formTemplateId)
                                     .MetricGroups
                                     .Select(m => Mapper.Map <MetricGroupDTO>(m))
                                     .ToList();

                MemoryCacher.Add(cacheKey, metricGroups, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Ok(metricGroups));
            }
            else
            {
                var result = (List <MetricGroupDTO>)cacheEntry;
                return(new CachedResult <List <MetricGroupDTO> >(result, TimeSpan.FromMinutes(1), this));
            }
        }
        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);
        }
        private FormTemplate GetFormTemplate(Guid id)
        {
            var surveyProvider = new SurveyProvider(CurrentOrgUser, UnitOfWork, onlyPublished: false);

            return(surveyProvider
                   .GetAllFormTemplates()
                   .SingleOrDefault(f => f.Id == id));
        }
 public ActionResult AddRating(int?id)
 {
     if (Settings.IsAddRankingEnabled && id.HasValue)
     {
         List <ExcursionDescription> description = ExcursionProvider.GetDescription(UrlLanguage.CurrentLanguage, new int[] { id.Value });
         if ((description != null) && (description.Count == 1))
         {
             ExcursionInvitation invitation = SurveyProvider.CreateInvitation(id.Value, description[0].excursion.name, UrlLanguage.CurrentLanguage);
             if (invitation != null)
             {
                 return(base.RedirectToAction("index", "survey", new { id = invitation.AccessCode }));
             }
         }
     }
     return(base.RedirectToAction("index"));
 }
示例#5
0
 public ActionResult Index(SurveyResultsModel model)
 {
     if (model == null)
     {
         throw new ArgumentNullException("model");
     }
     if (SurveyProvider.GetInvitationInfo(model.accesscode) == null)
     {
         ((dynamic)base.ViewBag).NotFound = true;
     }
     else
     {
         SurveyProvider.SetSurveyResult(model);
         ((dynamic)base.ViewBag).Thanks = true;
     }
     return(base.View());
 }
        public CatalogResult Catalog([FromUri] CatalogParam param)
        {
            if (param == null)
            {
                throw new System.ArgumentNullException("param");
            }

            if (param.dp != null)
            {
                param.d = null;
            }

            WebPartner partner = UserToolsProvider.GetPartner(param);

            if (!param.StartPoint.HasValue && param.StartPointAlias != null)
            {
                param.sp = new int?(CatalogProvider.GetGeoPointIdByAlias(param.StartPointAlias));
            }
            ExcursionProvider.ExcursionSorting sorting = (!string.IsNullOrEmpty(param.SortOrder)) ? ((ExcursionProvider.ExcursionSorting)System.Enum.Parse(typeof(ExcursionProvider.ExcursionSorting), param.SortOrder)) : ExcursionProvider.ExcursionSorting.name;

            //получить id экскурсий в регионе

            //фильтровать по id

            CatalogResult result = new CatalogResult();

            result.excursions = ExcursionProvider.FindExcursions(param.Language, partner.id, param.FirstDate, param.LastDate, param.SearchLimit, param.StartPoint, param.SearchText, param.Categories, param.Departures, (param.Destinations != null && param.Destinations.Length > 0) ? param.Destinations : (param.DestinationState.HasValue ? new int[]
            {
                param.DestinationState.Value
            } : null), param.ExcursionLanguages, param.MinDuration, param.MaxDuration, new ExcursionProvider.ExcursionSorting?(sorting), param.WithoutPrice);
            System.Collections.Generic.Dictionary <int, ExcursionRank> rankings = SurveyProvider.GetExcursionsRanking((
                                                                                                                          from m in result.excursions
                                                                                                                          select m.excursion.id).ToList <int>(), param.Language);

            foreach (CatalogExcursionMinPrice excursion in result.excursions)
            {
                ExcursionRank rank = null;
                if (rankings.TryGetValue(excursion.excursion.id, out rank))
                {
                    excursion.ranking = CatalogExcursionRanking.Create(rank, param.Language);
                }
            }
            return(result);
        }
        public IHttpActionResult Get(Guid formTemplateId, Guid id)
        {
            if (formTemplateId == Guid.Empty)
            {
                return(BadRequest("form template id is empty"));
            }

            if (id == Guid.Empty)
            {
                return(Ok(Mapper.Map <MetricGroupDTO>(new MetricGroup()
                {
                    FormTemplateId = formTemplateId
                })));
            }

            var cacheKey   = $"{CACHE_KEY}_{formTemplateId}_{id}";
            var cacheEntry = MemoryCacher.GetValue(cacheKey);

            if (cacheEntry == null)
            {
                var surveyProvider = new SurveyProvider(CurrentOrgUser, UnitOfWork, onlyPublished: false);
                var group          = surveyProvider.GetFormTemplate(formTemplateId)
                                     .MetricGroups
                                     .Where(g => g.Id == id)
                                     .Select(g => Mapper.Map <MetricGroupDTO>(g))
                                     .SingleOrDefault();

                if (group == null)
                {
                    return(NotFound());
                }

                MemoryCacher.Add(cacheKey, group, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Ok(group));
            }
            else
            {
                var result = (MetricGroupDTO)cacheEntry;
                return(new CachedResult <MetricGroupDTO>(result, TimeSpan.FromMinutes(1), this));
            }
        }
示例#8
0
        public ActionResult Index(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                ((dynamic)base.ViewBag).NotFound = true;
            }
            InvitationInfo invitationInfo = SurveyProvider.GetInvitationInfo(id);

            if (invitationInfo == null)
            {
                ((dynamic)base.ViewBag).NotFound = true;
            }
            else
            {
                ((dynamic)base.ViewBag).Invitation = invitationInfo;
                if (invitationInfo.CanSurvey)
                {
                    ((dynamic)base.ViewBag).Questionnaire = SurveyProvider.GetQuestionnaire(invitationInfo.ObjectType, invitationInfo.Language);
                }
            }
            return(base.View());
        }
        public IHttpActionResult Delete(Guid formTemplateId, Guid id)
        {
            if (formTemplateId == Guid.Empty)
            {
                return(BadRequest("form template id is empty"));
            }

            if (id == Guid.Empty)
            {
                return(BadRequest("metric group id is empty"));
            }

            var surveyProvider = new SurveyProvider(CurrentOrgUser, UnitOfWork, false);

            var group = surveyProvider.GetFormTemplate(formTemplateId)
                        .MetricGroups
                        .Where(g => g.Id == id)
                        .SingleOrDefault();

            if (group == null)
            {
                return(NotFound());
            }

            try
            {
                UnitOfWork.MetricGroupsRepository.Delete(group);
                UnitOfWork.Save();

                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        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);
        }