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
|