diff --git a/engines/dfc_provider/app/controllers/dfc_provider/enterprises_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/enterprises_controller.rb index 00dcbfa397..5575d13f14 100644 --- a/engines/dfc_provider/app/controllers/dfc_provider/enterprises_controller.rb +++ b/engines/dfc_provider/app/controllers/dfc_provider/enterprises_controller.rb @@ -15,6 +15,7 @@ module DfcProvider render json: DfcIo.export( enterprise, + enterprise.mainContact, *enterprise.localizations, *enterprise.suppliedProducts, *enterprise.catalogItems, diff --git a/engines/dfc_provider/app/services/enterprise_builder.rb b/engines/dfc_provider/app/services/enterprise_builder.rb index f4e612461e..6b5c933c57 100644 --- a/engines/dfc_provider/app/services/enterprise_builder.rb +++ b/engines/dfc_provider/app/services/enterprise_builder.rb @@ -22,6 +22,7 @@ class EnterpriseBuilder < DfcBuilder phoneNumbers: [enterprise.phone].compact, socialMedias: SocialMediaBuilder.social_medias(enterprise), logo: enterprise.logo_url(:small), + mainContact: contact(enterprise), # The model strips the protocol and we need to add it: websites: [enterprise.website].compact_blank.map { |url| "https://#{url}" }, @@ -60,4 +61,14 @@ class EnterpriseBuilder < DfcBuilder end end end + + def self.contact(enterprise) + firstName, lastName = enterprise.contact_name&.split(/ ([^ ]+)$/) # rubocop:disable Naming/VariableName + + DataFoodConsortium::Connector::Person.new( + urls.enterprise_url(enterprise.id, anchor: "mainContact"), + firstName:, # rubocop:disable Naming/VariableName + lastName:, # rubocop:disable Naming/VariableName + ) + end end diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index 185edcb861..cc6fa07771 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -103,6 +103,7 @@ paths: dfc-b:hasDescription: Beautiful dfc-b:manages: http://test.host/api/dfc/enterprises/10000/catalog_items/10001 dfc-b:supplies: http://test.host/api/dfc/enterprises/10000/supplied_products/10001 + dfc-b:hasMainContact: http://test.host/api/dfc/enterprises/10000#mainContact ofn:long_description: "
Hello, world!
This is a paragraph.
" - "@id": http://test.host/api/dfc/enterprises/10000/catalog_items/10001 "@type": dfc-b:CatalogItem @@ -383,11 +384,17 @@ paths: dfc-b:VATnumber: 123 456 dfc-b:manages: http://test.host/api/dfc/enterprises/10000/catalog_items/10001 dfc-b:supplies: http://test.host/api/dfc/enterprises/10000/supplied_products/10001 + dfc-b:hasMainContact: http://test.host/api/dfc/enterprises/10000#mainContact ofn:long_description: "Hello, world!
This is a paragraph.
" ofn:contact_name: Fred Farmer ofn:logo_url: http://test.host/rails/active_storage/url/logo.png ofn:promo_image_url: http://test.host/rails/active_storage/url/promo.png dfc-b:affiliates: http://test.host/api/dfc/enterprise_groups/60000 + - "@id": http://test.host/api/dfc/enterprises/10000#mainContact + "@type": dfc-b:Person + dfc-b:logo: '' + dfc-b:firstName: Fred + dfc-b:familyName: Farmer - "@id": http://test.host/api/dfc/addresses/40000 "@type": dfc-b:Address dfc-b:hasStreet: 42 Doveton Street