Retrospring/app/controllers/ajax/question_controller.rb

63 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require "digest"
require "errors"
require "use_case/question/create"
require "use_case/question/create_followers"
class Ajax::QuestionController < AjaxController
def destroy
params.require :question
question = Question.find params[:question]
if question.nil?
@response[:status] = :not_found
@response[:message] = t(".notfound")
return
end
unless current_user&.mod? || question.user == current_user
@response[:status] = :not_authorized
@response[:message] = t(".noauth")
return
end
question.destroy!
@response[:status] = :okay
@response[:message] = t(".success")
@response[:success] = true
end
def create
params.require :question
params.require :anonymousQuestion
params.require :rcpt
# set up fake success response -- the use cases raise errors on exceptions
# which get rescued by the base class
@response = {
success: true,
message: t(".success"),
status: :okay
}
if user_signed_in? && params[:rcpt] == "followers"
UseCase::Question::CreateFollowers.call(
source_user_id: current_user.id,
content: params[:question],
author_identifier: AnonymousBlock.get_identifier(request.ip)
)
return
end
UseCase::Question::Create.call(
source_user_id: user_signed_in? ? current_user.id : nil,
target_user_id: params[:rcpt],
content: params[:question],
anonymous: params[:anonymousQuestion],
author_identifier: AnonymousBlock.get_identifier(request.ip)
)
end
end