Exemplo n.º 1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="cardClient">jiraService used to get the related tickets</param>
        /// <param name="tickets">list of tickets that will be analysed</param>
        /// <param name="bucketSize">size of the bucket. if not specifed, set to a day</param>
        /// <param name="from">start date - if not specified, taking the earliest created ticket</param>
        /// <param name="to">end date - if not specified, taking the latest ticket closure</param>
        public CumulativeFlowAnalyser(ICardManagerClient cardClient, IEnumerable <Card> tickets, IEnumerable <CardStatus> statusesFilter, TimeSpan?bucketSize = null, DateTime?from = null, DateTime?to = null)
        {
            _cardClient     = cardClient ?? throw new ArgumentNullException(nameof(cardClient));
            _cards          = tickets;
            _statusesFilter = statusesFilter;
            _dateFrom       = from ?? _cards.Min(t => t.CreationDate);
            _dateTo         = to ?? _cards.Max(t => t.ClosureDate) ?? DateTime.Now;
            _bucketSize     = bucketSize ?? new TimeSpan(1, 0, 0, 0);

            if (_dateFrom > _dateTo)
            {
                throw new ArgumentException("Date from is after Date to");
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Constructor
 /// </summary>
 public DefaultModelConverter(ICardManagerClient cmClient, Dictionary <CardFieldMeta, string> overrides = null)
 {
     _client           = cmClient ?? throw new ArgumentNullException(nameof(cmClient));
     _jiraFieldMapping = new List <Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> > >
     {
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Summary",
             CardFieldMeta.Title,
             o => (string)o,
             (str1, str2, client) => str2
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Issue Type",
             CardFieldMeta.Type,
             o => IdentifyCardType((string)o.name),
             (str1, str2, client) => IdentifyCardType(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Description",
             CardFieldMeta.Description,
             o => (string)o,
             (str1, str2, client) => str2
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Created",
             CardFieldMeta.Created,
             o => (DateTime)o,
             (str1, str2, client) => DateTime.Parse(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Resolved",
             CardFieldMeta.ResolutionDate,
             o => (DateTime?)o,
             (str1, str2, client) => string.IsNullOrEmpty(str2) ? (DateTime?)null : DateTime.Parse(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Due Date",
             CardFieldMeta.DueDate,
             o => (DateTime?)o,
             (str1, str2, client) => string.IsNullOrEmpty(str2) ? (DateTime?)null : DateTime.Parse(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Story Points",
             CardFieldMeta.Points,
             o => (double?)o,
             (str1, str2, client) => string.IsNullOrEmpty(str2) ? (double?)null : Double.Parse(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Sprint",
             CardFieldMeta.Sprint,
             o => ExtractSprintDetailsFromString(o),
             (str1, str2, client) => string.IsNullOrEmpty(str1) ? (Sprint)null : (Sprint)client.GetSprint((string)str1)   // str1 = sprintId, str2 = sprintNames
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Flagged",
             CardFieldMeta.Flagged,
             o => o != null,
             (str1, str2, client) => str2 == "Impediment" // throw new NotImplementedException()
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Resolution",
             CardFieldMeta.Resolution,
             o => o != null ? IdentifyCardResolution((string)o.name) : null,
             (str1, str2, client) => IdentifyCardResolution(str2)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Status",
             CardFieldMeta.Status,
             o => ConvertStatus(o),
             (str1, str2, client) => string.IsNullOrEmpty(str1) ? (CardStatus)null : client.GetStatus((string)str1)    // str1 = statusId, str2 = statusname
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Epic Link",
             CardFieldMeta.EpicId,
             o => (string)o,
             (str1, str2, client) => str2
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Rank",
             CardFieldMeta.Rank,
             o => (string)o,
             (str1, str2, client) => str2
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Labels",
             CardFieldMeta.Tags,
             o => ExtractTagList <string>(o, LabelTagCategory),
             (str1, str2, client) => str2
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Assignee",
             CardFieldMeta.Assignee,
             o => ConvertUser(o),
             (str1, str2, client) => string.IsNullOrEmpty(str1) ? (User)null : client.GetUser((string)str1)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Reporter",
             CardFieldMeta.Reporter,
             o => ConvertUser(o),
             (str1, str2, client) => string.IsNullOrEmpty(str1) ? (User)null : client.GetUser((string)str1)
             ),
         new Tuple <string, CardFieldMeta, Func <dynamic, object>, Func <string, string, ICardManagerClient, object> >(
             "Creator",
             CardFieldMeta.Creator,
             o => ConvertUser(o),
             (str1, str2, client) => string.IsNullOrEmpty(str1) ? (User)null : client.GetUser((string)str1)
             ),
     };
     if (overrides != null)
     {
         _fieldMappingOverrides = new Dictionary <CardFieldMeta, string>(overrides);
     }
 }