From 5acaa592925d196585c237cc03f77939c120dbc1 Mon Sep 17 00:00:00 2001 From: Okhin Date: Thu, 4 Apr 2019 18:21:11 +0200 Subject: [PATCH 1/2] Function merge is working --- app/controller/admin.php | 69 ++++++ app/routes.ini | 1 + app/view/backend/fusion_user.html | 98 ++++++++ app/view/backend/user.html | 376 +++++++++++++++--------------- 4 files changed, 362 insertions(+), 182 deletions(-) create mode 100644 app/view/backend/fusion_user.html diff --git a/app/controller/admin.php b/app/controller/admin.php index b88da31..1371241 100644 --- a/app/controller/admin.php +++ b/app/controller/admin.php @@ -881,6 +881,75 @@ class Admin extends Controller $f3->reroute("/admin/users/$user_id"); } + public function user_merge($f3, $args) + { + $id = array_key_exists('id', $args) ? \Utils::asl($args['id']) : ''; + $f3->set('id', $id); + + if($f3->get('VERB') == 'GET') { + $merger = $f3->get('container')['user_finder']->findById($id); + $email_merged = \Utils::asl($f3->get('GET.merged')); + $user = $f3->get('container')['user_finder']->findById($id); + $merged = $f3->get('container')['user_finder']->findByEmail($email_merged); + // Now, we're going to list all pledges and counterparts of merged user + // to display them to the admin. + $counterparts = $f3->get('container')['counterpart_finder']->findByUserId($merged['id']); + $donations = $f3->get('container')['donation_finder']->findByUserId($merged['id']); + + // Augment the context + $f3->set('merger', $merger); + $f3->set('merged', $merged); + $f3->set('total', (int)$merged['total'] + (int)$merger['total']); + $f3->set('cumul', (int)$merged['cumul'] + (int)$merger['cumul']); + $f3->set('counterparts', $counterparts); + $f3->set('donations', $donations); + + $f3->set('block_content', 'backend/fusion_user.html'); + } else if($f3->get('VERB') == 'POST') { + $merger_id = \Utils::asl($f3->get('POST.merger_id')); + $merged_id = \Utils::asl($f3->get('POST.merged_id')); + + // Retrieving the associated users + $merger = $f3->get('container')['user_finder']->findById($merger_id); + $merged = $f3->get('container')['user_finder']->findById($merged_id); + + // Update total and cumul values + $f3->get('container')['command_handler']->handle(new UserUpdateByAdminCommand($merger_id, + $merger['pseudo'], + $merger['email'], + $merger['commentaire'] + $merged['commentaire'], + (int) $merger['total'] + (int) $merged['total'], + (int) $merger['cumul'] + (int) $merged['cumul'])); + + $db = $f3->get('DB'); + // Now, let's change all counterparts of merged + $db->query("UPDATE contreparties + SET user_id = '" . $merger_id ."' + WHERE user_id = '" . $merged_id ."'"); + + // The donations + $db->query("UPDATE dons + SET user_id = '" . $merger_id ."' + WHERE user_id = '" . $merged_id ."'"); + + // The identifiers + $db->query("UPDATE identifiers + SET user_id = '" . $merger_id . "' + WHERE user_id = '" . $merged_id . "'"); + + // The adresses + $db->query("UPDATE adresses + SET user_id = '" . $merger_id . "' + WHERE user_id = '" . $merged_id . "'"); + + // Remove the merged user + $db->query("DELETE FROM users WHERE id = '" . $merged_id . "'"); + + // Reroute to the merger + $f3->reroute('/admin/users/'.$merger_id); + }; + } + public function user($f3, $args) { $id = array_key_exists('id', $args) ? \Utils::asl($args['id']) : ''; diff --git a/app/routes.ini b/app/routes.ini index b005fcf..02d84cc 100644 --- a/app/routes.ini +++ b/app/routes.ini @@ -45,6 +45,7 @@ GET|POST @users:/admin/users=Controller\Admin->users POST @add_user:/admin/users/add=Controller\Admin->user GET @user_info:/admin/users/@id=Controller\Admin->user POST @modify_user:/admin/users/@id=Controller\Admin->user +GET|POST @fusion_user:/admin/users/fusion/@id=Controller\Admin->user_merge POST @adresse:/admin/adresses=Controller\Admin->adresse diff --git a/app/view/backend/fusion_user.html b/app/view/backend/fusion_user.html new file mode 100644 index 0000000..68c239d --- /dev/null +++ b/app/view/backend/fusion_user.html @@ -0,0 +1,98 @@ +
+

Fusion de deux utilisateurs

+

Fusionner l'utilisateur #{{ @merged.id }} avec l'utilisateur #{{ @merger.id }}

+

Utilisateur {{ @merger.pseudo }} après fusion :

+
+
Pseudo
+
{{ @merger.pseudo }}
+
Email
+
{{ @merger.email }}
+
Total
+
{{ @total }}
+
Cumul
+
{{ @cumul }}
+
+
+
+

Les contreparties suivantes seront ajoutées à {{ @merger.pseudo }}

+ + + + + + + + + + + + + + + + + + + + + + + + + +
IdId du parentDateQuoiTaille/PiplomeStatutCommentaire
{{ @row.id }}{{ @row.parent }}{{ @row.datec }}{{ @row.quoi }} + + + {{ @row.pdf_url }} + ({{ @row.pdf_nom }}) + + + + +   + + + {{ @atailles[@row.taille] }} + + + + + + {{ @row.status }} + + {{ @row.commentaire }} +
+
+
+

Les dons suivants seront ajoutés à {{ @merger.pseudo }}

+ + + + + + + + + + + + + + + + + + + + +
IdDateDonAdressePDFStatut
{{ @row.id }}{{ @row.datec }}{{ @row.somme }}{{ @row.pdf }}{{ @row.status }}
+
+
+

Fusionner les utilisateurs #{{ @merger.id }} et #{{ @merged.id }} 

+
+ + + + +
+
diff --git a/app/view/backend/user.html b/app/view/backend/user.html index 77aeb5f..1790828 100644 --- a/app/view/backend/user.html +++ b/app/view/backend/user.html @@ -1,49 +1,61 @@
- - -

Modification d'un utilisateur

-
- -

Ajout d'un utilisateur

-
-
-
- - + + +

Modification d'un utilisateur

+
+ +

Ajout d'un utilisateur

+
+
+ + + - - -
+ + +
- - -
+ + +
- - -
+ + +
- - - + + + -
+
- + -
+
+ + +
+ + + +
+ +
+
+
+

Fusionner cet utilisateur avec un autre

+
+ + + + + - - - - - - -
-
+ +
-

Adresse postale de cet utilisateur

+

Adresse postale de cet utilisateur

@@ -81,7 +93,7 @@
- + @@ -89,168 +101,168 @@
- - -

Contreparties de cet utilisateur

- - - - - - - - - - - - - - - - - - - - - - - - - -
IdId du parentDateQuoiTaille/PiplomeAdresseStatutActions
{{ @row.id }}{{ @row.parent }}{{ @row.datec }}{{ @row.quoi }} - - - {{ @row.pdf_url }} - ({{ @row.pdf_nom }}) - - - - -   - - - {{ @TAILLES[@row.taille] }} - - - - - - - - {{ @@user.adresses[@row.adresse_id].nom }} - - - - - - - {{ @CT_STATUTS[@row.status] }} - Editer - - - - Demandé - - - - - Envoyé - - - - - NPAI - - - - - Annulé - - - - - PDF - -
-
- -

Pas de contreparties associées à cet utilisateur

-
-
+ + +

Contreparties de cet utilisateur

+ + + + + + + + + + + + + + + + + + + + + + + + + +
IdId du parentDateQuoiTaille/PiplomeAdresseStatutActions
{{ @row.id }}{{ @row.parent }}{{ @row.datec }}{{ @row.quoi }} + + + {{ @row.pdf_url }} + ({{ @row.pdf_nom }}) + + + + +   + + + {{ @TAILLES[@row.taille] }} + + + + + + + + {{ @@user.adresses[@row.adresse_id].nom }} + + + - + + + {{ @CT_STATUTS[@row.status] }} + Editer + + - + Demandé + + + - + Envoyé + + + - + NPAI + + + - + Annulé + + + - + PDF + +
+
+ +

Pas de contreparties associées à cet utilisateur

+
+
- - -

Dons associés à cet utilisateur

-
- - - - - - - - - - - - - - - - + + + +
IDDateDonPDFStatutActions
{{ @row.id }}{{ @row.datec }}{{ @row.somme }} - + + +

Dons associés à cet utilisateur

+
+ + + + + + + + + + + + + + + + + + - - - - - -
IDDateDonPDFStatutActions
{{ @row.id }}{{ @row.datec }}{{ @row.somme }} + + + PDF + + + PDF + + + {{ @DONS_STATUTS[@row.status] }} + Editer + - + - PDF + Valider - PDF + Invalider + - - - {{ @DONS_STATUTS[@row.status] }} - Editer - - - - - Valider - - - Invalider - - - - -
- - -

Pas de dons enregistrés pour cet utilisateur

-
-
+
+
+ + +

Pas de dons enregistrés pour cet utilisateur

+
+
-- GitLab From f61d5cd165a1755669fcaae7344d3b8c51752403 Mon Sep 17 00:00:00 2001 From: Okhin Date: Thu, 4 Apr 2019 18:27:19 +0200 Subject: [PATCH 2/2] linting --- app/controller/admin.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/controller/admin.php b/app/controller/admin.php index 1371241..d27feec 100644 --- a/app/controller/admin.php +++ b/app/controller/admin.php @@ -886,7 +886,7 @@ class Admin extends Controller $id = array_key_exists('id', $args) ? \Utils::asl($args['id']) : ''; $f3->set('id', $id); - if($f3->get('VERB') == 'GET') { + if ($f3->get('VERB') == 'GET') { $merger = $f3->get('container')['user_finder']->findById($id); $email_merged = \Utils::asl($f3->get('GET.merged')); $user = $f3->get('container')['user_finder']->findById($id); @@ -905,7 +905,7 @@ class Admin extends Controller $f3->set('donations', $donations); $f3->set('block_content', 'backend/fusion_user.html'); - } else if($f3->get('VERB') == 'POST') { + } elseif ($f3->get('VERB') == 'POST') { $merger_id = \Utils::asl($f3->get('POST.merger_id')); $merged_id = \Utils::asl($f3->get('POST.merged_id')); @@ -914,12 +914,14 @@ class Admin extends Controller $merged = $f3->get('container')['user_finder']->findById($merged_id); // Update total and cumul values - $f3->get('container')['command_handler']->handle(new UserUpdateByAdminCommand($merger_id, + $f3->get('container')['command_handler']->handle(new UserUpdateByAdminCommand( + $merger_id, $merger['pseudo'], $merger['email'], $merger['commentaire'] + $merged['commentaire'], (int) $merger['total'] + (int) $merged['total'], - (int) $merger['cumul'] + (int) $merged['cumul'])); + (int) $merger['cumul'] + (int) $merged['cumul'] + )); $db = $f3->get('DB'); // Now, let's change all counterparts of merged -- GitLab