proposals_discussion_plugin_confirm_tasks_controller.rb 1.28 KB
class ProposalsDiscussionPluginConfirmTasksController < MyProfileController
  protect :perform_task, :profile, :only => [:approve_proposal, :reprove_proposal]

  def approve_proposal
    result = {}
    if request.post?
      result = process_decision(params, :finish)
    end
    render json: result
  end

  def reprove_proposal
    result = {}
    if request.post?
      result = process_decision(params, :cancel)
    end
    render json: result
  end

private

  def process_decision(params, decision)
    result = {
      success: false,
      message: _('Error flagging proposal. Please, contact the system admin')
    }
    if params[:task_id] and request.post?
      begin
        task = profile.find_in_all_tasks(params[:task_id])
        task.tag_list = params[:tag_list] if params[:tag_list].presence
        task.article_parent_id = params[:article_parent_id] if decision.to_s == 'finish'
        task.email_template_id = params[:email_template_id]
        task.send(decision, current_person)
        result = {:success =>  true }
      rescue Exception => ex
        message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" if task
        message = "#{message} #{ex.message}"
        result[:message] += ". #{message}"
      end
      return result
    end
  end
end