OpenFn/OpenFn-Site

View on GitHub
app/controllers/odk_sf_legacy/salesforce_objects_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
module OdkSfLegacy
  class SalesforceObjectsController < ApplicationController

    before_action :load_mapping
    before_action :load_salesforce_object, only: [:update, :destroy, :refresh_fields]

    def create
      salesforce_object = @mapping.salesforce_objects.new(salesforce_object_params)
      if salesforce_object.save
        render json: salesforce_object.reload
      else
        render json: {errors: salesforce_object.errors.full_messages}, status: 422
      end
    end

    def update
      if @salesforce_object.update(salesforce_object_params)
        render json: @salesforce_object
      else
        render json: {errors: @salesforce_object.errors.full_messages}, status: 422
      end
    end

    def destroy
      if @salesforce_object.destroy
        render json: true
      else
        render json: {errors: @salesforce_object.errors.full_messages}, status: 422
      end
    end

    def refresh_fields
      if @salesforce_object.create_fields_from_salesforce
        render json: @salesforce_object.reload
      else
        render json: {errors: @salesforce_object.errors.full_messages}, status: 422
      end
    end

    protected

    def load_mapping
      @mapping = current_user.mappings.find params[:mapping_id]
    end

    def load_salesforce_object
      @salesforce_object = @mapping.salesforce_objects.find params[:id]
    end


    def salesforce_object_params
      params.require(:salesforce_object).permit(:name, :label, :order, :is_repeat)
    end

  end
end