139 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
#coding=utf-8
 | 
						|
class ClaimsController < ApplicationController
 | 
						|
    # skip_before_action :verify_authenticity_token
 | 
						|
    protect_from_forgery with: :null_session
 | 
						|
    before_action :require_login, except: [:index]
 | 
						|
    before_action :set_issue
 | 
						|
 | 
						|
    def index
 | 
						|
        @user_claimed = 0
 | 
						|
        @claims = @issue.claims.claim_includes.order("created_at desc")
 | 
						|
    
 | 
						|
        @claims.each do |claim|
 | 
						|
            if claim.user_id == current_user.id
 | 
						|
                @user_claimed = 1
 | 
						|
                break
 | 
						|
            end
 | 
						|
        end 
 | 
						|
        render file: 'app/views/claims/list.json.jbuilder'
 | 
						|
    end
 | 
						|
 | 
						|
    def create
 | 
						|
        @claim = Claim.find_by_sql(["select id from claims where issue_id=? and user_id=?",params[:issue_id], current_user.id])
 | 
						|
        if @claim.present?
 | 
						|
            return normal_status(-1,"您已经声明过该易修")
 | 
						|
        end
 | 
						|
 | 
						|
        ActiveRecord::Base.transaction do
 | 
						|
            @claim = Claim.new(parse_issue_params(params))
 | 
						|
            if @claim.save
 | 
						|
                @claims = @issue.claims.claim_includes.order("created_at desc")
 | 
						|
                @user_claimed = 1
 | 
						|
                
 | 
						|
                journal_params = {
 | 
						|
                    journalized_id: params[:issue_id],
 | 
						|
                    journalized_type: "Issue",
 | 
						|
                    user_id: current_user.id ,
 | 
						|
                    notes: "新建声明: #{params[:claim_note]}",
 | 
						|
                }
 | 
						|
 | 
						|
                journal = Journal.new(journal_params)
 | 
						|
                if journal.save
 | 
						|
                    SendTemplateMessageJob.perform_later('IssueClaim', current_user.id, @issue&.id) 
 | 
						|
                    render file: 'app/views/claims/list.json.jbuilder'
 | 
						|
                else
 | 
						|
                    normal_status(-1,"新建声明关联评论操作失败")
 | 
						|
                end
 | 
						|
 | 
						|
            else
 | 
						|
                normal_status(-1,"新建声明操作失败")
 | 
						|
            end
 | 
						|
        end 
 | 
						|
    end
 | 
						|
 | 
						|
    def update
 | 
						|
        @claim =  Claim.find_by_id(params[:claim_id])
 | 
						|
        if @claim.blank? 
 | 
						|
            return normal_status(-1,"易修不存在")
 | 
						|
        end
 | 
						|
 | 
						|
        if @claim.user_id != current_user.id
 | 
						|
            return normal_status(-1,"你不能更新别人的声明")
 | 
						|
        end
 | 
						|
 | 
						|
        ActiveRecord::Base.transaction do
 | 
						|
            if @claim.update_attribute(:note,params[:claim_note])
 | 
						|
                @claims = @issue.claims.claim_includes.order("created_at desc")
 | 
						|
                @user_claimed = 1
 | 
						|
               
 | 
						|
                journal_params = {
 | 
						|
                    journalized_id: params[:issue_id],
 | 
						|
                    journalized_type: "Issue",
 | 
						|
                    user_id: current_user.id ,
 | 
						|
                    notes: "更新声明: #{params[:claim_note]}",
 | 
						|
                }
 | 
						|
 | 
						|
                journal = Journal.new(journal_params)
 | 
						|
                if journal.save
 | 
						|
                    render file: 'app/views/claims/list.json.jbuilder'
 | 
						|
                else
 | 
						|
                    normal_status(-1,"新建声明关联评论操作失败")
 | 
						|
                end
 | 
						|
 | 
						|
            else
 | 
						|
                normal_status(-1,"声明更新操作失败")
 | 
						|
            end
 | 
						|
        end 
 | 
						|
    end
 | 
						|
 | 
						|
    def destroy
 | 
						|
        @claim = Claim.find_by_sql(["select id from claims where issue_id=? and user_id=?",params[:issue_id], current_user.id])
 | 
						|
        if @claim.blank?
 | 
						|
            normal_status(-1,"您未曾声明过该易修")
 | 
						|
        else 
 | 
						|
            @claim = @claim[0]
 | 
						|
            # 判断current user是否是claimer
 | 
						|
            ActiveRecord::Base.transaction do
 | 
						|
                if @claim.destroy
 | 
						|
 | 
						|
                    @claims = @issue.claims.claim_includes.order("created_at desc")
 | 
						|
                    @user_claimed = 0
 | 
						|
 | 
						|
                    journal_params = {
 | 
						|
                        journalized_id: params[:issue_id],
 | 
						|
                        journalized_type: "Issue",
 | 
						|
                        user_id: current_user.id ,
 | 
						|
                        notes: "取消声明",
 | 
						|
                    }
 | 
						|
    
 | 
						|
                    journal = Journal.new(journal_params)
 | 
						|
                    if journal.save
 | 
						|
                        render file: 'app/views/claims/list.json.jbuilder'
 | 
						|
                    else
 | 
						|
                        normal_status(-1,"新建声明关联评论操作失败")
 | 
						|
                    end
 | 
						|
 | 
						|
                else
 | 
						|
                    normal_status(-1,"取消声明操作失败")
 | 
						|
                end
 | 
						|
            end 
 | 
						|
        end 
 | 
						|
    end
 | 
						|
 | 
						|
    private
 | 
						|
    def parse_issue_params(params)
 | 
						|
        {
 | 
						|
            issue_id: params[:issue_id],
 | 
						|
            user_id: current_user.id,
 | 
						|
            note: params[:claim_note],
 | 
						|
        }
 | 
						|
    end
 | 
						|
 | 
						|
    def set_issue
 | 
						|
        @issue = Issue.find_by_id(params[:issue_id])
 | 
						|
        unless @issue.present?
 | 
						|
          normal_status(-1, "易修不存在")
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
end |