Beispiel #1
0
        private IEnumerable <Post> FilterAndSortPosts(PostFilter filter, Func <Post, bool> predicate)
        {
            IEnumerable <Post> filteredSortedCollection;
            // Параметры сортировки
            string sortField = filter.SortField ?? "Default";
            string order     = filter.SortOrder ?? "Asc";
            // Компараторы сортировки по возрастанию или по убыванию
            IComparer <string> stringComparer = Comparer <string> .Create((x, y) => order.Equals("Asc")?(x ?? "").CompareTo(y ?? "") : (y ?? "").CompareTo(x ?? ""));

            IComparer <double> doubleComparer = Comparer <double> .Create((x, y) => order.Equals("Asc")?x.CompareTo(y) : y.CompareTo(x));

            IComparer <int> intComparer = Comparer <int> .Create((x, y) => order.Equals("Asc")?x.CompareTo(y) : y.CompareTo(x));

            switch (sortField)
            {
            case "DepartmentCode": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Department.Code, intComparer); break;

            case "DepartmentName": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Department.DepartmentName, stringComparer); break;

            case "PostTitle":      filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Title, stringComparer); break;

            case "NumberOfUnits":  filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.NumberOfUnits, intComparer); break;

            case "Salary":         filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Salary, doubleComparer); break;

            case "Premium":        filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Premium, doubleComparer); break;

            case "TotalSalary":    filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => (p.Salary + p.Premium) * p.NumberOfUnits, doubleComparer); break;

            default:               filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Title); break;
            }
            return(filteredSortedCollection);
        }
Beispiel #2
0
        public static Task <BaseResponse <Post> > GetQuestions(PostFilter postFilter, PostSortBy sort, int page, string tag = null)
        {
            string url = "questions{0}?order=desc&filter={1}";

            if (tag != null)
            {
                url += "&tagged=" + HttpUtility.UrlEncode(tag);
            }

            string postFilterStr = "";

            if (postFilter != PostFilter.normal)
            {
                string val = postFilter.ToString();
                if (postFilter == PostFilter.noanswers)
                {
                    val = "no-answers";
                }

                postFilterStr = "/" + val;
            }

            url = string.Format(url, postFilterStr, questionsListFilter);

            return(GetResponse <Post>(url, psort: sort, page: page));
        }
Beispiel #3
0
        private string GetWhereClause(PostFilter filter)
        {
            if (filter == null)
            {
                return("");
            }

            List <string> conditions = new List <string>();

            if (filter.PostId.HasValue)
            {
                conditions.Add("P.[PostId] = " + filter.PostId.Value);
            }
            if (filter.StartTime.HasValue)
            {
                conditions.Add("P.[Timestamp] >= '" + filter.StartTime.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'");
            }
            if (filter.EndTime.HasValue)
            {
                conditions.Add("P.[Timestamp] <= '" + filter.EndTime.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'");
            }

            if (!conditions.Any())
            {
                return("");
            }

            return(" WHERE " + string.Join(" AND ", conditions));
        }
Beispiel #4
0
        public override bool StepExecute(int operatorUserID, string param, ref long offset, ref int totalCount, ref int finishedCount, out string title, out bool isLastStep)
        {
            StringList paramData = StringList.Parse(param);

            PostFilter filter = PostFilter.Parse(paramData[0]);

            AuthUser operatorUser = UserBO.Instance.GetAuthUser(operatorUserID);

            int stepCount;

            if (PostBOV5.Instance.ApproveSearchPosts(operatorUser, filter, stepApproveCount, out stepCount)) // .DeleteDoingsBySearch(filter, 200);
            {
                finishedCount += stepCount;

                isLastStep = stepCount < stepApproveCount;

                title = "正在审核回复,总数 " + totalCount + ",已审核 " + finishedCount;

                return(true);
            }
            else
            {
                isLastStep = false;

                title = "发生错误";

                return(false);
            }
        }
Beispiel #5
0
        public DeviceSettings(RFIDReader rfid)
        {
            _Parser = new ConfigParser();
            _ReaderAPI = rfid;
            setDefaults();

            //Construct access/post filter with no limit
            _Range = new RssiRangeFilter();
            _AccessFilter = new AccessFilter();
            _AccessFilter.UseRSSIRangeFilter = true;
            _AccessFilter.RssiRangeFilter = _Range;
            _PostFilter = new PostFilter();
            _PostFilter.UseRSSIRangeFilter = true;
            _PostFilter.RssiRangeFilter = _Range;

            //Will trigger inventory with trigger button
            _TriggerInfo = new TriggerInfo();
            _TriggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
            _TriggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
            _TriggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
            _TriggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;

            //Read user membank sequence
            _Op = new TagAccess.Sequence.Operation();
            _Op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
            _Op.ReadAccessParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER;
            _Op.ReadAccessParams.ByteCount = 4;
            _Op.ReadAccessParams.ByteOffset = 0;
            _Op.ReadAccessParams.AccessPassword = 0;
        }
Beispiel #6
0
        public override void SearchMCS(bool shouldMatchBonds)
        {
            IList <IReadOnlyList <int> > mappings = null;

            try
            {
                if (source.Atoms.Count >= target.Atoms.Count)
                {
                    mappings = MCSPlus.GetOverlaps(source, target, shouldMatchBonds);
                }
                else
                {
                    flagExchange = true;
                    mappings     = MCSPlus.GetOverlaps(target, source, shouldMatchBonds);
                }
                PostFilter.Filter(mappings);
                SetAllMapping();
                SetAllAtomMapping();
                SetFirstMapping();
                SetFirstAtomMapping();
            }
            catch (CDKException)
            {
                mappings = null;
            }
        }
Beispiel #7
0
        public DeviceSettings(RFIDReader rfid)
        {
            _Parser    = new ConfigParser();
            _ReaderAPI = rfid;
            setDefaults();

            //Construct access/post filter with no limit
            _Range        = new RssiRangeFilter();
            _AccessFilter = new AccessFilter();
            _AccessFilter.UseRSSIRangeFilter = true;
            _AccessFilter.RssiRangeFilter    = _Range;
            _PostFilter = new PostFilter();
            _PostFilter.UseRSSIRangeFilter = true;
            _PostFilter.RssiRangeFilter    = _Range;

            //Will trigger inventory with trigger button
            _TriggerInfo = new TriggerInfo();
            _TriggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
            _TriggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
            _TriggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
            _TriggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;

            //Read user membank sequence
            _Op = new TagAccess.Sequence.Operation();
            _Op.AccessOperationCode             = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
            _Op.ReadAccessParams.MemoryBank     = MEMORY_BANK.MEMORY_BANK_USER;
            _Op.ReadAccessParams.ByteCount      = 4;
            _Op.ReadAccessParams.ByteOffset     = 0;
            _Op.ReadAccessParams.AccessPassword = 0;
        }
Beispiel #8
0
        public void Config()
        {
            List <ArticleDestinationItem> listArticleDestination = new List <ArticleDestinationItem>();
            List <string> listTopics = new List <string>()
            {
                "5d247a04eff1030d7c5209a3"
            };

            listArticleDestination.Add(new ArticleDestinationItem()
            {
                Id   = "5d247a04eff1030d7c520a2k4",
                Name = "articleDestinationItemName"
            });

            Author author = new Author()
            {
                Id           = "5d247a04eff1030d7c520a287",
                DisplayName  = "authorName",
                ProfileImage = "profileImage"
            };

            post = new Post()
            {
                Id           = "5d247a04eff1030d7c5209a1",
                AuthorId     = "5d247a04eff1030d7c520a2m32",
                CommentCount = 0,
                Content      = "content",
                IsActive     = true,
                IsPublic     = true,
                CoverImage   = "coverImage",
                LikeCount    = 0,
                PostType     = "article",
                Title        = "title",
                liked        = false,
                PubDate      = DateTime.Parse("2019-04-05"),
                Author       = author
            };

            article = new Article()
            {
                Id           = "5d247a04eff1030d7c5209a0",
                PostId       = "5d247a04eff1030d7c5209a1",
                Destinations = listArticleDestination,
                Post         = post,
                Topics       = listTopics
            };

            postFilter = new PostFilter()
            {
                LocationId = "5d247a04eff1030d7c520123",
                Search     = "ha noi",
                TimePeriod = "Tuan qua",
                Topics     = listTopics
            };

            mockArticleService = new Mock <IArticleService>();
            mockPostService    = new Mock <IPostService>();
        }
        BaseResponse <Post> IPosts.GetAllPosts(PostFilter filters)
        {
            var apiParams = filters.GetQueryParams();
            var url       = $"{_baseApiUrl}/posts?key={_apiKey}&{apiParams}";
            var response  = _httpClient.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
            var apiResult = response.DeserializeJson <Data <Post> >().ValidateApiResponse();

            return(apiResult);
        }
Beispiel #10
0
        public Uri GetPostsPageUri(PostFilter filter = null)
        {
            string endpoint = "api/posts";
            NameValueCollection parameters = null;

            if (filter is not null)
            {
                parameters = new()
                {
Beispiel #11
0
 public ChildData GetRandomPasta(PostFilter postFilter = PostFilter.TOP)
 {
     return(GetPosts(postFilter, 100).Data.Children
            .AsEnumerable()
            .Select(c => c.Data)
            .Where(d => d.Selftext.Length > 0 && d.Selftext.Length <= CharacterLimit)
            .RandomShuffle()
            .FirstOrDefault());
 }
        public IEnumerable <Article> GetRecommendArticles(PostFilter postFilter, UserInfo userInfo, int page)
        {
            // TODO: Get UserInfo
            GetUserTopics(userInfo);
            GetFollowings(userInfo);

            // TODO: Query Db
            return(_articleRepository.GetRecommendArticles(postFilter, userInfo, page));
        }
        private static QueryContainer AddListsIfNotEmpty(this QueryContainer query, PostFilter postFilter)
        {
            if (postFilter.Authors != null && postFilter.Authors.Count() > 0)
            {
                return(query && Query <Post> .Terms(t => t.Field(f => f.Lists).Terms(postFilter.Lists)));
            }

            return(query);
        }
 public static QueryContainer CreateQuery(this PostFilter filter)
 {
     return(Query <Post> .MatchAll()
            .AddTextualFilterIfNotEmpty(filter)
            .AddNetworkIfNotEmpty(filter)
            .AddAuthorsIfNotEmpty(filter)
            .AddListsIfNotEmpty(filter)
            .AddDateIfAvailable(filter));
 }
Beispiel #15
0
        public IEnumerable <PostDto> GetPosts(PostFilter filter = null)
        {
            IQueryable <Post> postQuery = _context.Posts;

            postQuery = ApplyFiltering(postQuery, filter);
            var posts = postQuery.Take(10).ToList();

            return(Mapper.Map <IEnumerable <PostDto> >(posts));
        }
Beispiel #16
0
 /// <summary>
 /// Asynchronously gets a list of posts
 /// </summary>
 /// <param name="filter">A Post Filter</param>
 /// <returns>Post[]</returns>
 public async Task <Post[]> GetPostsAsync(PostFilter filter)
 {
     return(await Task.Factory.FromAsync
            (
                WordPressService.BeginGetPosts(WordPressSiteConfig.BlogId, WordPressSiteConfig.Username,
                                               WordPressSiteConfig.Password, filter),
                WordPressService.EndGetPosts
            ));
 }
Beispiel #17
0
        public void Start()
        {
            try
            {
                string info = "tatus:start";
                LogService.Info(TAG, info);

                if (rfidReader == null || rfidReader.IsConnected == false)
                {
                    rfidReader.Connect();
                    IsConnect = rfidReader.IsConnected;

                    // 1、阅读器事件配置
                    rfidReader.Events.NotifyInventoryStartEvent    = true;
                    rfidReader.Events.NotifyAccessStartEvent       = true;
                    rfidReader.Events.NotifyAccessStopEvent        = true;
                    rfidReader.Events.NotifyInventoryStopEvent     = true;
                    rfidReader.Events.NotifyAntennaEvent           = true;
                    rfidReader.Events.NotifyBufferFullWarningEvent = true;
                    rfidReader.Events.NotifyBufferFullEvent        = true;
                    rfidReader.Events.NotifyGPIEvent = true;
                    rfidReader.Events.NotifyReaderDisconnectEvent = true;
                    rfidReader.Events.NotifyReaderExceptionEvent  = true;
                    // 不通知tag读到事件,改由扫描按钮松开时,获取读到的标签信息
                    rfidReader.Events.AttachTagDataWithReadEvent = false;
                    // 注册扫描枪状态变化事件
                    rfidReader.Events.StatusNotify += new Events.StatusNotifyHandler(Events_StatusNotify);

                    // 2、rssi值过滤配置,此处取最大最小值,因此没有过滤作用
                    PostFilter posFilter = new PostFilter();
                    posFilter.UseRSSIRangeFilter                 = true;
                    posFilter.RssiRangeFilter.MatchRange         = MATCH_RANGE.WITHIN_RANGE;
                    posFilter.RssiRangeFilter.PeakRSSILowerLimit = -128;
                    posFilter.RssiRangeFilter.PeakRSSIUpperLimit = 127;

                    // 3、扫描按钮信息配置
                    TriggerInfo triggerInfo = new TriggerInfo();
                    // 此参数配置为0,扫描枪在接收到扫描按钮松开事件后,停止扫描
                    triggerInfo.TagReportTrigger  = 0;
                    triggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
                    triggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
                    // 当扫描按钮松开后,经过一段时间出发扫描枪停止扫描事件(不过这里超时时间设为0,没有起到延迟触发事件的效果)
                    triggerInfo.StopTrigger.Type                   = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
                    triggerInfo.StopTrigger.Handheld.Timeout       = 0;
                    triggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;

                    // 4、执行1、2、3的配置
                    rfidReader.Actions.Inventory.Perform(posFilter, triggerInfo, null);
                }
            }
            catch (Exception ex)
            {
                Message = "无法正常打开阅读器";
                LogService.Error(TAG, ex.Message);
            }
        }
Beispiel #18
0
        static void Main(string[] args)
        {
            // блоги с фильтром
            Console.WriteLine();
            Console.WriteLine($"Все блоги от авторов с именем Ni* с кол-вом постов > 30 :");
            var blogSvc = new BlogService();
            var filter  = new BlogFilter()
            {
                UserName             = "******",
                PostCountGreaterThen = 20
            };

            var blogs = blogSvc.GetBlogList(filter);

            PrintBlogs(blogs);

            Console.WriteLine();
            Console.WriteLine($"Блоги в которых были посты за последнюю неделю :");
            filter = new BlogFilter()
            {
                HasPostLaterThen = DateTime.Now.AddDays(-7)
            };

            var count = blogSvc.GetBlogCount(filter);

            Console.WriteLine($"Количество : {count}");

            // посты с фильтром и сортироовкой
            var postSvc = new PostService();

            Console.WriteLine();
            Console.WriteLine($"Все посты в блоге №1, с 2015, сортировка по дате: ");
            var postFilter = new PostFilter()
            {
                BlogId            = 1,
                PostDateLaterThen = new DateTime(2015, 1, 1)
            };

            var posts = postSvc.GetBlogPosts(postFilter);

            PrintPosts(posts);

            // получение статистики по блогам кастомным запросом
            Console.WriteLine();
            Console.WriteLine("Статистика по постам #1,2,3:");
            var stastFilter = new List <int>()
            {
                1, 2, 3
            };
            var stats = blogSvc.GetBlogStats(stastFilter)
                        .GetAwaiter().GetResult();

            PrintStats(stats);

            Console.ReadKey();
        }
Beispiel #19
0
        BaseResponse <Post> IPosts.GetAllPosts(PostFilter filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Posts)
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse();

            return(response);
        }
Beispiel #20
0
        // Получение списка должностей по фильтру
        public virtual IEnumerable <PostDTO> Get(PostFilter filter)
        {
            Func <Post, bool>  predicate = CreatePredicate(filter);
            IEnumerable <Post> filteredSortedCollection = FilterAndSortPosts(filter, predicate);

            InitializeMapper();
            IEnumerable <PostDTO> collection = Mapper.Map <IEnumerable <Post>, IEnumerable <PostDTO> >(filteredSortedCollection);

            return(collection);
        }
        public void Config()
        {
            virtualTripItem = new VirtualTripItem()
            {
                Icon             = "icon",
                FormattedAddress = "Ha Long",
                Image            = "image",
                Latitude         = 12,
                LocationId       = "5d07d847a2c5f845707dc6x4",
                Longitude        = 15,
                Name             = "item1",
                Note             = ""
            };
            List <VirtualTripItem> virtualTripItems = new List <VirtualTripItem>();

            virtualTripItems.Add(virtualTripItem);

            post = new Post()
            {
                Id           = "5d07d847a2c5f845707dc69a",
                Content      = "<p>Post Test</p>",
                AuthorId     = "5d0b2b0b1c9d440000d8e9a1",
                CommentCount = 0,
                IsActive     = true,
                IsPublic     = true,
                LikeCount    = 0,
                CoverImage   = @"https://storage.googleapis.com/trip-sharing-final-image-bucket/image-201907131748509069-dy8beuyj1kfgwx98.png",
                PostType     = "article",
                PubDate      = DateTime.Now,
                liked        = false,
                Title        = "Post Test"
            };
            List <string> listTopics = new List <string>()
            {
                "5d247a04eff1030d7c5209a3"
            };

            postFilter = new PostFilter()
            {
                LocationId = "5sd239asdd8fass7",
                Search     = "ha noi",
                TimePeriod = "Tuan qua",
                Topics     = listTopics
            };
            virtualTrip = new VirtualTrip()
            {
                Id     = "a6sfa7fafaf65fa58fa7f",
                PostId = "asf7f6af9sfafaf7af0aaf",
                Post   = post,
                Items  = virtualTripItems
            };

            mockVirtualTripService = new Mock <IVirtualTripService>();
            mockPostService        = new Mock <IPostService>();
        }
Beispiel #22
0
 public override void Redo()
 {
     undostate = true;
     if (redoStack.Count != 0)
     {
         PostFilter redoFilter = redoStack.Pop();
         undoStack.Push(redoFilter);
         redoFilter.Apply();
     }
     undostate = false;
 }
        public static string GetString(this PostFilter postFilter)
        {
            string value;

            if (mapping.TryGetValue(postFilter, out value))
            {
                return(value);
            }

            return(null);
        }
        public IEnumerable <Post> Browse(PostFilter filter)
        {
            IEnumerable <Post> posts = _postRepository.Browse(filter);

            foreach (Post post in posts.Where(p => p.Image != null))
            {
                byte[] imageData = _fileRepository.Get(post.Image.FileName);
                post.Image.Data = imageData;
            }
            return(posts);
        }
Beispiel #25
0
        public ActionResult Index(PostFilter filter, string filterAsJsonString, int page = 1)
        {
            if (filterAsJsonString != null)
            {
                filter = System.Web.Helpers.Json.Decode <PostFilter>(filterAsJsonString);
            }
            IEnumerable <PostDTO> pDto = (_postService as PostService).Get(filter);  // Filter
            int    totalNumberOfUnits  = pDto.Sum(p => p.NumberOfUnits).Value;
            double totalSalary         = pDto.Sum(p => p.TotalSalary);

            pDto = _postService.GetPage(pDto, page);     // Paging
            Mapper.Initialize(cfg => {
                cfg.CreateMap <PostDTO, PostViewModel>()
                .ForMember(p => p.Employees, opt => opt.Ignore());
                cfg.CreateMap <DepartmentDTO, DepartmentViewModel>()
                .ForMember(d => d.Posts, opt => opt.Ignore());
            });
            IEnumerable <PostViewModel> posts = Mapper.Map <IEnumerable <PostDTO>, IEnumerable <PostViewModel> >(pDto);
            PostListViewModel           model = new PostListViewModel {
                Posts               = posts,
                Filter              = filter,
                PageInfo            = _postService.PageInfo,
                NumberOfUnitsOnPage = pDto.Sum(p => p.NumberOfUnits).Value,
                SalaryOnPage        = pDto.Sum(p => p.TotalSalary),
                TotalNumberOfUnits  = totalNumberOfUnits,
                TotalSalary         = totalSalary
            };

            if (Request.Headers["X-Requested-With"] == "XMLHttpRequest")
            {
                _logger.Info("Executed async request");
                var transformModel = new {
                    Posts = model.Posts.Select(p => new {
                        p.Id,
                        DepartmentCode = p.Department.Code,
                        DepartmentName = p.Department.DepartmentName,
                        p.Title,
                        p.NumberOfUnits,
                        p.Salary,
                        p.Premium,
                        p.TotalSalary
                    }).ToArray(),
                    model.Filter,
                    model.PageInfo,
                    model.NumberOfUnitsOnPage,
                    model.SalaryOnPage,
                    model.TotalNumberOfUnits,
                    model.TotalSalary
                };
                return(Json(transformModel, JsonRequestBehavior.AllowGet));
            }
            _logger.Info("Executed sync request");
            return(View("Index", model));
        }
Beispiel #26
0
        BaseResponse <Post> IPosts.GetRevisionsByIds(List <string> ids, PostFilter filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Posts)
                      .WithFilter(filters)
                      .WithIds(ids, "revisions")
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse();

            return(response);
        }
Beispiel #27
0
        public Posts GetPosts(PostFilter postFilter = PostFilter.TOP, int limit = 100)
        {
            var request = new RestRequest("r/copypasta/" + postFilter.GetString() + ".json", Method.GET);

            request.AddQueryParameter("limit", limit.ToString());
            request.AddQueryParameter("t", "all");

            var response = client.Execute(request);

            return(Posts.FromJson(response.Content));
        }
        public IEnumerable<Post> Find(int page, int size, PostFilter filter = null)
        {
            var builder = new SqlBuilder();
            var selector = builder.AddTemplate(PostQuery.GetManyPosts());
            
            if(filter != null)
            {
                builder.Where(SqlFilterGenerator.GenerateSql(filter));
            }

            return this.connection.Query<Post>(PostQuery.GetManyPosts(), new { PageIndex = page - 1, PageSize = size }, this.transaction);
        }
        public IActionResult GetRecommendArticles([FromBody] PostFilter postFilter, [FromQuery] int page)
        {
            UserInfo userInfo = new UserInfo();
            var      identity = User.Identity as ClaimsIdentity;
            var      userId   = identity.FindFirst("user_id").Value;

            userInfo.Id = userId;

            IEnumerable <Article> articles = _articleService.GetRecommendArticles(postFilter, userInfo, page);

            return(Ok(articles));
        }
Beispiel #30
0
        private void ApprovedSearchResult()
        {
            PostFilter filter = PostForm;//TopicFilter.GetFromFilter("filter");

            StringList param = new StringList();

            param.Add(filter.ToString());

            if (TaskManager.BeginTask(MyUserID, new ApprovePostTask(), param.ToString()))
            {
            }
        }
        BaseResponse <Post> IPosts.GetRevisionsByIds(List <string> ids, PostFilter filters)
        {
            var apiParams   = filters.GetQueryParams();
            var url         = $"{_baseApiUrl}/posts/";
            var idsToEncode = string.Join(";", ids.ToArray());

            url = url + $"{HttpUtility.UrlEncode(idsToEncode)}/revisions" + $"?key={_apiKey}&{apiParams}";
            var response  = _httpClient.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
            var apiResult = response.DeserializeJson <Data <Post> >().ValidateApiResponse();

            return(apiResult);
        }
        private void accessFilterButton_Click(object sender, EventArgs e)
        {
            string exceptionMsg = "TagPatternA BitOffset:";
            try
            {
                if (m_AppForm.m_ReaderAPI.IsConnected && userFilter_CB.Checked)
                {
                    if (null == m_PostFilter)
                    {
                        m_PostFilter = new Symbol.RFID3.PostFilter();
                    }
                    m_PostFilter.MatchPattern = (MATCH_PATTERN)matchPattern_CB.SelectedIndex;

                    /*
                     *  Tag Pattern A
                     */
                    m_PostFilter.TagPatternA.MemoryBank = (MEMORY_BANK)memBank_CB1.SelectedIndex;
                    m_PostFilter.TagPatternA.BitOffset = ushort.Parse(offset_TB1.Text);

                    exceptionMsg = "TagPatternA Mask:";
                    ushort maskLengthA = (ushort)(tagMask_TB1.Text.Length / 2);
                    byte[] filterMaskA = new byte[maskLengthA];
                    for (int index = 0; index < maskLengthA; index++)
                    {
                        filterMaskA[index] = byte.Parse(tagMask_TB1.Text.Substring(index * 2, 2),
                            System.Globalization.NumberStyles.HexNumber);
                    }
                    m_PostFilter.TagPatternA.TagMask = filterMaskA;
                    m_PostFilter.TagPatternA.TagMaskBitCount = (uint)maskLengthA * 8;

                    exceptionMsg = "TagPatternA Pattern:";
                    ushort dataLengthA = (ushort)(MembankData_TB1.Text.Length / 2);
                    byte[] memoryBankDataA = new byte[dataLengthA];
                    for (int index = 0; index < dataLengthA; index++)
                    {
                        memoryBankDataA[index] = byte.Parse(MembankData_TB1.Text.Substring(index * 2, 2),
                            System.Globalization.NumberStyles.HexNumber);
                    }
                    m_PostFilter.TagPatternA.TagPattern = memoryBankDataA;
                    m_PostFilter.TagPatternA.TagPatternBitCount = (uint)dataLengthA * 8;

                    if (m_PostFilter.MatchPattern != MATCH_PATTERN.A)
                    {
                        /*
                         *  Tag Pattern B
                         */
                        exceptionMsg = "TagPatternB BitOffset:";
                        m_PostFilter.TagPatternB.MemoryBank = (MEMORY_BANK)memBank_CB2.SelectedIndex;
                        m_PostFilter.TagPatternB.BitOffset = ushort.Parse(offset_TB2.Text);

                        ushort maskLengthB = (ushort)(tagMask_TB2.Text.Length / 2);
                        byte[] filterMaskB = new byte[maskLengthB];
                        exceptionMsg = "TagPatternB Mask:";
                        for (int index = 0; index < maskLengthB; index++)
                        {
                            filterMaskB[index] = byte.Parse(tagMask_TB2.Text.Substring(index * 2, 2),
                                System.Globalization.NumberStyles.HexNumber);
                        }
                        m_PostFilter.TagPatternB.TagMask = filterMaskB;
                        m_PostFilter.TagPatternB.TagMaskBitCount = (uint)maskLengthB * 8;

                        ushort dataLengthB = (ushort)(MembankData_TB2.Text.Length / 2);
                        byte[] memoryBankDataB = new byte[dataLengthB];
                        exceptionMsg = "TagPatternB Pattern:";
                        for (int index = 0; index < dataLengthB; index++)
                        {
                            memoryBankDataB[index] = byte.Parse(MembankData_TB2.Text.Substring(index * 2, 2),
                                System.Globalization.NumberStyles.HexNumber);
                        }
                        m_PostFilter.TagPatternB.TagPattern = memoryBankDataB;
                        m_PostFilter.TagPatternB.TagPatternBitCount = (uint)dataLengthB * 8;
                    }
                }
                else if (!userFilter_CB.Checked)
                {
                    m_PostFilter = null;
                }
                this.Close();
            }
            catch (Exception ex)
            {
                this.m_AppForm.notifyUser(exceptionMsg + ex.Message, "Access Filter");
            }
        }
Beispiel #33
0
		/// <summary>
		/// Asynchronously retrieves submission posts.
		/// </summary>
		/// <remarks>
		/// See: http://www.tumblr.com/docs/en/api/v2#blog-submissions
		/// </remarks>
		/// <param name="blogName">
		/// The name of the blog for which to retrieve submission posts. 
		/// </param>
		/// <param name="startIndex">
		/// The post number to start at. Pass 0 to start from the first post.
		/// </param>
		/// <param name="filter">
		/// A <see cref="PostFilter"/> to apply.
		/// </param>
		/// <returns>
		/// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will
		/// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/>
		/// representing the error occurred during the call.
		/// </returns>
		/// <exception cref="ObjectDisposedException">
		/// The object has been disposed.
		/// </exception>
		/// <exception cref="ArgumentNullException">
		/// <paramref name="blogName"/> is <b>null</b>.
		///	</exception>
		/// <exception cref="ArgumentException">
		/// <paramref name="blogName"/> is empty.
		///	</exception>
		/// <exception cref="ArgumentOutOfRangeException">
		/// <paramref name="startIndex"/> is less than 0.
		///	</exception>
		/// <exception cref="InvalidOperationException">
		/// This <see cref="TumblrClient"/> instance does not have an OAuth token specified.
		/// </exception>
		public Task<BasePost[]> GetSubmissionPostsAsync(string blogName, long startIndex = 0, PostFilter filter = PostFilter.Html)
		{
			if (disposed)
				throw new ObjectDisposedException("TumblrClient");

			if (blogName == null)
				throw new ArgumentNullException("blogName");

			if (blogName.Length == 0)
				throw new ArgumentException("Blog name cannot be empty.", "blogName");

			if (startIndex < 0)
				throw new ArgumentOutOfRangeException("startIndex", "startIndex must be greater or equal to zero.");

			if (OAuthToken == null)
				throw new InvalidOperationException("GetSubmissionPostsAsync method requires an OAuth token to be specified.");

			MethodParameterSet parameters = new MethodParameterSet();
			parameters.Add("offset", startIndex);
			parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html");

			return CallApiMethodAsync<PostCollection, BasePost[]>(
				new BlogMethod(blogName, "posts/submission", OAuthToken, HttpMethod.Get, parameters),
				r => r.Posts,
				CancellationToken.None);
		}
Beispiel #34
0
		/// <summary>
		/// Asynchronously retrieves published posts from a blog.
		/// </summary>
		/// <remarks>
		/// See: http://www.tumblr.com/docs/en/api/v2#posts
		/// </remarks>
		/// <param name="blogName">
		/// The name of the blog.
		/// </param>
		/// <param name="startIndex">
		/// The offset at which to start retrieving the posts. Use 0 to start retrieving from the latest post.
		/// </param>
		/// <param name="count">
		/// The number of posts to retrieve. Must be between 1 and 20.
		/// </param>
		/// <param name="type">
		/// The <see cref="PostType"/> to retrieve.
		/// </param>
		/// <param name="includeReblogInfo">
		/// Whether or not to include reblog info with the posts.
		/// </param>
		/// <param name="includeNotesInfo">
		/// Whether or not to include notes info with the posts.
		/// </param>
		/// <param name="filter">
		/// A <see cref="PostFilter"/> to apply.
		/// </param>
		/// <param name="tag">
		/// A tag to filter by.
		/// </param>
		/// <returns>
		/// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will
		/// carry a <see cref="Posts"/> instance. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/>
		/// representing the error occurred during the call.
		/// </returns>
		/// <exception cref="ObjectDisposedException">
		/// The object has been disposed.
		/// </exception>
		/// <exception cref="ArgumentNullException">
		/// <paramref name="blogName"/> is <b>null</b>.
		/// </exception>
		/// <exception cref="ArgumentException">
		/// <paramref name="blogName"/> is empty.
		/// </exception>
		/// <exception cref="ArgumentOutOfRangeException">
		/// <list type="bullet">
		/// <item>
		///		<description>
		///			<paramref name="startIndex"/> is less than 0.
		///		</description>
		///	</item>
		///	<item>
		///		<description>
		///			<paramref name="count"/> is less than 1 or greater than 20.
		///		</description>
		///	</item>
		/// </list>
		/// </exception>
		public Task<Posts> GetPostsAsync(string blogName, long startIndex = 0, int count = 20, PostType type = PostType.All, bool includeReblogInfo = false, bool includeNotesInfo = false, PostFilter filter = PostFilter.Html, string tag = null)
		{
			if (disposed)
				throw new ObjectDisposedException("TumblrClient");

			if (blogName == null)
				throw new ArgumentNullException("blogName");

			if (blogName.Length == 0)
				throw new ArgumentException("Blog name cannot be empty.", "blogName");

			if (startIndex < 0)
				throw new ArgumentOutOfRangeException("startIndex", "startIndex must be greater or equal to zero.");

			if (count < 1 || count > 20)
				throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20.");

			string methodName = null;
			switch (type)
			{
				case PostType.Text: methodName = "posts/text"; break;
				case PostType.Quote: methodName = "posts/quote"; break;
				case PostType.Link: methodName = "posts/link"; break;
				case PostType.Answer: methodName = "posts/answer"; break;
				case PostType.Video: methodName = "posts/video"; break;
				case PostType.Audio: methodName = "posts/audio"; break;
				case PostType.Photo: methodName = "posts/photo"; break;
				case PostType.Chat: methodName = "posts/chat"; break;
				case PostType.All:
				default: methodName = "posts"; break;
			}

			MethodParameterSet parameters = new MethodParameterSet();
			parameters.Add("api_key", apiKey);
			parameters.Add("offset", startIndex, 0);
			parameters.Add("limit", count, 0);
			parameters.Add("reblog_info", includeReblogInfo, false);
			parameters.Add("notes_info", includeNotesInfo, false);
			parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html");
			parameters.Add("tag", tag);

			return CallApiMethodAsync<Posts>(
				new BlogMethod(blogName, methodName, null, HttpMethod.Get, parameters),
				CancellationToken.None);
		}
Beispiel #35
0
		/// <summary>
		/// Asynchronously retrieves posts that have been tagged with a specific <paramref name="tag"/>.
		/// </summary>
		/// <remarks>
		/// See: http://www.tumblr.com/docs/en/api/v2#m-up-tagged
		/// </remarks>
		/// <param name="tag">
		/// The tag on the posts to retrieve.
		/// </param>
		/// <param name="before">
		/// The timestamp of when to retrieve posts before. 
		/// </param>
		/// <param name="count">
		/// The number of posts to retrieve.
		/// </param>
		/// <param name="filter">
		/// A <see cref="PostFilter"/>.
		/// </param>
		/// <returns>
		/// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will
		/// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/>
		/// representing the error occurred during the call.
		/// </returns>
		/// <exception cref="ObjectDisposedException">
		/// The object has been disposed.
		/// </exception>
		/// <exception cref="ArgumentNullException">
		/// <paramref name="tag"/> is <b>null</b>.
		/// </exception>
		/// <exception cref="ArgumentException">
		/// <paramref name="tag"/> is empty.
		/// </exception>
		/// <exception cref="InvalidOperationException">
		/// This <see cref="TumblrClient"/> instance does not have an OAuth token specified.
		/// </exception>
		/// <exception cref="ArgumentOutOfRangeException">
		/// <paramref name="count"/> is less than 1 or greater than 20.
		/// </exception>
		public Task<BasePost[]> GetTaggedPostsAsync(string tag, DateTime? before = null, int count = 20, PostFilter filter = PostFilter.Html)
		{
			if (disposed)
				throw new ObjectDisposedException("TumblrClient");

			if (tag == null)
				throw new ArgumentNullException("tag");

			if (tag.Length == 0)
				throw new ArgumentException("Tag cannot be empty.", "tag");

			if (count < 1 || count > 20)
				throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20.");

			MethodParameterSet parameters = new MethodParameterSet();
			parameters.Add("api_key", apiKey);
			parameters.Add("tag", tag);
			parameters.Add("before", before.HasValue ? DateTimeHelper.ToTimestamp(before.Value).ToString() : null, null);
			parameters.Add("limit", count, 0);
			parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html");

			return CallApiMethodAsync<BasePost[]>(
				new ApiMethod("https://api.tumblr.com/v2/tagged", OAuthToken, HttpMethod.Get, parameters),
				CancellationToken.None,
				new JsonConverter[] { new PostArrayConverter() });
		}
Beispiel #36
0
        private string BuilderSearchPostCondition(PostFilter filter, IEnumerable<Guid> excludeRoleIDs, SqlQuery query, bool startWithWhere)
        {
            SqlConditionBuilder condition;
            if (startWithWhere)
                condition = new SqlConditionBuilder(SqlConditionStart.Where);
            else
                condition = new SqlConditionBuilder(SqlConditionStart.None);


            condition += (filter.ForumID == null ? "" : ("AND [ForumID] = @ForumID "));
            condition += "AND PostType <> 1 ";
            condition += (filter.UserID == null ? "" : ("AND [UserID] = @UserID "));
            condition += (filter.PostID == null ? "" : ("AND [PostID] = @PostID "));
            condition += (string.IsNullOrEmpty(filter.CreateIP) ? "" : ("AND [IPAddress] = @CreateIP "));

            if (filter.IsUnapproved != null && filter.IsUnapproved.Value)
                condition += (" AND [SortOrder] >  " + SortOrder_Unapproved);
            else if (filter.IsUnapproved != null && filter.IsUnapproved.Value == false)
                condition += (" AND [ThreadStatus] < " + SortOrder_Unapproved);

            condition += (filter.BeginDate == null ? "" : ("AND [CreateDate] > @BeginDate "));
            condition += (filter.EndDate == null ? "" : ("AND [CreateDate] < @EndDate "));

            if (string.IsNullOrEmpty(filter.KeyWord) == false)
            {
                if (filter.SearchMode == SearchArticleMethod.Subject)
                {
                    condition += " AND [Subject] LIKE '%'+@keyword+'%' ";
                }
                else if (filter.SearchMode == SearchArticleMethod.FullText)
                {
                    condition += " AND [Content] LIKE '%'+@keyword+'%' ";
                }
                else
                {
                    condition += " AND ([Subject] LIKE '%'+@keyword+'%' OR [Content] LIKE '%'+@keyword+'%') ";
                }

                query.CreateParameter<string>("@keyword", filter.KeyWord, SqlDbType.NVarChar, 256);
            }

            condition.AppendAnd(DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query));

            if (filter.ForumID != null)
                query.CreateParameter<int?>("@ForumID", filter.ForumID, SqlDbType.Int);
            if (string.IsNullOrEmpty(filter.CreateIP) == false)
                query.CreateParameter<string>("@CreateIP", filter.CreateIP, SqlDbType.NVarChar, 64);
            if (filter.PostID != null)
                query.CreateParameter<int?>("@PostID", filter.PostID, SqlDbType.Int);
            if (filter.UserID != null)
                query.CreateParameter<int?>("@UserID", filter.UserID, SqlDbType.Int);
            if (filter.BeginDate != null)
                query.CreateParameter<DateTime?>("@BeginDate", filter.BeginDate, SqlDbType.DateTime);
            if (filter.EndDate != null)
                query.CreateParameter<DateTime?>("@EndDate", filter.EndDate, SqlDbType.DateTime);

            return condition.ToString();
        }
Beispiel #37
0
        /// <summary>
        /// Asynchronously retrieves posts that have been tagged with a specific <paramref name="tag"/>.
        /// </summary>
        /// <remarks>
        /// See: http://www.tumblr.com/docs/en/api/v2#m-up-tagged
        /// </remarks>
        /// <param name="tag">
        /// The tag on the posts to retrieve.
        /// </param>
        /// <param name="before">
        /// The timestamp of when to retrieve posts before. 
        /// </param>
        /// <param name="count">
        /// The number of posts to retrieve.
        /// </param>
        /// <param name="filter">
        /// A <see cref="PostFilter"/>.
        /// </param>
        /// <returns>
        /// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will
        /// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/>
        /// representing the error occurred during the call.
        /// </returns>
        /// <exception cref="ObjectDisposedException">
        /// The object has been disposed.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="tag"/> is <b>null</b>.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// <paramref name="tag"/> is empty.
        /// </exception>
        /// <exception cref="InvalidOperationException">
        /// This <see cref="TumblrClient"/> instance does not have an OAuth token specified.
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">
        /// <paramref name="count"/> is less than 1 or greater than 20.
        /// </exception>
        public Task<BasePost[]> GetTaggedPostsAsync(string tag, DateTime before, int count = 20, PostFilter filter = PostFilter.Html)
        {
            if (disposed)
                throw new ObjectDisposedException("TumblrClient");

            if (tag == null)
                throw new ArgumentNullException("tag");

            if (tag.Length == 0)
                throw new ArgumentException("Tag cannot be empty.", "tag");

            if (count < 1 || count > 20)
                throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20.");

            MethodParameterSet parameters = new MethodParameterSet();
            parameters.Add("api_key", apiKey);
            parameters.Add("tag", tag);

            return CallApiMethodAsync<BasePost[]>(
                new ApiMethod("http://api.tumblr.com/v2/tagged", OAuthToken, HttpMethod.Get, parameters),
                CancellationToken.None, new List<JsonConverter>() { new PostArrayConverter() });
        }
Beispiel #38
0
        public override PostCollectionV5 GetPosts(int pageNumber, PostFilter filter, Guid[] excludeRoleIDs, ref int totalCount)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.IsDesc = filter.IsDesc;

                query.Pager.SortField = "PostID";

                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = filter.PageSize;
                query.Pager.TotalRecords = totalCount;
                query.Pager.SelectCount = true;
                query.Pager.TableName = "[bx_Posts]";

                query.Pager.Condition = BuilderSearchPostCondition(filter, excludeRoleIDs, query, false);

                PostCollectionV5 posts;
                using (XSqlDataReader reader = query.ExecuteReader())
                {

                    posts = new PostCollectionV5(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                            totalCount = reader.Get<int>(0);
                    }
                    return posts;
                }
            }
        }
Beispiel #39
0
        public override DeleteResult DeleteSearchPosts(PostFilter filter, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult, int topCount, out int deletedCount, out List<int> threadIDs)
        {

            using (SqlQuery query = new SqlQuery())
            {

                string conditon = BuilderSearchPostCondition(filter, excludeRoleIDs, query, false);

                query.CommandText = @"
DECLARE @Table table(TempPostID int,TempTopicID int,TempUserID int,TempForumID int,TempThreadStatus tinyint);
INSERT INTO @Table SELECT TOP (@TopCount) [PostID],[ThreadID],[UserID],[ForumID],[ThreadStatus] FROM [bx_Posts] WHERE " + conditon + @";
SELECT DISTINCT TempTopicID FROM @Table;
";

                if (getDeleteResult)
                {
                    query.CommandText += @"
SELECT [TempUserID],[TempForumID],COUNT(*) AS [Count] FROM @Table WHERE TempThreadStatus<4 GROUP BY [TempUserID],[TempForumID];";

                }


                query.CommandText = query.CommandText + @"
DELETE [bx_Posts] WHERE PostID IN(SELECT TempPostID FROM @Table);
SELECT @@ROWCOUNT;
";
                query.CreateTopParameter("@TopCount", topCount);

                threadIDs = new List<int>();
                deletedCount = 0;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        int threadID = reader.Get<int>("TempTopicID");
                        if (threadIDs.Contains(threadID) == false)
                            threadIDs.Add(threadID);
                    }

                    if (getDeleteResult)
                    {
                        if (reader.NextResult())
                        {
                            while (reader.Read())
                            {
                                deleteResult.Add(reader.Get<int>("TempUserID"), reader.Get<int>("Count"), reader.Get<int>("TempForumID"));
                            }
                        }
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deletedCount = reader.Get<int>(0);
                        }
                    }
                    return deleteResult;
                }
            }
        }