Commit 0dc84db9 by Tấn Trần Thanh

cover case data column equal nil and refactor code

parent 63e50323
Pipeline #1564 failed with stages
in 0 seconds
......@@ -19,10 +19,9 @@ class WorkflowReportController < ApplicationController
2023,
3,
DateTime.new(2023, 3).beginning_of_day,
DateTime.new(2023, 3, -1).end_of_day
])
DateTime.new(2023, 3, -1).end_of_day])
.distinct.pluck(:root_id)
return unless root_ids.length > 0
return unless root_ids.length.positive?
sum_hours_records = Issue.select('issues.root_id, sum(time_entries.hours) as hours, max(IFNULL(c1.value,-1)) as testcases, max(IFNULL(c2.value,-1)) as bugs,max(IFNULL(stg.value,-1)) as stg_bugs, max(IFNULL(prod.value,-1)) as prod_bugs')
.joins('INNER JOIN time_entries ON issues.id = time_entries.issue_id')
......@@ -57,47 +56,36 @@ class WorkflowReportController < ApplicationController
@result[2] << record.first[:subject].gsub(/[^[:print:]]/, '')
@result[3] << record.first[:target_version]
issue_created_on = record.min_by { |i| i[:created_on] if i[:created_on].present? }
if issue_created_on.present?
@result[4] << issue_created_on[:created_on]&.strftime('%Y-%m-%d %H:%M:%S')
else
@result[4] << nil
end
@result[4].push(issue_created_on.present? ? issue_created_on[:created_on]&.strftime('%Y-%m-%d %H:%M:%S') : '')
issue_closed_on = record.max_by { |i| i[:closed_on] if i[:closed_on].present? }
if issue_closed_on.present?
@result[5] << issue_closed_on[:closed_on]&.strftime('%Y-%m-%d %H:%M:%S')
else
@result[5] << nil
end
issue_due_dates = record.map(&:due_date).compact
@result[5].push(issue_closed_on.present? ? issue_closed_on[:closed_on]&.strftime('%Y-%m-%d %H:%M:%S') : '')
issue_due_dates = record.map(&:due_date).compact
issue_due_date = issue_due_dates.max_by { |a| a }
if issue_due_date.present?
@result[6] << issue_due_date&.strftime('%Y-%m-%d %H:%M:%S')
else
@result[6] << nil
end
@result[7] << record.first[:status]
@result[6].push(issue_due_date.present? ? issue_due_date&.strftime('%Y-%m-%d %H:%M:%S') : '')
@result[7].push(record.first[:status].present? ? record.first[:status] : '')
sum_estimated_hours = record.map { |i| i[:estimated_hours] }.compact.sum
@result[8] << sum_estimated_hours
if sum_hours_record.present?
@result[9] << sum_hours_record[:hours]
@result[10] << (sum_hours_record[:hours] - sum_estimated_hours)
else
@result[9] << nil
@result[10] << nil
@result[9] << ''
@result[10] << ''
end
if journals.length > 0
number_of_est_changes = journals.count { |j| !j[1].nil? } || nil
if journals.length.positive?
number_of_est_changes = journals.count { |j| !j[1].nil? } || ''
est_changes = journals.reject { |j| j[1].nil? }.select { |e| e[4].present? }
notes = est_changes.inject("") { |all, i| all + i[4] + "\n" } || nil
original_est_hours = journals.group_by(&:shift).inject(0) { |sum, i| sum + i[1][0][1].to_f unless i.nil? }
notes = est_changes.inject('') { |all, i| "#{all}#{i[4]}\n" } || ''
original_est_hours = journals.group_by(&:shift).inject(0) { |sum, i| sum + i[1][0][1].to_f unless i.nil? } || ''
@result[11] << original_est_hours
@result[12] << number_of_est_changes
@result[13] << notes
else
@result[11] << nil
@result[12] << nil
@result[13] << nil
@result[11] << ''
@result[12] << ''
@result[13] << ''
end
pull_request = ''
jp_request = ''
......@@ -109,53 +97,41 @@ class WorkflowReportController < ApplicationController
process = get_process(issue.subject.gsub(/[^[:print:]]/, ''))
index_1 = 14 # first index for estimation detail
index_2 = 21 # first index for actual detail
case process
when '1. Requirement'
@result[index_1] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2] << +issue.spent_hours if issue.spent_hours > 0
@result[index_1].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2].push(issue.spent_hours.positive? ? issue.spent_hours : '')
when '2. Design'
@result[index_1 + 1] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2 + 1] << issue.spent_hours if issue.spent_hours > 0
@result[index_1 + 1].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 1].push(issue.spent_hours.positive? ? issue.spent_hours : '')
when '3. Coding'
@result[index_1 + 2] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2 + 2] << issue.spent_hours if issue.spent_hours > 0
@result[index_1 + 2].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 2].push(issue.spent_hours.positive? ? issue.spent_hours : '')
when '4. Testing'
@result[index_1 + 3] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2 + 3] << issue.spent_hours if issue.spent_hours > 0
@result[index_1 + 3].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 3].push(issue.spent_hours.positive? ? issue.spent_hours : '')
when '5. Bug fixing'
@result[index_1 + 4] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2 + 4] << issue.spent_hours if issue.spent_hours > 0
@result[index_1 + 4].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 4].push(issue.spent_hours.positive? ? issue.spent_hours : '')
when '6. Release'
@result[index_1 + 5] << issue.estimated_hours if issue.estimated_hours.present?
@result[index_2 + 5] << issue.spent_hours if issue.spent_hours > 0
@result[index_1 + 5].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 5].push(issue.spent_hours.positive? ? issue.spent_hours : '')
else
if issue.estimated_hours.present?
# if @result[index_1+ 6 ].present? // recheck
# @result[index_1+ 6 ] << worksheet[row, index_1 + 6].to_f + issue.estimated_hours
# else
@result[index_1 + 6] << issue.estimated_hours
# end
end
if issue.spent_hours > 0
# if @result[index_2 + 6].present?
# @result[index_2 + 6] << worksheet[row, index_2 + 6].to_f + issue.spent_hours
# else
@result[index_2 + 6] << issue.spent_hours
# end
end
@result[index_1 + 6].push(issue.estimated_hours.present? ? issue.estimated_hours : '')
@result[index_2 + 6].push(issue.spent_hours.positive? ? issue.spent_hours : '')
end
end
if sum_hours_record.nil?
# testcases
@result[28] << nil
@result[28] << ''
# internal bug
@result[29] << nil
@result[29] << ''
# stg bug
@result[30] << nil
@result[30] << ''
# prod bug
@result[31] << nil
@result[31] << ''
else
# testcases
@result[28] << sum_hours_record[:testcases] if sum_hours_record[:testcases].to_i >= 0
# internal bug
......@@ -164,18 +140,21 @@ class WorkflowReportController < ApplicationController
@result[30] << sum_hours_record[:stg_bugs] if sum_hours_record[:stg_bugs].to_i >= 0
# prod bug
@result[31] << sum_hours_record[:prod_bugs] if sum_hours_record[:prod_bugs].to_i >= 0
end
if jp_request.present?
jp_request = jp_request.strip
@result[32] << jp_request
jp_request_arr = URI(jp_request).path.split('/').reject { |element| element.blank? }
next unless jp_request_arr.length == 4 && jp_request_arr[3].to_i > 0
jp_request_arr = URI(jp_request).path.split('/').reject(&:blank?)
if jp_request_arr.length == 4 && jp_request_arr[3].to_i.positive?
issue_detail = github.issues.find user: jp_request_arr[0], repo: jp_request_arr[1], number: jp_request_arr[3]
@result[33] << issue_detail.comments if issue_detail.success?
@result[33].push(issue_detail.success? ? issue_detail.comments : '')
end
else
@result[32] << ''
@result[33] << ''
end
# pr detail
if pull_request.present?
next unless pull_request.present?
pr_comments = 0
pr_review_comments = 0
pr_commits = 0
......@@ -207,8 +186,6 @@ class WorkflowReportController < ApplicationController
end
end
end
end
end
private
......@@ -219,30 +196,27 @@ class WorkflowReportController < ApplicationController
id = subject[0, 1]
name = subject[0, index]
if id.to_i != 0
if ["3. Code review"].include? name
name = "3. Coding"
elsif ["4. Create Test case"].include? name
name = "4. Testing"
if ['3. Code review'].include? name
name = '3. Coding'
elsif ['4. Create Test case'].include? name
name = '4. Testing'
else
name
end
else
if name.include? "Requirement"
name = "1. " + name
elsif name.include? "Design"
name = "2. " + name
elsif ["Coding", "Code review"].include? name
name = "3. Coding"
elsif ["Testing", "Create Test case"].include? name
name = "4. Testing"
elsif name.include? "Bug fixing"
name = "5. " + name
elsif name.include? "Release"
name = "6. " + name
end
elsif name.include? 'Requirement'
name = "1. #{name}"
elsif name.include? 'Design'
name = "2. #{name}"
elsif ['Coding', 'Code review'].include? name
name = '3. Coding'
elsif ['Testing', 'Create Test case'].include? name
name = '4. Testing'
elsif name.include? 'Bug fixing'
name = "5. #{name}"
elsif name.include? 'Release'
name = "6. #{name}"
end
end
name.strip
end
end
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment