Defect #24693 » issue-destroy-also-reassign-descendants-spent-hours.patch
app/controllers/issues_controller.rb | ||
---|---|---|
343 | 343 | |
344 | 344 |
def destroy |
345 | 345 |
raise Unauthorized unless @issues.all?(&:deletable?) |
346 |
@hours = TimeEntry.where(:issue_id => @issues.map(&:id)).sum(:hours).to_f |
|
346 |
issues_and_descendants_time_entries = TimeEntry.where([ |
|
347 |
'issue_id IN (?)', @issues.collect(&:self_and_descendants).flatten |
|
348 |
]) |
|
349 |
@hours = issues_and_descendants_time_entries.sum(:hours).to_f |
|
347 | 350 |
if @hours > 0 |
348 | 351 |
case params[:todo] |
349 | 352 |
when 'destroy' |
350 | 353 |
# nothing to do |
351 | 354 |
when 'nullify' |
352 |
TimeEntry.where(['issue_id IN (?)', @issues]).update_all('issue_id = NULL')
|
|
355 |
issues_and_descendants_time_entries.update_all('issue_id = NULL')
|
|
353 | 356 |
when 'reassign' |
354 | 357 |
reassign_to = @project.issues.find_by_id(params[:reassign_to_id]) |
355 | 358 |
if reassign_to.nil? |
356 | 359 |
flash.now[:error] = l(:error_issue_not_found_in_project) |
357 | 360 |
return |
358 | 361 |
else |
359 |
TimeEntry.where(['issue_id IN (?)', @issues]). |
|
360 |
update_all("issue_id = #{reassign_to.id}") |
|
362 |
issues_and_descendants_time_entries.update_all("issue_id = #{reassign_to.id}") |
|
361 | 363 |
end |
362 | 364 |
else |
363 | 365 |
# display the destroy form if it's a user request |