From f9e64aee6552ffd3d4fc8fc8e1b7d5bef596da91 Mon Sep 17 00:00:00 2001 From: osaajani <> Date: Fri, 17 Feb 2023 05:18:57 +0100 Subject: [PATCH] add preview of group members --- assets/css/style.css | 10 +++++ controllers/publics/ConditionalGroup.php | 39 +++++++++++++++++ controllers/publics/Group.php | 39 +++++++++++++++++ routes.php | 2 + templates/conditional_group/list.php | 55 +++++++++++++++++++++++- templates/group/list.php | 54 +++++++++++++++++++++++ 6 files changed, 198 insertions(+), 1 deletion(-) diff --git a/assets/css/style.css b/assets/css/style.css index 7bff7cb..204950f 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -471,6 +471,16 @@ footer img color: #9b2420; } +/* PREVIEW CONTACT */ +.preview-contact-name +{ + font-weight: bold; +} + +.preview-contact-number +{ + font-style: italic; +} /* PHONE */ #adapter-data-container diff --git a/controllers/publics/ConditionalGroup.php b/controllers/publics/ConditionalGroup.php index 2a1aad8..8f1f3ea 100644 --- a/controllers/publics/ConditionalGroup.php +++ b/controllers/publics/ConditionalGroup.php @@ -185,6 +185,45 @@ namespace controllers\publics; return $this->redirect(\descartes\Router::url('ConditionalGroup', 'list')); } + /** + * Return contacts of a group as json array + * @param int $id_group = Group id + * + * @return json + */ + public function preview (int $id_group) + { + $return = [ + 'success' => false, + 'result' => 'Une erreur inconnue est survenue.', + ]; + + $group = $this->internal_conditional_group->get_for_user($_SESSION['user']['id'], $id_group); + + if (!$group) + { + $return['result'] = 'Ce groupe n\'existe pas.'; + echo json_encode($return); + + return false; + } + + $contacts = $this->internal_conditional_group->get_contacts_for_condition_and_user($_SESSION['user']['id'], $group['condition']); + if (!$contacts) + { + $return['result'] = 'Aucun contact dans le groupe.'; + echo json_encode($return); + + return false; + } + + $return['success'] = true; + $return['result'] = $contacts; + echo json_encode($return); + + return true; + } + /** * Try to get the preview of contacts for a conditionnal group. * diff --git a/controllers/publics/Group.php b/controllers/publics/Group.php index fa8b8af..2bd2c4f 100644 --- a/controllers/publics/Group.php +++ b/controllers/publics/Group.php @@ -191,6 +191,45 @@ namespace controllers\publics; return $this->redirect(\descartes\Router::url('Group', 'list')); } + /** + * Return contacts of a group as json array + * @param int $id_group = Group id + * + * @return json + */ + public function preview (int $id_group) + { + $return = [ + 'success' => false, + 'result' => 'Une erreur inconnue est survenue.', + ]; + + $group = $this->internal_group->get_for_user($_SESSION['user']['id'], $id_group); + + if (!$group) + { + $return['result'] = 'Ce groupe n\'existe pas.'; + echo json_encode($return); + + return false; + } + + $contacts = $this->internal_group->get_contacts($id_group); + if (!$contacts) + { + $return['result'] = 'Aucun contact dans le groupe.'; + echo json_encode($return); + + return false; + } + + $return['success'] = true; + $return['result'] = $contacts; + echo json_encode($return); + + return true; + } + /** * Cette fonction retourne la liste des groups sous forme JSON. */ diff --git a/routes.php b/routes.php index f90bca6..a5e87cd 100644 --- a/routes.php +++ b/routes.php @@ -76,6 +76,7 @@ 'delete' => '/group/delete/{csrf}/', 'edit' => '/group/edit/', 'update' => '/group/update/{csrf}/', + 'preview' => '/group/preview/{id_group}/', 'json_list' => '/groups.json/', ], @@ -88,6 +89,7 @@ 'edit' => '/conditional_group/edit/', 'update' => '/conditional_group/update/{csrf}/', 'contacts_preview' => '/conditional_group/preview/', + 'preview' => '/conditional_group/preview/{id_group}/', 'json_list' => '/conditional_groups.json/', ], diff --git a/templates/conditional_group/list.php b/templates/conditional_group/list.php index b688bc4..0ef7726 100644 --- a/templates/conditional_group/list.php +++ b/templates/conditional_group/list.php @@ -43,6 +43,7 @@ Condition Date de création Dernière modification + Preview @@ -69,9 +70,56 @@ + Nombre de contacts Date de création Dernière modification + Preview @@ -69,6 +70,21 @@ +