|
- #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
|