示例#1
0
        public List<dynamic> GetKanban(RallySlackMapping map)
        {
            RallyRestApi restApi = _pool.GetApi(map.UserName, map.Password);
            var queryType = "Iteration";
            var query = new Query(string.Format("(StartDate <= {0})", DateTime.Now.ToString("o")));
            var requestFields = new List<string>() { "Name", "StartDate", "Project", "EndDate" };
            QueryResult queryResult = GetRallyItemByQuery( map, requestFields, query,queryType);

            string iterationName;

            if (queryResult.Results.Any())
            {
                //var iter = queryResult.Results.Select(e => new Iteration(e)).Where(r => r.StartDate <= DateTime.Now).OrderByDescending(r => r.StartDate).First();
                var iter =
                    queryResult.Results.Select(
                        e =>
                            new
                            {
                                Name = e["Name"],
                                StartDate = e["StartDate"] == null ? DateTime.MinValue : DateTime.Parse(e["StartDate"]),
                                EndDate = e["EndDate"] == null ? DateTime.MaxValue : DateTime.Parse(e["EndDate"])
                            }).OrderByDescending(p=>p.StartDate).First();
                iterationName = iter.Name;

            }
            else
            {
                return null;
            }

            //User stories
            queryType = "hierarchicalrequirement";
            query = new Query("Iteration.Name", Query.Operator.Equals, iterationName);
            requestFields = new List<string>()
            {
                "Name",
                "ObjectID",
                "FormattedID",
                "Description",
                "Blocked",
                "BlockedReason",
                "Owner"
            };
            requestFields.Add(map.KanbanSortColumn);
            var result0 = GetRallyItemByQuery( map, requestFields, query, queryType);

            //Defects
            queryType = "defect";
            var result1 = GetRallyItemByQuery(map, requestFields, query, queryType);
            var result = result0.Results.ToList();
            result.AddRange(result1.Results);
            return result;
        }
示例#2
0
 public QueryResult GetRallyItemById(RallySlackMapping map, string formattedId)
 {
     var queryType = "hierarchicalrequirement";
     if (formattedId.StartsWith("de", StringComparison.InvariantCultureIgnoreCase))
     {
         queryType = "defect";
     }
     var query = new Query("FormattedID", Query.Operator.Equals, formattedId);
     var requestFields = new List<string>() { "Name", "Description", "FormattedID" };
     return GetRallyItemByQuery( map, requestFields, query,queryType);
 }
示例#3
0
 public QueryResult GetRallyItemByQuery(RallySlackMapping map, List<string> requestFields, Query query, string artifectName ="")
 {
     var api = _pool.GetApi(map.UserName, map.Password);
     if (api == null)
     {
         throw new AuthenticationException("Cannot verify rally login");
     }
     Request request;
     if (string.IsNullOrEmpty(artifectName))
     {
         request = new Request();
     }
     else
     {
         request = new Request(artifectName);
     }
     request.Project = "/project/" + map.ProjectId;
     request.Workspace = "/workspace/" + map.WorkspaceId;
     //request.Fetch = new List<string>() { "Name", "Description", "FormattedID" };
     request.Fetch = requestFields;
     request.Query = query;
     QueryResult queryResult = api.Query(request);
     return queryResult;
 }