aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/api
diff options
context:
space:
mode:
authorRobert2017-08-01 10:49:35 +0200
committerRobert2017-08-02 05:51:07 +0200
commit9387e31a76d9bae4cdb94622081246eea6d6c8d7 (patch)
tree0f83fb65d26b615ca4d19e45966fcf420352bcaf /app/controllers/api
parent0b198fa8dece545f7cfd282d9a10d0638b0491b4 (diff)
downloadchouette-core-9387e31a76d9bae4cdb94622081246eea6d6c8d7.tar.bz2
Refs: #4176@3h; NetexImportController refactored with help of ControlFlow
Diffstat (limited to 'app/controllers/api')
-rw-r--r--app/controllers/api/v1/netex_imports_controller.rb52
1 files changed, 36 insertions, 16 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb
index e9b8242bd..17eec2ef8 100644
--- a/app/controllers/api/v1/netex_imports_controller.rb
+++ b/app/controllers/api/v1/netex_imports_controller.rb
@@ -1,34 +1,54 @@
module Api
module V1
class NetexImportsController < ChouetteController
+ include ControlFlow
def create
respond_to do | format |
- format.json do
- workbench = Workbench.where(id: netex_import_params['workbench_id']).first
- if workbench
- @referential = Referential.new(name: netex_import_params['name'], organisation_id: workbench.organisation_id, workbench_id: workbench.id)
- @import = NetexImport.new(netex_import_params)
- if @import.valid? && @referential.valid?
- @import.save!
- @referential.save!
- else
- render json: {errors: @import.errors.to_h.merge( @referential.errors.to_h )}, status: 406
- end
- else
- render json: {errors: {'workbench_id' => 'missing'}}, status: 406
- end
- end
+ format.json(&method(:create_models))
end
end
private
+ def find_workbench
+ @workbench = Workbench.find(netex_import_params['workbench_id'])
+ rescue ActiveRecord::RecordNotFound
+ render json: {errors: {'workbench_id' => 'missing'}}, status: 406
+ finish_action!
+ end
+
+ def create_models
+ find_workbench
+ create_referential
+ create_netex_import
+ end
+
+ def create_netex_import
+ @netex_import = NetexImport.new(netex_import_params.merge(referential_id: @new_referential.id))
+ @netex_import.save!
+ rescue ActiveRecord::RecordInvalid
+ render json: {errors: @netex_import.errors}, status: 406
+ finish_action!
+ end
+
+ def create_referential
+ @new_referential =
+ Referential.new(
+ name: netex_import_params['name'],
+ organisation_id: @workbench.organisation_id,
+ workbench_id: @workbench.id)
+ @new_referential.save!
+ rescue ActiveRecord::RecordInvalid
+ render json: {errors: @new_referential.errors}, status: 406
+ finish_action!
+ end
+
def netex_import_params
params
.require('netex_import')
- .permit(:file, :name, :referential_id, :workbench_id)
+ .permit(:file, :name, :workbench_id)
end
end
end