public override IEnumerable <string> GetCompletionForKeyValue(string key, string value)
        {
            var completions = key.ToLowerInvariant() switch
            {
                "org" => _orgs,
                "repo" => _repos,
                "author" or "area-lead" or "area-owner" => _users,
                "assignee" => _users,
                "label" => _labels,
                "milestone" => _milestones,
                "area" or "area-under" => _areaPaths,
                "area-node" => _areaNodes,
                _ => IssueQuery.SupportedValuesFor(key)
                .OrderBy(x => x)
                .ToArray()
            };

            var index = Array.BinarySearch(completions, value, StringComparer.OrdinalIgnoreCase);

            if (index < 0)
            {
                index = ~index;
            }

            for (var i = index; i < completions.Length; i++)
            {
                var c = completions[i];
                if (!c.StartsWith(value, StringComparison.OrdinalIgnoreCase))
                {
                    yield break;
                }

                yield return(Escape(c));
            }
        }
Ejemplo n.º 2
0
        public CrawledIssueResults Search(string searchText)
        {
            if (_indexService.Index is null)
            {
                return(CrawledIssueResults.Empty);
            }

            var isOpenIssuesQuery = searchText == "is:open is:issue";

            if (isOpenIssuesQuery && _openIssuesResults != null)
            {
                return(_openIssuesResults);
            }

            var stopwatch = Stopwatch.StartNew();
            var query     = IssueQuery.Create(searchText);
            var results   = query.Execute(_indexService.Index);
            var elapsed   = stopwatch.Elapsed;

            Task.Run(() =>
                     _telemetryClient.GetMetric("Search")
                     .TrackValue(elapsed.TotalMilliseconds)
                     );

            if (isOpenIssuesQuery && _openIssuesResults is null)
            {
                _openIssuesResults = results;
            }

            return(results);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Retrieves data for a specific Issue
        /// </summary>
        /// <param name="volumeId">ID of the Volume in which the Issue resides</param>
        /// <param name="issueNumber">Number of the Issue for which the retrieval is to be done</param>
        /// <returns>Issue object populated with data for the Issue indicated by the Volume ID and Issue Number</returns>
        public Issue GetIssue(int volumeId, int issueNumber)
        {
            string query =
                $"{_comicVineAddress}issues/?api_key={_apiKey}&format=json&filter=issue_number:{issueNumber},volume:{volumeId}";

            IssueQuery issueQuery = Connection.ConnectAndRequestIssue(query);

            return(issueQuery.Issue);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///     Connect to the ComicVine API and retrieve the results of a query based on an Issue
        /// </summary>
        /// <param name="url">URL to the Issue object within the API</param>
        /// <returns>IssueQuery object populated with search results</returns>
        public static IssueQuery ConnectAndRequestIssue(string url)
        {
            IssueQuery result = new IssueQuery();

            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            using WebResponse webResponse   = httpWebRequest.GetResponse();
            using StreamReader streamReader = new StreamReader(webResponse.GetResponseStream() !);
            return(JsonConvert.DeserializeObject <IssueQuery>(Sanitize(streamReader.ReadToEnd())));
        }
Ejemplo n.º 5
0
        /// <summary>
        ///     Retrieves data for a specific Issue
        /// </summary>
        /// <param name="issueId">ID of the Issue to retrieve</param>
        /// <returns>Issue object populated with data for the Issue indicated by the ID</returns>
        public Issue GetIssue(int issueId)
        {
            string query = null;

            query = $"{_comicVineAddress}issue/4000-{issueId}/?api_key={_apiKey}&format=json";

            IssueQuery issueQuery = Connection.ConnectAndRequestIssue(query);

            return(issueQuery.Issue);
        }
        public static CrawledIssueResults Execute(this IssueQuery query, CrawledIndex index)
        {
            var result = (HashSet <CrawledIssue>)null;

            foreach (var filter in query.Filters)
            {
                var next = Execute(index, filter);
                if (result is null)
                {
                    result = next;
                }
                else
                {
                    result.UnionWith(next);
                }
            }

            if (result is null)
            {
                return(CrawledIssueResults.Empty);
            }

            var sorts = query.Filters.SelectMany(f => f.Sort)
                        .Distinct()
                        .ToArray();

            if (!sorts.Any())
            {
                sorts = _defaultSort;
            }

            var groups = query.Filters.SelectMany(f => f.Groups)
                         .Distinct()
                         .Select(CrawledIssueGroupKey.Get)
                         .ToArray();

            if (!groups.Any())
            {
                return(CrawledIssueResults.Create(result, sorts));
            }

            var groupSorts = query.Filters.SelectMany(f => f.GroupSort)
                             .Distinct()
                             .ToArray();

            if (!groupSorts.Any())
            {
                groupSorts = _defaultGroupSort;
            }

            return(CrawledIssueResults.Create(result, sorts, groups, groupSorts));
        }
Ejemplo n.º 7
0
 public void OnGet()
 {
     Query = _issueManager.Load(Query);
 }
        /// <summary>
        /// 添付ファイルのダウンロード処理
        /// </summary>
        private async void Download()
        {
            this.IsBusy = true;

            Project selectedItem = null;

            switch (this.selected)
            {
                case "inactive":
                    selectedItem = this.InactiveProjextsView.CurrentItem as Project;
                    break;
                case "revival":
                    selectedItem = this.RevivalProjextsView.CurrentItem as Project;
                    break;
                case "death":
                    selectedItem = this.DeathProjextsView.CurrentItem as Project;
                    break;
            }
            await Task.Run(() =>
            {
                if (selectedItem != null)
                {
                    IssueCommunicator issue = new IssueCommunicator(this.SpaceName, this.APIKey);
                    var count = issue.GetIssuesCount(selectedItem.Id);

                    if (count > 0)
                    {
                        int index = 0;
                        int down = 100;
                        IEnumerable<Issue> list = new List<Issue>();

                        do
                        {
                            var param = new IssueQuery
                            {
                                ProjectIds = new List<int> { selectedItem.Id, },
                                ParentChild = 0,
                                Attachment = true,
                                SharedFile = false,
                                Sort = Sort.Attachment,
                                Offset = index,
                                Count = 100,
                            };
                            var issues = issue.GetIssues(param);

                            list = list.Concat(issues);
                            down = issues.Count();
                            index += down;
                        }
                        while (down >= 100);

                        foreach (var item in list)
                        {
                            if (item.attachments.Count > 0)
                            {
                                foreach (var file in item.attachments)
                                {
                                    var path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                                    var key = item.issueKey;
                                    var name = file.name;

                                    issue.DownloadAttachmentFile(path, key, name, item.id, file.id);
                                }
                            }
                        }
                    }
                }
            });

            this.IsBusy = false;
        }
Ejemplo n.º 9
0
        internal IEnumerable<Issues> findIssueReport(IssueQuery q, String issueGroup)
        {
            string constraint = " where upper(firstname) like :f ||'%' " +
                                     " and upper(lastname) like :l ||'%' " +
                                     " and alpha like   :a  ||'%' " +
                                     " and email like   :e  ||'%' " +
                                     " and ssn   like   :s  ||'%' " +
                                     " and company like :c  ||'%' " +
                                     " and class   like :cl ||'%' ";

            String sql = "select i.id,i.type,i.complete,i.comments,i.midnid,  m.alpha midnAlpha," +
                                  " i.dateinserted,i.datereview,i.visible, m.lastname ||', '||m.firstname||' '||m.ssn  midnName, " +
                                  " m.company company ,i.admin, i.complete" +

                  " from ISSUES i , MIDN m " +
                  " where i.visible=1 and m.id=i.midnid and  midnid in (select id from MIDN " + constraint + ") " +
                  "";
            string selectedIssue = q.selectedIssue;
            if (issueGroup != null)
            {
                switch (issueGroup)
                {
                    case "Labs":
                        sql += " and i.type in (select value from mm4vars where type='LAB_ISSUE_GRP' ) ";
                        break;
                    case "Optometry":
                        sql += " and i.type in (select value from mm4vars where type='OPT_ISSUE_GRP') ";
                        break;
                    case "Radiology":
                        sql += " and i.type in (select value from mm4vars where type='RAD_ISSUE_GRP') ";
                        break;
                    case "X-Ray":
                        sql += " and i.type in (select value from mm4vars where type='XRAY_ISSUE_GRP') ";
                        break;
                    default:
                        break;
                }
            }
            if (q.issueCreatedFrom != null & q.issueCreatedTo != null)
            {
                sql += " and trunc(i.dateinserted) between to_date('" + q.issueCreatedFrom + "') and to_date('" + q.issueCreatedTo + "') ";
            }
            if (q.issueReviewedFrom != null & q.issueReviewedTo != null)
            {
                sql += " and trunc(i.datereview) between to_date('" + q.issueReviewedFrom + "') and to_date('" + q.issueReviewedTo + "') ";
            }
            if (q.Complete != 999)
            {
                sql += " and i.complete = " + q.Complete;
            }

            string company = q.Company == 0 ? "" : q.Company.ToString();

            var data = db.Database.SqlQuery<Issues>(sql,
                                       new OracleParameter(":f", q.FirstName.ToUpper()),
                                       new OracleParameter(":l", q.LastName.ToUpper()),
                                       new OracleParameter(":a", q.Alpha),
                                       new OracleParameter(":e", q.Email),
                                       new OracleParameter(":s", q.Ssn),
                                       new OracleParameter(":c", company),
                                       new OracleParameter(":cl", q.Class)

                                       );

            return data;
        }
Ejemplo n.º 10
0
        internal IEnumerable<Issues> findIssueReport(IssueQuery q)
        {
            string constraint = " where upper(firstname) like :f ||'%' " +
                                    " and upper(lastname) like :l ||'%' " +
                                    " and alpha like   :a  ||'%' " +
                                    " and (email like   :e  ||'%'  or email is null)" +
                                    " and ssn   like   :s  ||'%' " +
                                    " and (company like :c  ||'%'  or company is null )" +
                                    " and class   like :cl ||'%' ";

            String sql = "select i.id,i.type,i.complete,i.comments,i.midnid, m.alpha midnAlpha,  " +
                                  " i.dateinserted,i.datereview,i.visible, m.lastname||', '||m.firstname midnName, " +
                                  " m.company company ,i.admin, i.complete" +

                  " from ISSUES i , MIDN m " +
                  " where i.visible=1 and m.id=i.midnid and  midnid in (select id from MIDN " + constraint + ") " +
                  " and i.type like  :i ||'%'";
            string selectedIssue = q.selectedIssue;
            //  if (q.selectedIssue != 0)
            //  {
            //      selectedIssue = q.selectedIssue.ToString();
            //  }
            if (q.rangetype !=null ){
                if ( q.rangetype.Equals("gt")){
                 sql += " and trunc(i.dateinserted) < to_date('" + q.issueCreatedFrom + "') ";
                }
                if (q.rangetype.Equals("lt"))
                {
                    sql += " and trunc(i.dateinserted) > to_date('" + q.issueCreatedFrom + "') ";
                }
                if (q.rangetype.Equals("in"))
                {
                    sql += " and trunc(i.dateinserted) between to_date('" + q.issueCreatedFrom + "') and to_date('" + q.issueCreatedTo + "') ";
                }

            }else{
                if (q.issueCreatedFrom != null & q.issueCreatedTo != null)
                {
                    sql += " and trunc(i.dateinserted) between to_date('" + q.issueCreatedFrom + "') and to_date('" + q.issueCreatedTo + "') ";
                }
                if (q.issueReviewedFrom != null & q.issueReviewedTo != null)
                {
                    sql += " and trunc(i.datereview) between to_date('" + q.issueReviewedFrom + "') and to_date('" + q.issueReviewedTo + "') ";
                }
                if (q.issueCreatedFrom != null & q.issueCreatedTo == null)
                {
                    sql += " and trunc(i.dateinserted) > to_date('" + q.issueCreatedFrom + "') ";
                }
                if (q.issueReviewedFrom != null & q.issueReviewedTo == null)
                {
                    sql += " and trunc(i.datereview) > to_date('" + q.issueReviewedFrom + "') ";
                }
            }

            if (q.Complete != 999)
            {
                sql += " and i.complete = " + q.Complete;
            }

            string company = q.Company == 0 ? "" : q.Company.ToString();

            var data = db.Database.SqlQuery<Issues>(sql,
                                       new OracleParameter(":f", q.FirstName.ToUpper()),
                                       new OracleParameter(":l", q.LastName.ToUpper()),
                                       new OracleParameter(":a", q.Alpha),
                                       new OracleParameter(":e", q.Email),
                                       new OracleParameter(":s", q.Ssn),
                                       new OracleParameter(":c", company),
                                       new OracleParameter(":cl", q.Class),
                                       new OracleParameter(":i", selectedIssue)
                                       );

            return data;
        }