OpenFn/OpenFn-Site

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

Summary

Maintainability
A
20 mins
Test Coverage
module OdkSfLegacy
  class OdkFieldSalesforceFieldsController < ApplicationController

    before_action :load_mapping
    before_action :load_odk_field

    def create
      @odk_field_salesforce_field = @odk_field.odk_field_salesforce_fields.new salesforce_field_params
      if @odk_field_salesforce_field.save
        render json: @odk_field_salesforce_field
      else
        render json: {errors: @odk_field_salesforce_field.errors.full_messages}, status: 422
      end
    end

    def destroy
      @odk_field_salesforce_field = @odk_field.odk_field_salesforce_fields.find_by(salesforce_field_id: params[:id])
      if @odk_field_salesforce_field.destroy
        render json: true
      else
        render json: {errors: @odk_field_salesforce_field.errors.full_messages}, status: 422
      end
    end

    def update
      @odk_field_salesforce_field = @odk_field.odk_field_salesforce_fields.find_by(salesforce_field_id: params[:id])
      if @odk_field_salesforce_field.update(salesforce_field_params)
        render json: true
      else
        render json: {errors: @odk_field_salesforce_field.errors.full_messages}, status: 422
      end
    end

    protected

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

    def load_odk_field
      @odk_field = @mapping.odk_fields.find params[:odk_field_id]
    end

    def salesforce_field_params
      params.require(:odk_field_salesforce_field).permit(:salesforce_field_id, :lookup_field_name)
    end

  end
end