diff options
| author | Robert | 2017-08-01 10:49:35 +0200 | 
|---|---|---|
| committer | Robert | 2017-08-02 05:51:07 +0200 | 
| commit | 9387e31a76d9bae4cdb94622081246eea6d6c8d7 (patch) | |
| tree | 0f83fb65d26b615ca4d19e45966fcf420352bcaf /app/controllers/api | |
| parent | 0b198fa8dece545f7cfd282d9a10d0638b0491b4 (diff) | |
| download | chouette-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.rb | 52 | 
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  | 
