diff --git a/CHANGELOG.md b/CHANGELOG.md
index f96b7f0c1..1b9bdde0a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,9 @@ and this project adheres to
* refactor `AuthorizationHelper` and `UserACLAwareRepository` to fix constructor, and separate logic for parent role helper into `ParentRoleHelper`
* [main]: filter location and locationType in backend: exclude NULL names, only active and availableToUsers
* [activity]: perform client-side validation & show/hide fields in the "new location" modal
+* [person] show current address in search results
+* [person] show alt names in search results
+* [admin]: links to activity admin section added again.
* [tasks]: different layout for task list / my tasks, and fix link to tasks in alert or in warning
* [admin]: links to activity admin section added again.
* [household]: household addresses ordered by ValidFrom date and by id to show the last created address on top.
diff --git a/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig
index b1bdb8438..104f46b27 100644
--- a/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig
+++ b/src/Bundle/ChillMainBundle/Resources/views/Entity/address.html.twig
@@ -83,6 +83,10 @@
{% endmacro %}
+{#
+ this enclose the rendering inside a "li", which ease the placement operation when the address
+ must be shown in such list
+#}
{%- if render == 'list' -%}
{% if options['with_picto'] %}
diff --git a/src/Bundle/ChillPersonBundle/Entity/Person.php b/src/Bundle/ChillPersonBundle/Entity/Person.php
index 9aaad8c04..382c311d9 100644
--- a/src/Bundle/ChillPersonBundle/Entity/Person.php
+++ b/src/Bundle/ChillPersonBundle/Entity/Person.php
@@ -1283,11 +1283,14 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
/**
* get the address associated with the person at the given date
*
+ * If the `$at` parameter is now, use the method `getCurrentPersonAddress`, which is optimized
+ * on database side.
+ *
* @param DateTime|null $at
* @return Address|null
* @throws \Exception
*/
- public function getCurrentPersonAddress(?\DateTime $at = null): ?Address
+ public function getAddressAt(?\DateTime $at = null): ?Address
{
$at ??= new DateTime('now');
@@ -1305,6 +1308,20 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
current($addresses);
}
+ /**
+ * Get the current person address
+ *
+ * @return Address|null
+ */
+ public function getCurrentPersonAddress(): ?Address
+ {
+ if (null === $this->currentPersonAddress) {
+ return null;
+ }
+
+ return $this->currentPersonAddress->getAddress();
+ }
+
/**
* Validation callback that checks if the accompanying periods are valid
*
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig
index 0d0aa289b..d2ed09135 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/Entity/person.html.twig
@@ -67,7 +67,7 @@
{%- endif -%}
{%- if options['addInfo'] -%}
- {% set gender = (person.gender == 'woman') ? 'fa-venus' :
+ {% set gender = (person.gender == 'woman') ? 'fa-venus' :
(person.gender == 'man') ? 'fa-mars' : (person.gender == 'neuter') ? 'fa-neuter' : 'fa-genderless' %}
{% set genderTitle = (person.gender == 'woman') ? 'woman' :
(person.gender == 'man') ? 'man' : (person.gender == 'neuter') ? 'neuter' : 'Not given'|trans %}
@@ -123,13 +123,15 @@
- {% set multiline = (options['address_multiline']) ? true : false %}
- {{ person.getLastAddress|chill_entity_render_box({
- 'render': 'list',
- 'with_picto': true,
- 'multiline': multiline,
- 'with_valid_from': false
- }) }}
+ {% if person.getCurrentPersonAddress is not null %}
+ {% set multiline = (options['address_multiline']) ? true : false %}
+ {{ person.getCurrentPersonAddress|chill_entity_render_box({
+ 'render': 'list',
+ 'with_picto': true,
+ 'multiline': multiline,
+ 'with_valid_from': false
+ }) }}
+ {% endif %}
-
{% if person.mobilenumber %}
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig
index 172d564e2..98dff821a 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig
@@ -53,7 +53,7 @@
'addLink': true,
'addInfo': true,
'addAge': true,
- 'addAltNames': false,
+ 'addAltNames': true,
'addCenter': true,
'address_multiline': false,
'customButtons': { 'after': _self.button_person(person) }
diff --git a/src/Bundle/ChillPersonBundle/Tests/Entity/PersonTest.php b/src/Bundle/ChillPersonBundle/Tests/Entity/PersonTest.php
index dbef739d1..5b8dce6b2 100644
--- a/src/Bundle/ChillPersonBundle/Tests/Entity/PersonTest.php
+++ b/src/Bundle/ChillPersonBundle/Tests/Entity/PersonTest.php
@@ -2,8 +2,8 @@
/*
* Chill is a software for social workers
- *
- * Copyright (C) 2014-2015, Champs Libres Cooperative SCRLFS,
+ *
+ * Copyright (C) 2014-2015, Champs Libres Cooperative SCRLFS,
* ,
*
* This program is free software: you can redistribute it and/or modify
@@ -38,57 +38,57 @@ use Generator;
class PersonTest extends \PHPUnit\Framework\TestCase
{
/**
- * Test the creation of an accompanying, its closure and the access to
+ * Test the creation of an accompanying, its closure and the access to
* the current accompaniying period via the getCurrentAccompanyingPeriod
* function.
*/
public function testGetCurrentAccompanyingPeriod()
{
- $d = new \DateTime('yesterday');
+ $d = new \DateTime('yesterday');
$p = new Person();
$p->addAccompanyingPeriod(new AccompanyingPeriod($d));
-
+
$period = $p->getCurrentAccompanyingPeriod();
-
+
$this->assertInstanceOf(AccompanyingPeriod::class, $period);
$this->assertTrue($period->isOpen());
$this->assertEquals($d, $period->getOpeningDate());
-
+
//close and test
$period->setClosingDate(new \DateTime('tomorrow'));
-
+
$shouldBeNull = $p->getCurrentAccompanyingPeriod();
$this->assertNull($shouldBeNull);
}
-
+
/**
* Test if the getAccompanyingPeriodsOrdered function return a list of
* periods ordered ascendency.
*/
public function testAccompanyingPeriodOrderWithUnorderedAccompanyingPeriod()
- {
+ {
$d = new \DateTime("2013/2/1");
$p = new Person();
$p->addAccompanyingPeriod(new AccompanyingPeriod($d));
-
+
$e = new \DateTime("2013/3/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($e);
$p->close($period);
-
+
$f = new \DateTime("2013/1/1");
$p->open(new AccompanyingPeriod($f));
-
- $g = new \DateTime("2013/4/1");
+
+ $g = new \DateTime("2013/4/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($g);
$p->close($period);
-
+
$r = $p->getAccompanyingPeriodsOrdered();
-
+
$date = $r[0]->getOpeningDate()->format('Y-m-d');
-
+
$this->assertEquals($date, '2013-01-01');
}
-
+
/**
* Test if the getAccompanyingPeriodsOrdered function, for periods
* starting at the same time order regarding to the closing date.
@@ -97,25 +97,25 @@ class PersonTest extends \PHPUnit\Framework\TestCase
$d = new \DateTime("2013/2/1");
$p = new Person();
$p->addAccompanyingPeriod(new AccompanyingPeriod($d));
-
- $g = new \DateTime("2013/4/1");
+
+ $g = new \DateTime("2013/4/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($g);
$p->close($period);
-
+
$f = new \DateTime("2013/2/1");
$p->open(new AccompanyingPeriod($f));
-
+
$e = new \DateTime("2013/3/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($e);
$p->close($period);
$r = $p->getAccompanyingPeriodsOrdered();
-
+
$date = $r[0]->getClosingDate()->format('Y-m-d');
-
+
$this->assertEquals($date, '2013-03-01');
}
-
+
/**
* Test if the function checkAccompanyingPeriodIsNotCovering returns
* the good constant when two periods are collapsing : a period
@@ -125,23 +125,23 @@ class PersonTest extends \PHPUnit\Framework\TestCase
$d = new \DateTime("2013/2/1");
$p = new Person();
$p->addAccompanyingPeriod(new AccompanyingPeriod($d));
-
+
$e = new \DateTime("2013/3/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($e);
$p->close($period);
-
+
$f = new \DateTime("2013/1/1");
$p->open(new AccompanyingPeriod($f));
-
- $g = new \DateTime("2013/4/1");
+
+ $g = new \DateTime("2013/4/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($g);
$p->close($period);
-
+
$r = $p->checkAccompanyingPeriodsAreNotCollapsing();
-
+
$this->assertEquals($r['result'], Person::ERROR_PERIODS_ARE_COLLAPSING);
}
-
+
/**
* Test if the function checkAccompanyingPeriodIsNotCovering returns
* the good constant when two periods are collapsing : a period is open
@@ -151,68 +151,19 @@ class PersonTest extends \PHPUnit\Framework\TestCase
$d = new \DateTime("2013/2/1");
$p = new Person();
$p->addAccompanyingPeriod(new AccompanyingPeriod($d));
-
+
$e = new \DateTime("2013/3/1");
$period = $p->getCurrentAccompanyingPeriod()->setClosingDate($e);
$p->close($period);
-
+
$f = new \DateTime("2013/1/1");
$p->open(new AccompanyingPeriod($f));
-
+
$r = $p->checkAccompanyingPeriodsAreNotCollapsing();
-
+
$this->assertEquals($r['result'], Person::ERROR_ADDIND_PERIOD_AFTER_AN_OPEN_PERIOD);
}
- public function dateProvider(): Generator
- {
- yield [(DateTime::createFromFormat('Y-m-d', '2021-01-05'))->settime(0, 0)];
- yield [(DateTime::createFromFormat('Y-m-d', '2021-02-05'))->settime(0, 0)];
- yield [(DateTime::createFromFormat('Y-m-d', '2021-03-05'))->settime(0, 0)];
- }
-
- /**
- * @dataProvider dateProvider
- */
- public function testGetLastAddress(DateTime $date)
- {
- $p = new Person($date);
-
- // Make sure that there is no last address.
- $this::assertNull($p->getLastAddress());
-
- // Take an arbitrary date before the $date in parameter.
- $addressDate = clone $date;
-
- // 1. Smoke test: Test that the first address added is the last one.
- $address1 = (new Address())->setValidFrom($addressDate->sub(new DateInterval('PT180M')));
- $p->addAddress($address1);
-
- $this::assertCount(1, $p->getAddresses());
- $this::assertSame($address1, $p->getLastAddress());
-
- // 2. Add an older address, which should not be the last address.
- $addressDate2 = clone $addressDate;
- $address2 = (new Address())->setValidFrom($addressDate2->sub(new DateInterval('PT30M')));
- $p->addAddress($address2);
-
- $this::assertCount(2, $p->getAddresses());
- $this::assertSame($address1, $p->getLastAddress());
-
- // 3. Add a newer address, which should be the last address.
- $addressDate3 = clone $addressDate;
- $address3 = (new Address())->setValidFrom($addressDate3->add(new DateInterval('PT30M')));
- $p->addAddress($address3);
-
- $this::assertCount(3, $p->getAddresses());
- $this::assertSame($address3, $p->getLastAddress());
-
- // 4. Get the last address from a specific date.
- $this::assertEquals($address1, $p->getLastAddress($addressDate));
- $this::assertEquals($address2, $p->getLastAddress($addressDate2));
- $this::assertEquals($address3, $p->getLastAddress($addressDate3));
- }
-
public function testIsSharingHousehold()
{
$person = new Person();