From b000255aeaa7d2d5b51182bbf206d6cc58b843e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 26 Feb 2026 16:00:29 +0100 Subject: [PATCH] Add audit display functionality for `Household` and `HouseholdMember` - Added `HouseholdSubjectDisplayer` and `HouseholdMemberSubjectDisplayer` classes to handle audit display logic. - Created Twig templates `household.html.twig` and `household_member.html.twig` for rendering audit information. - Integrated support for HTML and text formats when displaying audit entries. --- .../HouseholdMemberSubjectDisplayer.php | 52 +++++++++++++++++++ .../Displayer/HouseholdSubjectDisplayer.php | 44 ++++++++++++++++ .../Resources/views/Audit/household.html.twig | 9 ++++ .../views/Audit/household_member.html.twig | 11 ++++ 4 files changed, 116 insertions(+) create mode 100644 src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdMemberSubjectDisplayer.php create mode 100644 src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdSubjectDisplayer.php create mode 100644 src/Bundle/ChillPersonBundle/Resources/views/Audit/household.html.twig create mode 100644 src/Bundle/ChillPersonBundle/Resources/views/Audit/household_member.html.twig diff --git a/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdMemberSubjectDisplayer.php b/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdMemberSubjectDisplayer.php new file mode 100644 index 000000000..30944de28 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdMemberSubjectDisplayer.php @@ -0,0 +1,52 @@ +type; + } + + public function display(Subject $subject, string $format = 'html', array $options = []): string + { + $householdMember = $this->householdMembersRepository->find($subject->identifiers['id']); + + if ('html' === $format) { + return $this->twig->render('@ChillPerson/Audit/household_member.html.twig', [ + 'id' => $subject->identifiers['id'], + 'householdMember' => $householdMember, + ]); + } + + if (null !== $householdMember) { + return sprintf( + '%s in household #%d', + (string) $householdMember->getPerson(), + $householdMember->getHousehold()->getId() + ); + } + + return sprintf('HouseholdMember #%d', $subject->identifiers['id']); + } +} diff --git a/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdSubjectDisplayer.php b/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdSubjectDisplayer.php new file mode 100644 index 000000000..048ce512d --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Audit/Displayer/HouseholdSubjectDisplayer.php @@ -0,0 +1,44 @@ +type; + } + + public function display(Subject $subject, string $format = 'html', array $options = []): string + { + $household = $this->householdRepository->find($subject->identifiers['id']); + + if ('html' === $format) { + return $this->twig->render('@ChillPerson/Audit/household.html.twig', [ + 'id' => $subject->identifiers['id'], + 'household' => $household, + ]); + } + + return sprintf('Household #%d', $subject->identifiers['id']); + } +} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Audit/household.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Audit/household.html.twig new file mode 100644 index 000000000..70b8f3496 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/views/Audit/household.html.twig @@ -0,0 +1,9 @@ + + {% if household is not null %} + + {{ 'household'|trans }} #{{ id }} + + {% else %} + {{ 'audit.household.household_not_found_with_id'|trans({'id': id}) }} + {% endif %} + diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Audit/household_member.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Audit/household_member.html.twig new file mode 100644 index 000000000..e41d3dbcf --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/views/Audit/household_member.html.twig @@ -0,0 +1,11 @@ + + {% if householdMember is not null %} + {{ householdMember.person|chill_entity_render_string }} + {{ 'audit.household_member.member_in_household'|trans }} + + {{ 'Household'|trans }} #{{ householdMember.household.id }} + + {% else %} + {{ 'audit.household_member.not_found_with_id'|trans({'id': id}) }} + {% endif %} +