Example #1
0
        private async Task <List <BsonDocument> > LoadDataFromDbToRezult(QueryModel queryMod)
        {
            FilterDefinition <BsonDocument> filter = null;

            if (queryMod.Key == null && queryMod.Value == null)
            {
                filter = Builders <BsonDocument> .Filter.Empty;
            }
            else
            {
                if (queryMod.Value.GetType() == typeof(DateTime))
                {
                    DateTime dt            = (DateTime)queryMod.Value;
                    var      filterBuilder = Builders <BsonDocument> .Filter;
                    filter = filterBuilder.Gt(queryMod.Key, dt) &
                             filterBuilder.Lt(queryMod.Key, dt.AddDays(1));
                }
                else if (queryMod.Value.GetType() == typeof(QueryDate))
                {
                    QueryDate dt            = (QueryDate)queryMod.Value;
                    var       filterBuilder = Builders <BsonDocument> .Filter;
                    filter = filterBuilder.Gt(queryMod.Key, dt.StartDate) &
                             filterBuilder.Lt(queryMod.Key, dt.EndDate.AddDays(1));
                }
                else
                {
                    filter = Builders <BsonDocument> .Filter.Eq(queryMod.Key, queryMod.Value);
                }
            }
            return(await DataProcessor.GetDataFind(filter, queryMod.CollectionName, Skip, DefaultCountTake));
        }
Example #2
0
        public string[] BuildLookupIndexes()
        {
            var lookupIndexes = new List <string>(2 * _indexDescriptors.Count);

            foreach (ElasticSearchIndexDescriptor indexDescriptor in _indexDescriptors)
            {
                QueryDate queryDate = LookupBestQueryRange(indexDescriptor.IndexTimeStampField);

                if (queryDate == null || queryDate.FieldName != indexDescriptor.IndexTimeStampField)
                {
                    lookupIndexes.AddRange(indexDescriptor.GetIndexDescriptors());
                }
                else
                {
                    lookupIndexes.AddRange(indexDescriptor.GetIndexDescriptors(queryDate.RequestFrom, queryDate.RequestTo));
                }
            }

            if (lookupIndexes.Count == 0)
            {
                lookupIndexes.Add("_all");
            }

            return(lookupIndexes.ToArray());
        }
Example #3
0
        public async Task <IEnumerable <T> > GetAllWithPaging <U>(QueryDate <T, U> queryData)
        {
            var objects = _context.Set <T>().AsQueryable();

            if (queryData.Includes != null)
            {
                foreach (var include in queryData.Includes)
                {
                    objects = objects.Include(include);
                }
            }

            if (queryData.Conditions != null)
            {
                foreach (var condition in queryData.Conditions)
                {
                    objects = objects.Where(condition);
                }
            }

            if (queryData.SortBy != null)
            {
                objects = objects.OrderBy(queryData.SortBy);
            }

            int skip = (queryData.CurrentPage - 1) * queryData.ItemsPerPage;

            objects = objects.Skip(skip)
                      .Take(queryData.ItemsPerPage);

            return(await objects.ToListAsync());
        }
        protected override void Synchronize(BoardMapping project)
        {
            Log.Debug("Polling GitHub for Pull Requests");

            var queryAsOfDate = QueryDate.AddMilliseconds(Configuration.PollingFrequency * -1.5);

            //https://api.github.com/repos/{0}/{1}/pulls?state=Open
            var request = new RestRequest(string.Format("repos/{0}/{1}/pulls", Configuration.Target.Host, project.Identity.Target), Method.GET);

            request.AddParameter("state", project.QueryStates[0]);

            var resp = _restClient.Execute(request);

            if (resp.StatusCode != HttpStatusCode.OK)
            {
                var serializer   = new JsonSerializer <ErrorMessage>();
                var errorMessage = serializer.DeserializeFromString(resp.Content);
                Log.Error(string.Format("Unable to get Pull Requests from GitHub, Error: {0}. Check your board/repo mapping configuration.", errorMessage.Message));
                return;
            }

            var pulls = new JsonSerializer <List <Pull> >().DeserializeFromString(resp.Content);

            Log.Info("\nQueried [{0}] at {1} for changes after {2}", project.Identity.Target, QueryDate, queryAsOfDate.ToString("o"));

            if (pulls != null && pulls.Any() && pulls[0].Id > 0)
            {
                foreach (var pull in pulls)
                {
                    if (pull.Id > 0)
                    {
                        Log.Info("Pull Requests [{0}]: {1}, {2}, {3}", pull.Number, pull.Title, pull.User.Login, pull.State);

                        // does this workitem have a corresponding card?
                        var card = LeanKit.GetCardByExternalId(project.Identity.LeanKit, pull.Id + "|" + pull.Number.ToString());

                        if (card == null || !card.ExternalSystemName.Equals(ServiceName, StringComparison.OrdinalIgnoreCase))
                        {
                            Log.Debug("Create new card for Pull Request [{0}]", pull.Number);
                            CreateCardFromItem(project, pull);
                        }
                        else
                        {
                            Log.Debug("Previously created a card for Pull Request [{0}]", pull.Number);
                            if (project.UpdateCards)
                            {
                                PullUpdated(pull, card, project);
                            }
                            else
                            {
                                Log.Info("Skipped card update because 'UpdateCards' is disabled.");
                            }
                        }
                    }
                }
                Log.Info("{0} item(s) queried.\n", pulls.Count);
            }
        }
Example #5
0
 public IDictionary <string, object> ToDictionary()
 {
     return(new Dictionary <string, object>
     {
         { "leftTicketDTO.train_date", QueryDate.ToString("yyyy-MM-dd") },
         { "leftTicketDTO.from_station", FromStation.Code },
         { "leftTicketDTO.to_station", ToStation.Code },
         { "purpose_codes", PurposeCodes }
     });
 }
        public QueryDate GetQueryDate()
        {
            DateTime?lteDate = LessThanEqual as DateTime?;
            DateTime?gteDate = GreaterThanEqual as DateTime?;

            QueryDate result = null;

            if (lteDate != null && gteDate != null)
            {
                result = new QueryDate(_fieldName, gteDate.Value, lteDate.Value);
            }

            return(result);
        }
Example #7
0
 public IDictionary <string, object> ToDictionary()
 {
     if (FromStation == null || ToStation == null)
     {
         throw new Exception("   输入车站请点击下拉候选框中的目标车站   \n   下拉候选框中未显示的站台不存在或尚未录入系统");
     }
     return(new Dictionary <string, object>
     {
         { "leftTicketDTO.train_date", QueryDate.ToString("yyyy-MM-dd") },
         { "leftTicketDTO.from_station", FromStation.Code },
         { "leftTicketDTO.to_station", ToStation.Code },
         { "purpose_codes", PurposeCodes }
     });
 }
Example #8
0
        public async Task <List <UserDto> > GetUsers(int itemPerPage, int page)
        {
            var query = new QueryDate <User, long>
            {
                CurrentPage  = page,
                ItemsPerPage = itemPerPage,
                SortBy       = u => u.Id
            };

            var users = await _userRepository.GetAllWithPaging(query);

            var mappedUsers = _mapper.Map <IEnumerable <User>, IEnumerable <UserDto> >(users);

            return(mappedUsers.ToList());
        }
Example #9
0
        protected override void Synchronize(BoardMapping project)
        {
            Log.Debug("Polling Jira for Issues");

            var queryAsOfDate = QueryDate.AddMilliseconds(Configuration.PollingFrequency * -1.5);

            string jqlQuery;
            var    formattedQueryDate = queryAsOfDate.ToString(QueryDateFormat, CultureInfo.InvariantCulture);

            if (!string.IsNullOrEmpty(project.Query))
            {
                jqlQuery = string.Format(project.Query, formattedQueryDate);
            }
            else
            {
                var queryFilter = string.Format(" and ({0})", string.Join(" or ", project.QueryStates.Select(x => "status = '" + x.Trim() + "'").ToList()));
                if (!string.IsNullOrEmpty(project.ExcludedTypeQuery))
                {
                    queryFilter += project.ExcludedTypeQuery;
                }
                jqlQuery = string.Format("project=\"{0}\" {1} and updated > \"{2}\" order by created asc", project.Identity.Target, queryFilter, formattedQueryDate);
            }

            //https://yoursite.atlassian.net/rest/api/latest/search?jql=project=%22More+Tests%22+and+status=%22open%22+and+created+%3E+%222008/12/31+12:00%22+order+by+created+asc&fields=id,status,priority,summary,description
            var request = new RestRequest("/rest/api/latest/search", Method.GET);

            request.AddParameter("jql", jqlQuery);
            request.AddParameter("fields", "id,status,priority,summary,description,issuetype,type,assignee,duedate,labels");
            request.AddParameter("maxResults", "9999");

            var jiraResp = _restClient.Execute(request);

            if (jiraResp.StatusCode != HttpStatusCode.OK)
            {
                var serializer   = new JsonSerializer <ErrorMessage>();
                var errorMessage = serializer.DeserializeFromString(jiraResp.Content);
                Log.Error(string.Format("Unable to get issues from Jira, Error: {0}. Check your board/project mapping configuration.", errorMessage.Message));
                return;
            }

            var resp = new JsonSerializer <IssuesResponse>().DeserializeFromString(jiraResp.Content);

            Log.Info("\nQueried [{0}] at {1} for changes after {2}", project.Identity.Target, QueryDate, queryAsOfDate.ToString("o"));

            if (resp != null && resp.Issues != null && resp.Issues.Any())
            {
                var issues = resp.Issues;
                foreach (var issue in issues)
                {
                    Log.Info("Issue [{0}]: {1}, {2}, {3}", issue.Key, issue.Fields.Summary, issue.Fields.Status.Name, issue.Fields.Priority.Name);

                    // does this workitem have a corresponding card?
                    var card = LeanKit.GetCardByExternalId(project.Identity.LeanKit, issue.Key);

                    if (card == null || !card.ExternalSystemName.Equals(ServiceName, StringComparison.OrdinalIgnoreCase))
                    {
                        Log.Debug("Create new card for Issue [{0}]", issue.Key);
                        CreateCardFromItem(project, issue);
                    }
                    else
                    {
                        Log.Debug("Previously created a card for Issue [{0}]", issue.Key);
                        if (project.UpdateCards)
                        {
                            IssueUpdated(issue, card, project);
                        }
                        else
                        {
                            Log.Info("Skipped card update because 'UpdateCards' is disabled.");
                        }
                    }
                }
                Log.Info("{0} item(s) queried.\n", issues.Count);
            }
        }
Example #10
0
        protected override void Synchronize(BoardMapping project)
        {
            Log.Debug("Polling Unfuddle for Tickets");

            var queryAsOfDate = QueryDate.AddMilliseconds(Configuration.PollingFrequency * -1.5);

            var unfuddleQuery = !string.IsNullOrEmpty(project.Query)
                                ? string.Format(project.Query, queryAsOfDate.ToString("yyyy/MM/dd hh:mm"))
                                : string.Format("status-eq-{0},created_at-gt-{1}", project.QueryStates[0], queryAsOfDate.ToString("yyyy/MM/dd hh:mm"));

            //http://mysubdomain.unfuddle.com/api/v1/projects/{id}/ticket_reports/dynamic?sort_by=created_at&sort_direction=ASC&conditions_string=status-eq-new,created_at-gt-yyyy/MM/dd hh:mm
            var request = new RestRequest(string.Format("/api/v1/projects/{0}/ticket_reports/dynamic", project.Identity.Target), Method.GET);

            request.AddParameter("sort_by", "created_at");
            request.AddParameter("sort_direction", "ASC");
            request.AddParameter("conditions_string", unfuddleQuery);
            //, "id,status,priority,summary,description,type");
            request.AddParameter("limit", "500");

            var unfuddleResp = _restClient.Execute(request);

            if (unfuddleResp.StatusCode != HttpStatusCode.OK)
            {
                var serializer   = new JsonSerializer <ErrorMessage>();
                var errorMessage = serializer.DeserializeFromString(unfuddleResp.Content);
                Log.Error(string.Format("Unable to get tickets from Unfuddle, Error: {0}. Check your board/project mapping configuration.", errorMessage.Message));
                return;
            }

            var resp = new JsonSerializer <TicketsResponse>().DeserializeFromString(unfuddleResp.Content);

            Log.Info("\nQueried [{0}] at {1} for changes after {2}", project.Identity.Target, QueryDate, queryAsOfDate.ToString("o"));

            if (resp != null && resp.Groups != null && resp.Groups.Any())
            {
                foreach (var group in resp.Groups)
                {
                    if (group != null && group.Tickets != null && group.Tickets.Any())
                    {
                        var tickets = group.Tickets;
                        foreach (var ticket in tickets)
                        {
                            Log.Info("Ticket [{0}]: {1}, {2}, {3}", ticket.Id, ticket.Summary, ticket.Status, ticket.Priority);

                            // does this workitem have a corresponding card?
                            var card = LeanKit.GetCardByExternalId(project.Identity.LeanKit, ticket.Id.ToString());

                            if (card == null || !card.ExternalSystemName.Equals(ServiceName, StringComparison.OrdinalIgnoreCase))
                            {
                                Log.Debug("Create new card for Ticket [{0}]", ticket.Id);
                                CreateCardFromItem(project, ticket);
                            }
                            else
                            {
                                Log.Debug("Previously created a card for Ticket [{0}]", ticket.Id);
                                if (project.UpdateCards)
                                {
                                    TicketUpdated(ticket, card, project);
                                }
                                else
                                {
                                    Log.Info("Skipped card update because 'UpdateCards' is disabled.");
                                }
                            }
                        }
                    }
                }
                Log.Info("{0} item(s) queried.\n", resp.Count);
            }
        }
Example #11
0
        protected override void Synchronize(BoardMapping project)
        {
            Log.Debug("Polling TFS [{0}] for Work Items", project.Identity.TargetName);

            //query a project for new items
            var stateQuery     = string.Format(" AND ({0})", String.Join(" or ", project.QueryStates.Select(x => "[System.State] = '" + x.Trim() + "'").ToList()));
            var iterationQuery = "";

            if (!string.IsNullOrEmpty(project.IterationPath))
            {
                iterationQuery = string.Format(" AND [System.IterationPath] UNDER '{0}' ", project.IterationPath);
            }

            var queryAsOfDate = QueryDate.AddMilliseconds(Configuration.PollingFrequency * -1.5).ToString("o");

            string tfsQuery;

            if (!string.IsNullOrEmpty(project.Query))
            {
                tfsQuery = string.Format(project.Query, queryAsOfDate);
            }
            else
            {
                tfsQuery = String.Format(
                    "[System.TeamProject] = '{0}' {1} {2} {3} and [System.ChangedDate] > '{4}'",
                    project.Identity.TargetName, iterationQuery, stateQuery, project.ExcludedTypeQuery, queryAsOfDate);
            }

            var queryStr = string.Format("SELECT [System.Id], [System.WorkItemType]," +
                                         " [System.State], [System.AssignedTo], [System.Title], [System.Description]" +
                                         " FROM WorkItems " +
                                         " WHERE {0}" +
                                         " ORDER BY [System.TeamProject]", tfsQuery);

            if (_projectCollectionWorkItemStore == null)
            {
                "Reconnecting to TFS...".Info();
                Init();
            }
            Query query;

            try
            {
                query = new Query(_projectCollectionWorkItemStore, queryStr, null, false);
            }
            catch (Exception ex)
            {
                Log.Error("Error creating TFS query. {0} ", ex.Message);
                if (_projectCollectionWorkItemStore == null)
                {
                    Log.Error("Project Collection Work Item Store is null");
                }
                throw;
            }
            var cancelableAsyncResult = query.BeginQuery();

            var changedItems = query.EndQuery(cancelableAsyncResult);

            Log.Info("\nQuery [{0}] for changes after {1}", project.Identity.Target, queryAsOfDate);
            Log.Debug(queryStr);

            foreach (WorkItem item in changedItems)
            {
                Log.Info("Work Item [{0}]: {1}, {2}, {3}",
                         item.Id, item.Title, item.Fields["System.AssignedTo"].Value, item.State);

                // does this workitem have a corresponding card?
                var card = LeanKit.GetCardByExternalId(project.Identity.LeanKit, item.Id.ToString(CultureInfo.InvariantCulture));

                if (card == null || !card.ExternalSystemName.Equals(ServiceName, StringComparison.OrdinalIgnoreCase))
                {
                    Log.Debug("Creating new card for work item [{0}]", item.Id);
                    CreateCardFromWorkItem(project, item);
                }
                // TODO: else if Lane = defined end lane then update it in TFS (i.e. we missed the event)
                // call UpdateStateOfExternalWorkItem()
                else
                {
                    Log.Info("Previously created a card for work item[{0}]", item.Id);
                    if (project.UpdateCards)
                    {
                        WorkItemUpdated(item, card, project);
                    }
                    else
                    {
                        Log.Info("Skipped card update because 'UpdateCards' is disabled.");
                    }
                }
            }
            Log.Info("{0} item(s) queried.\n", changedItems.Count);
        }