From 0e9933ca413ab0bc8862d77f41167602dc96d8e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 18 Jun 2021 11:57:27 +0200 Subject: [PATCH] improve banner --- .../Entity/Household/Household.php | 37 ++++++++++++++++++- .../Resources/public/index.js | 1 + .../public/sass/household_banner.scss | 5 +++ .../views/Household/banner.html.twig | 24 ++++++++---- 4 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/sass/household_banner.scss diff --git a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php index 8cdc47b4a..c8cbccd87 100644 --- a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php +++ b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php @@ -196,6 +196,11 @@ class Household } public function getCurrentMembers(?\DateTimeImmutable $now = null): Collection + { + return $this->getMembers()->matching($this->buildCriteriaCurrentMembers($now)); + } + + private function buildCriteriaCurrentMembers(?\DateTimeImmutable $now = null): Criteria { $criteria = new Criteria(); $expr = Criteria::expr(); @@ -211,7 +216,37 @@ class Household $expr->gte('endDate', $date) )); - return $this->getMembers()->matching($criteria); + return $criteria; + } + + /** + * @return HouseholdMember[] + */ + public function getCurrentMembersOrdered(?\DateTimeImmutable $now = null): Collection + { + $members = $this->getCurrentMembers($now); + + $members->getIterator() + ->uasort( + function (HouseholdMember $a, HouseholdMember $b) { + if ($a->getPosition()->getOrdering() < $b->getPosition()->getOrdering()) { + return -1; + } + if ($a->getPosition()->getOrdering() > $b->getPosition()->getOrdering()) { + return 1; + } + if ($a->isHolder() && !$b->isHolder()) { + return 1; + } + if (!$a->isHolder() && $b->isHolder()) { + return -1; + } + + return 0; + } + ); + + return $members; } /** diff --git a/src/Bundle/ChillPersonBundle/Resources/public/index.js b/src/Bundle/ChillPersonBundle/Resources/public/index.js index e3563b4ff..acdc04579 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/index.js @@ -1,2 +1,3 @@ require('./sass/person.scss'); require('./sass/person_with_period.scss'); +require('./sass/household_banner.scss'); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/sass/household_banner.scss b/src/Bundle/ChillPersonBundle/Resources/public/sass/household_banner.scss new file mode 100644 index 000000000..ea584409c --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/sass/household_banner.scss @@ -0,0 +1,5 @@ +.banner-household { + .current-members-explain { + font-weight: 700; + } +} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/banner.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/banner.html.twig index 795861529..d5131223c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Household/banner.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/banner.html.twig @@ -12,25 +12,35 @@ - +