demarches-normaliennes/app/controllers/api/v1/dossiers_controller.rb

51 lines
1.3 KiB
Ruby
Raw Normal View History

2016-01-20 15:48:46 +01:00
class API::V1::DossiersController < APIController
before_action :fetch_procedure_and_check_token
DEFAULT_PAGE_SIZE = 100
2016-01-20 15:48:46 +01:00
def index
2018-11-01 14:04:32 +01:00
dossiers = @dossiers.page(params[:page]).per(per_page)
2016-11-15 09:54:17 +01:00
render json: { dossiers: dossiers.map { |dossier| DossiersSerializer.new(dossier) }, pagination: pagination(dossiers) }, status: 200
2017-04-14 17:05:38 +02:00
rescue ActiveRecord::RecordNotFound
2016-01-20 15:48:46 +01:00
render json: {}, status: 404
end
def show
2018-11-01 14:04:32 +01:00
dossier = @dossiers.for_api.find(params[:id])
2016-11-15 09:54:17 +01:00
2016-02-19 16:59:18 +01:00
respond_to do |format|
format.json { render json: { dossier: DossierSerializer.new(dossier).as_json }, status: 200 }
2016-02-19 16:59:18 +01:00
end
2017-04-14 17:05:38 +02:00
rescue ActiveRecord::RecordNotFound
render json: {}, status: 404
end
private
def pagination(dossiers)
2016-01-20 15:48:46 +01:00
{
2018-01-15 19:02:12 +01:00
page: dossiers.current_page,
resultats_par_page: dossiers.limit_value,
nombre_de_page: dossiers.total_pages
2016-01-20 15:48:46 +01:00
}
end
2017-12-28 19:31:28 +01:00
def per_page # inherited value from will_paginate
[params[:resultats_par_page]&.to_i || DEFAULT_PAGE_SIZE, 1000].min
2017-12-28 19:31:28 +01:00
end
def fetch_procedure_and_check_token
2018-11-01 14:04:32 +01:00
@procedure = Procedure.for_api.find(params[:procedure_id])
if !valid_token_for_procedure?(@procedure)
render json: {}, status: :unauthorized
end
2018-11-01 14:04:32 +01:00
@dossiers = @procedure.dossiers.state_not_brouillon
rescue ActiveRecord::RecordNotFound
render json: {}, status: :not_found
end
2017-04-04 15:27:04 +02:00
end