(data *JiraTaskData, mappings *typeMappings, apiIssue *apiv2models.Issue, row *api.RawData, userFieldMaps map[string]struct{})
| 106 | } |
| 107 | |
| 108 | func extractIssues(data *JiraTaskData, mappings *typeMappings, apiIssue *apiv2models.Issue, row *api.RawData, userFieldMaps map[string]struct{}) ([]interface{}, errors.Error) { |
| 109 | err := apiIssue.SetAllFields(row.Data) |
| 110 | if err != nil { |
| 111 | return nil, err |
| 112 | } |
| 113 | var results []interface{} |
| 114 | // if the field `created` is nil, ignore it |
| 115 | if apiIssue.Fields.Created == nil { |
| 116 | return results, nil |
| 117 | } |
| 118 | sprints, issue, comments, worklogs, changelogs, changelogItems, users := apiIssue.ExtractEntities(data.Options.ConnectionId, userFieldMaps) |
| 119 | for _, sprintId := range sprints { |
| 120 | sprintIssue := &models.JiraSprintIssue{ |
| 121 | ConnectionId: data.Options.ConnectionId, |
| 122 | SprintId: sprintId, |
| 123 | IssueId: issue.IssueId, |
| 124 | IssueCreatedDate: &issue.Created, |
| 125 | ResolutionDate: issue.ResolutionDate, |
| 126 | } |
| 127 | results = append(results, sprintIssue) |
| 128 | } |
| 129 | if issue.ResolutionDate != nil { |
| 130 | temp := uint(issue.ResolutionDate.Unix()-issue.Created.Unix()) / 60 |
| 131 | issue.LeadTimeMinutes = &temp |
| 132 | } |
| 133 | if data.Options.ScopeConfig != nil && data.Options.ScopeConfig.StoryPointField != "" { |
| 134 | unknownStoryPoint := apiIssue.Fields.AllFields[data.Options.ScopeConfig.StoryPointField] |
| 135 | switch sp := unknownStoryPoint.(type) { |
| 136 | case string: |
| 137 | // string, try to parse |
| 138 | temp, _ := strconv.ParseFloat(sp, 32) |
| 139 | issue.StoryPoint = &temp |
| 140 | case nil: |
| 141 | default: |
| 142 | // not string, convert to float64, ignore it if failed |
| 143 | temp, _ := unknownStoryPoint.(float64) |
| 144 | issue.StoryPoint = &temp |
| 145 | } |
| 146 | |
| 147 | } |
| 148 | // default due date field is "duedate" |
| 149 | dueDateField := "duedate" |
| 150 | if data.Options.ScopeConfig != nil && data.Options.ScopeConfig.DueDateField != "" { |
| 151 | dueDateField = data.Options.ScopeConfig.DueDateField |
| 152 | } |
| 153 | // using location of issues.Created |
| 154 | loc := issue.Created.Location() |
| 155 | issue.DueDate, _ = utils.GetTimeFieldFromMap(apiIssue.Fields.AllFields, dueDateField, loc) |
| 156 | // code in next line will set issue.Type to issueType.Name |
| 157 | issue.Type = mappings.TypeIdMappings[issue.Type] |
| 158 | issue.StdType = mappings.StdTypeMappings[issue.Type] |
| 159 | if issue.StdType == "" { |
| 160 | issue.StdType = strings.ToUpper(issue.Type) |
| 161 | } |
| 162 | issue.StdStatus = getStdStatus(issue.StatusKey) |
| 163 | if value, ok := mappings.StandardStatusMappings[issue.Type][issue.StatusKey]; ok { |
| 164 | issue.StdStatus = value.StandardStatus |
| 165 | } |
no test coverage detected