Module: AgentNameDates
- Defined in:
- backend/app/model/mixins/agent_name_dates.rb
Instance Method Summary collapse
-
#update_associated_name_forms ⇒ Object
ANW-429: This code runs when a single or ranged date is updated.
Instance Method Details
#update_associated_name_forms ⇒ Object
ANW-429: This code runs when a single or ranged date is updated. If the date is attached to a date of existence for an agent, that agent’s display name is pulled and updated with data from this date, if there is no name use date for the display name. It would be really nice to do this at the JSONModel layer instead of with Sequel calls like here below… But I couldn’t figure out a way to do that. As far as I can tell, there isn’t a way to get the ID of the parent date label object from the AutoGenerator in the Name classes. Also tried getting this data from a after_save/update hook in the parent label class, but these date subrecords were not accessible – it looks like they weren’t created yet from the context of inside that hook.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'backend/app/model/mixins/agent_name_dates.rb', line 8 def update_associated_name_forms sdl = StructuredDateLabel.first(:id => self.structured_date_label_id) # See if label object is attached directly to an agent, which indicates a date of existence if sdl.agent_person_id agent_id = sdl.agent_person_id agent_json = AgentPerson.to_jsonmodel(agent_id) agent_name = NamePerson.first(:agent_person_id => agent_id, :is_display_name => 1) name_json = NamePerson.to_jsonmodel(agent_name.id) processor = SortNameProcessor::Person elsif sdl.agent_family_id agent_id = sdl.agent_family_id agent_json = AgentFamily.to_jsonmodel(agent_id) agent_name = NameFamily.first(:agent_family_id => agent_id, :is_display_name => 1) name_json = NameFamily.to_jsonmodel(agent_name.id) processor = SortNameProcessor::Family elsif sdl.agent_corporate_entity_id agent_id = sdl.agent_corporate_entity_id agent_json = AgentCorporateEntity.to_jsonmodel(agent_id) agent_name = NameCorporateEntity.first(:agent_corporate_entity_id => agent_id, :is_display_name => 1) name_json = NameCorporateEntity.to_jsonmodel(agent_name.id) processor = SortNameProcessor::CorporateEntity elsif sdl.agent_software_id agent_id = sdl.agent_software_id agent_json = AgentSoftware.to_jsonmodel(agent_id) agent_name = NameSoftware.first(:agent_software_id => agent_id, :is_display_name => 1) name_json = NameSoftware.to_jsonmodel(agent_name.id) processor = SortNameProcessor::Software end # This code runs if we find an agent display name directly attached to this date subrecord with no dates of it's own -- name dates take precedence over dates of existence. # We'll then generate the string for the display name from the dates of existence, and update it. if name_json && name_json['dates'].nil? && agent_json['dates_of_existence'].length > 0 && agent_name.sort_name_auto_generate == 1 extras = { 'dates_of_existence' => agent_json["dates_of_existence"] } agent_name.update(sort_name: processor.process(name_json, extras), system_mtime: Time.now) end end |