Class: OnboardOnRails::Api::CompletionsController

Inherits:
BaseController show all
Defined in:
app/controllers/onboard_on_rails/api/completions_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#current_user

Instance Method Details

#createObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/onboard_on_rails/api/completions_controller.rb', line 4

def create
  completion = Completion.find_or_initialize_by(
    tour_id: params[:tour_id],
    user_id: current_user.id
  )

  was_new = completion.new_record?
  completion.step_id = params[:step_id]
  completion.status = params[:status]
  completion.session_id = params[:session_id]
  completion.started_at ||= Time.current
  completion.completed_at = Time.current if params[:status] == "completed"

  if params[:matched_step_id].present? && params[:matched_url].present?
    completion.matched_urls[params[:matched_step_id].to_s] = params[:matched_url]
  end

  if completion.save
    status_code = was_new ? :created : :ok
    render json: { completion: { id: completion.id, tour_id: completion.tour_id, status: completion.status } }, status: status_code
  else
    render json: { errors: completion.errors.full_messages }, status: :unprocessable_entity
  end
end