count linked objects in merge person side panel

This commit is contained in:
Mathieu Jaumotte 2021-03-21 14:41:22 +01:00
parent 03ef68dc36
commit d81fc881af
2 changed files with 33 additions and 6 deletions

View File

@ -16,6 +16,10 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\TranslatorInterface;
use Chill\ActivityBundle\Entity\Activity;
use Chill\DocStoreBundle\Entity\PersonDocument;
use Chill\EventBundle\Entity\Participation;
use Chill\TaskBundle\Entity\SingleTask;
class PersonDuplicateController extends Controller
{
@ -91,6 +95,9 @@ class PersonDuplicateController extends Controller
$person1 = $this->_getPerson($person1_id);
$person2 = $this->_getPerson($person2_id);
$person1->counters = $this->_getCounters($person1_id);
$person2->counters = $this->_getCounters($person2_id);
if ($person1 === null) {
throw $this->createNotFoundException("Person with id $person1_id not"
. " found on this server");
@ -257,4 +264,23 @@ class PersonDuplicateController extends Controller
return [$person1, $person2];
}
private function _getCounters($id): ?array
{
$em = $this->getDoctrine()->getManager();
$nb_activity = $em->getRepository(Activity::class)->findBy(['person'=>$id]);
$nb_document = $em->getRepository(PersonDocument::class)->findBy(['person'=>$id]);
$nb_event = $em->getRepository(Participation::class)->findBy(['person'=>$id]);
$nb_task = $em->getRepository(SingleTask::class)->countByParameters(['person'=>$id]);
$person = $em->getRepository(Person::class)->findOneBy(['id'=>$id]);
return [
'nb_activity' => count($nb_activity),
'nb_document' => count($nb_document),
'nb_event' => count($nb_event),
'nb_task' => $nb_task,
'nb_addresses' => count($person->getAddresses())
];
}
}

View File

@ -35,11 +35,12 @@
{%- macro links(person, options) -%}
<ul>
{# TODO suivre toutes les jointures #}
<li><b>3</b> activités</li>
<li><b>5</b> tâches</li>
<li><b>2</b> rapports</li>
<li><b>3</b> événements</li>
<li><b>6</b> documents</li>
<li><b>{{ person.counters.nb_activity }}</b> {{ (person.counters.nb_activity > 1)? 'activités' : 'activité' }}</li>
<li><b>{{ person.counters.nb_task }}</b> {{ (person.counters.nb_task > 1)? 'tâches' : 'tâche' }}</li>
<li><b>{{ person.counters.nb_document }}</b> {{ (person.counters.nb_document > 1)? 'documents' : 'document' }}</li>
<li><b>{{ person.counters.nb_event }}</b> {{ (person.counters.nb_event > 1)? 'événements' : 'événement' }}</li>
<li><b>{{ person.counters.nb_addresses }}</b> {{ (person.counters.nb_addresses > 1)? 'documents' : 'document' }}</li>
</ul>
{% endmacro %}