You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							2.6 KiB
						
					
					
				module Imports | 
						|
  class OrganisationImportService < ImportService | 
						|
    def create_organisations(folder) | 
						|
      import_from(folder, :create_organisation) | 
						|
    end | 
						|
 | 
						|
  private | 
						|
 | 
						|
    PROVIDER_TYPE = { | 
						|
      "HOUSING-ASSOCIATION" => Organisation.provider_types[:PRP], | 
						|
    }.freeze | 
						|
 | 
						|
    def create_organisation(xml_document) | 
						|
      Organisation.create!( | 
						|
        name: organisation_field_value(xml_document, "name"), | 
						|
        provider_type: PROVIDER_TYPE[organisation_field_value(xml_document, "institution-type")], | 
						|
        phone: organisation_field_value(xml_document, "telephone-number"), | 
						|
        holds_own_stock: to_boolean(organisation_field_value(xml_document, "holds-stock")), | 
						|
        active: to_boolean(organisation_field_value(xml_document, "active")), | 
						|
        old_association_type: organisation_field_value(xml_document, "old-association-type"), | 
						|
        software_supplier_id: organisation_field_value(xml_document, "software-supplier-id"), | 
						|
        housing_management_system: organisation_field_value(xml_document, "housing-management-system"), | 
						|
        choice_based_lettings: to_boolean(organisation_field_value(xml_document, "choice-based-lettings")), | 
						|
        common_housing_register: to_boolean(organisation_field_value(xml_document, "common-housing-register")), | 
						|
        choice_allocation_policy: to_boolean(organisation_field_value(xml_document, "choice-allocation-policy")), | 
						|
        cbl_proportion_percentage: organisation_field_value(xml_document, "cbl-proportion-percentage"), | 
						|
        enter_affordable_logs: to_boolean(organisation_field_value(xml_document, "enter-affordable-logs")), | 
						|
        owns_affordable_logs: to_boolean(organisation_field_value(xml_document, "owns-affordable-rent")), | 
						|
        housing_registration_no: organisation_field_value(xml_document, "housing-registration-no"), | 
						|
        general_needs_units: organisation_field_value(xml_document, "general-needs-units"), | 
						|
        supported_housing_units: organisation_field_value(xml_document, "supported-housing-units"), | 
						|
        unspecified_units: organisation_field_value(xml_document, "unspecified-units"), | 
						|
        old_org_id: organisation_field_value(xml_document, "id"), | 
						|
        old_visible_id: organisation_field_value(xml_document, "visible-id"), | 
						|
      ) | 
						|
    rescue ActiveRecord::RecordNotUnique | 
						|
      name = organisation_field_value(xml_document, "name") | 
						|
      old_visible_id = organisation_field_value(xml_document, "visible-id") | 
						|
      @logger.warn("Organisation #{name} is already present with old visible ID #{old_visible_id}, skipping.") | 
						|
    end | 
						|
 | 
						|
    def organisation_field_value(xml_document, field) | 
						|
      field_value(xml_document, "institution", field) | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |