app/controllers/api/v8/core/courses/unlocks_controller.rb
# frozen_string_literal: true
module Api
module V8
module Core
module Courses
class UnlocksController < Api::V8::BaseController
include Swagger::Blocks
swagger_path '/api/v8/core/courses/{course_id}/unlock' do
operation :post do
key :description, 'Unlocks the courses exercises'
key :operationId, 'unlockCoursesExercises'
key :produces, ['application/json']
key :tags, ['core']
parameter '$ref': '#/parameters/path_course_id'
response 200 do
key :description, "status 'ok' and unlocks exercises"
schema do
key :title, :status
key :required, [:status]
property :status, type: :string, example: 'ok'
end
end
response 403, '$ref': '#/responses/error'
response 404, '$ref': '#/responses/error'
end
end
around_action :wrap_transaction
def create
unauthorize_guest!
course = Course.find(params[:course_id])
authorize! :read, course
exercises = course.unlockable_exercises_for(current_user)
Unlock.unlock_exercises(exercises, current_user)
present(status: 'ok')
end
end
end
end
end
end