Sha256: 292ebe9a4af4acf917fa974a26417be44f63b69635fd12acf0dd2060a85c79be

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

module Roqua
  module CoreApi
    # @api private
    class CreateDossier < Base
      object :session, class: Sessions::AuthSession
      string :dossier_group_id
      object :dossier, class: Models::Dossier, default: nil
      object :person, class: Models::Person, default: nil

      def execute
        response = session.post "/dossier_groups/#{dossier_group_id}/dossiers",
                                person: person_attributes, dossier: dossier_attributes
        if response.code == 422
          errors_to_object(response, person)
          errors_to_object(response, dossier)
        end
        Models::Dossier.new(response)
      end

      private

      def dossier_attributes
        return {} unless dossier
        dossier.serializable_hash(except: :people).keep_if { |_k, v| !v.nil? }
      end

      def person_attributes
        return {} unless person
        person.serializable_hash.keep_if { |_k, v| !v.nil? }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roqua-core-api-0.2.0 lib/roqua/core_api/create_dossier.rb