|
- class Users::MessagesController < Users::BaseController
- before_action :private_user_resources!
- before_action :find_receivers, only: [:create]
- before_action :check_auth
-
- def index
- limit = params[:limit] || params[:per_page]
- limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i
- page = params[:page].to_i.zero? ? 1 : params[:page].to_i
- result = Notice::Read::ListService.call(observed_user.id, message_type, message_status, page, limit)
- return render_error if result.nil?
- @data = result[2]
- rescue
- render_ok
- end
-
- def create
- return render_forbidden unless %w(atme).include?(params[:type])
- case params[:type]
- when 'atme'
- Notice::Write::CreateAtmeForm.new(atme_params).validate!
- case atme_params[:atmeable_type]
- when 'Issue'
- SendTemplateMessageJob.perform_now('IssueAtme', @receivers, current_user.id, atme_params[:atmeable_id]) if Site.has_notice_menu?
- when 'PullRequest'
- SendTemplateMessageJob.perform_now('PullRequestAtme', @receivers, current_user.id, atme_params[:atmeable_id]) if Site.has_notice_menu?
- when 'Journal'
- journal = Journal.find_by_id(atme_params[:atmeable_id])
- if journal.present?
- if journal&.issue&.pull_request.present?
- SendTemplateMessageJob.perform_now('PullRequestAtme', @receivers, current_user.id, atme_params[:atmeable_id]) if Site.has_notice_menu?
- else
- SendTemplateMessageJob.perform_now('IssueAtme', @receivers, current_user.id, atme_params[:atmeable_id]) if Site.has_notice_menu?
- end
- end
- end
- end
- render_ok
- rescue Exception => e
- uid_logger_error(e.message)
- tip_exception(e.message)
- end
-
- def delete
- return render_forbidden unless %w(atme).include?(params[:type])
- result = Notice::Write::DeleteService.call(params[:ids], observed_user.id, message_type)
- return render_error if result.nil?
-
- render_ok
- rescue Exception => e
- uid_logger_error(e.message)
- tip_exception(e.message)
- end
-
- def read
- return render_forbidden unless %w(notification atme).include?(params[:type])
- result = Notice::Write::ChangeStatusService.call(params[:ids], observed_user.id, message_type)
- if result.nil?
- render_error
- else
- render_ok
- end
- rescue Exception => e
- uid_logger_error(e.message)
- tip_exception(e.message)
- end
-
- private
- def check_auth
- return render_forbidden unless current_user.admin? || observed_logged_user?
- end
-
- def message_type
- @message_type = begin
- case params[:type]
- when "notification" then 1
- when "atme" then 2
- else
- -1
- end
- end
- end
-
- def message_status
- @message_status = begin
- case params[:status]
- when "1" then 1
- when "2" then 2
- else
- -1
- end
- end
- end
-
- def atme_params
- params.permit(:atmeable_type, :atmeable_id, receivers_login: [])
- end
-
- def find_receivers
- @receivers = User.where(login: params[:receivers_login])
- return render_not_found if @receivers.size == 0
- end
- end
|