From 1d91599b28bf7c6d93086139c9de0859b3d40f13 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Mon, 17 Feb 2020 18:33:04 +0100 Subject: [PATCH] FEAT #13199 TIME 0:15 refactor is contact used --- .../contact/controllers/ContactController.php | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index 93ea39f44a8..04fe89893a8 100755 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -99,11 +99,14 @@ class ContactController ]); $count = $contacts[0]['count'] ?? 0; + $contactIds = array_column($contacts, 'id'); + $contactsUsed = ContactController::isContactUsed(['ids' => $contactIds]); + foreach ($contacts as $key => $contact) { unset($contacts[$key]['count']); $filling = ContactController::getFillingRate(['contactId' => $contact['id']]); - $contacts[$key]['isUsed'] = ContactController::isContactUsed(['id' => $contact['id']]); + $contacts[$key]['isUsed'] = $contactsUsed[$contact['id']]; $contacts[$key]['filling'] = $filling; } @@ -1312,30 +1315,36 @@ class ContactController private static function isContactUsed(array $args) { - ValidatorModel::notEmpty($args, ['id']); - ValidatorModel::intVal($args, ['id']); + ValidatorModel::notEmpty($args, ['ids']); + ValidatorModel::arrayType($args, ['ids']); + + $contactsUsed = array_fill_keys($args['ids'], false); $inResources = ResourceContactModel::get([ - 'select' => ['count(1)'], + 'select' => ['item_id'], 'where' => ['item_id = ?', "type = 'contact'"], 'data' => [$args['id']] ]); - $inResources = $inResources[0]['count'] > 0; + $inResources = array_column($inResources, 'item_id'); $inAcknowledgementReceipts = AcknowledgementReceiptModel::get([ - 'select' => ['count(1)'], + 'select' => ['contact_id'], 'where' => ['contact_id = ?'], 'data' => [$args['id']] ]); - $inAcknowledgementReceipts = $inAcknowledgementReceipts[0]['count'] > 0; + $inAcknowledgementReceipts = array_column($inAcknowledgementReceipts, 'contact_id'); $inAttachments = AttachmentModel::get([ - 'select' => ['count(1)'], + 'select' => ['recipient_id'], 'where' => ['recipient_id = ?', "recipient_type = 'contact'"], 'data' => [$args['id']] ]); - $inAttachments = $inAttachments[0]['count'] > 0; + $inAttachments = array_column($inAttachments, 'recipient_id'); + + foreach ($contactsUsed as $id => $item) { + $contactsUsed[$id] = in_array($id, $inResources) || in_array($id, $inAcknowledgementReceipts) || in_array($id, $inAttachments); + } - return $inResources || $inAcknowledgementReceipts || $inAttachments; + return $contactsUsed; } } -- GitLab