module EgovUtils module Iszr module LegalPeople class CreateRequest < Request string :ico private def handle_response! if internal_error_code errors.add(:base, internal_error_code) return end EgovUtils::Services::Iszr::LegalPeople.new( name: response_body.xpath('//NazevOsoby').text.capitalize, ico: response_body.xpath('//Ico').text, remote_id: response_body.xpath('//Ico').text ) end def body Nokogiri::XML::Builder.new do |xml| xml['e256'].RosCtiIco2( 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'urn:cz:isvs:iszr:schemas:IszrRosCtiIco2:v1 IszrRosCtiIco2.xsd', 'xmlns:abs' => 'urn:cz:isvs:iszr:schemas:IszrAbstract:v1', 'xmlns:e256' => 'urn:cz:isvs:iszr:schemas:IszrRosCtiIco2:v1', 'xmlns:reg' => 'urn:cz:isvs:reg:schemas:RegTypy:v1', 'xmlns:ros' => 'urn:cz:isvs:ros:schemas:RosDotazyData:v2' ) { xml['abs'].ZadostInfo { xml['reg'].CasZadosti Time.current.iso8601 xml['reg'].Agenda EgovUtils::Settings['iszr']['agenda'] xml['reg'].AgendovaRole EgovUtils::Settings['iszr']['agendova_role'] xml['reg'].Ovm '00025429' xml['reg'].Ais EgovUtils::Settings['iszr']['ais'] xml['reg'].Subjekt '00025429' xml['reg'].Uzivatel 'Administrator' xml['reg'].DuvodUcel 'ztotozneni' xml['reg'].AgendaZadostId SecureRandom.uuid } xml['abs'].AutorizaceInfo { xml['abs'].SeznamUdaju 'ObchodniNazev AdresaSidla ROBCti ROSCti RUIANCti' } xml['e256'].Zadost { xml['e256'].RosCtiIco2Data { xml['ros'].Ico ico } } } end end def response_error_code @response_error_code ||= response_body.xpath('//VysledekSubKod').last&.text&.presence end def internal_error_code return unless response_error_code if response_error_code == 'ZAZNAM NENALEZEN' "not_found" elsif response_error_code == 'PREKROCEN POCET' "multiple_records_found" end end def service_id 'E256' end end end end end