protected override void Process(LinqExtender.Interface.IModify <Tag> items)
        {
            object      tagList     = Bucket.Instance.For.Item(TagColums.ListMode).Value;
            TagListMode tagListMode = tagList == null ? TagListMode.Popular : (TagListMode)tagList;


            if (tagListMode == TagListMode.Popular)
            {
                object    tagsPeriod = Bucket.Instance.For.Item(TagColums.Period).Value;
                TagPeriod period     = tagsPeriod == null ? TagPeriod.Day : (TagPeriod)tagsPeriod;

                int score = Convert.ToInt32(Bucket.Instance.For.Item(TagColums.Score).Value ?? "0");

                int count = (int)Bucket.Instance.For.Item(TagColums.Count).Value;

                if (count > 200)
                {
                    throw new Exception("Tag count should be less than 200");
                }

                using (ITagRepository tagRepositoryRepo = repositoryFactory.CreateTagRepository())
                {
                    IEnumerable <Tag> tags = tagRepositoryRepo.GetPopularTags(period, count);
                    // do the filter on score.

                    if (score > 0)
                    {
                        tags = tags.Where(tag => tag.Score == score).Select(tag => tag);
                    }

                    items.AddRange(tags, true);
                }
            }
            else
            {
                object photoId = Bucket.Instance.For.Item(TagColums.PhotoId).Value;

                if (photoId == null)
                {
                    throw new Exception("Must provide a valid photoId");
                }

                using (ITagRepository tagRepositoryRepo = repositoryFactory.CreateTagRepository())
                {
                    items.AddRange(tagRepositoryRepo.GetTagsForPhoto((string)photoId));
                }
            }
        }
Beispiel #2
0
        IEnumerable<Tag> ITagRepository.GetPopularTags(TagPeriod period, int count)
        {
            IList<Tag> list = new List<Tag>();

            string method = Helper.GetExternalMethodName();
            string requestUrl = BuildUrl(method, "period", period.ToString().ToLower(), "count", count.ToString());

            XmlElement element = elementProxy.GetResponseElement(requestUrl);

            foreach (var xmlElement in element.Descendants("tag"))
            {
                Tag tag = new Tag(XmlToObject<PopularTag>.Deserialize(xmlElement.OuterXml));

                tag.Period = period;
                tag.Count = count;

                list.Add(tag);
            }
            return list;
        }
        IEnumerable <Tag> ITagRepository.GetPopularTags(TagPeriod period, int count)
        {
            IList <Tag> list = new List <Tag>();

            string method     = Helper.GetExternalMethodName();
            string requestUrl = BuildUrl(method, "period", period.ToString().ToLower(), "count", count.ToString());

            XmlElement element = elementProxy.GetResponseElement(requestUrl);

            foreach (var xmlElement in element.Descendants("tag"))
            {
                Tag tag = new Tag(XmlToObject <PopularTag> .Deserialize(xmlElement.OuterXml));

                tag.Period = period;
                tag.Count  = count;

                list.Add(tag);
            }
            return(list);
        }