summaryrefslogtreecommitdiff
path: root/lib/relationship_manager.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/relationship_manager.rb')
-rw-r--r--lib/relationship_manager.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/relationship_manager.rb b/lib/relationship_manager.rb
new file mode 100644
index 0000000..4b6a4a2
--- /dev/null
+++ b/lib/relationship_manager.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require 'singleton'
+
+class RelationshipManager
+ include Singleton
+ def link_spouses(person1, person2)
+ # Check if either person is already linked to someone else
+ if person1.spouse != NilPerson.new && person1.spouse != person2
+ raise "Cannot link #{person1.name} and #{person2.name}: #{person1.name} is already linked to #{person1.spouse.name}."
+ end
+
+ if person2.spouse != NilPerson.new && person2.spouse != person1
+ raise "Cannot link #{person1.name} and #{person2.name}: #{person2.name} is already linked to #{person2.spouse.name}."
+ end
+
+ # Link the spouses
+ person1.spouse = person2
+ person2.spouse = person1 unless person2.is_a?(NilPerson)
+ end
+end