Skip to content
Snippets Groups Projects
Commit 38a6d37f authored by Ghislain Loas's avatar Ghislain Loas
Browse files

dev #64203 : improve UI + add force delete double action

parent 2ce97428
Branches
Tags
2 merge requests!2345Dev#64203 urgent probleme de connexion pour les abonnes ayant plusieurs sites de rattachement suite dedoublonnage sous nanook dans les 4 phases de migration,!2329Dev#64203 urgent probleme de connexion pour les abonnes ayant plusieurs sites de rattachement suite dedoublonnage sous nanook dans les 4 phases de migration
Pipeline #2428 failed with stage
in 22 minutes and 26 seconds
......@@ -87,6 +87,25 @@ class Admin_UsersController extends ZendAfi_Controller_Action {
}
public function forceDeleteDoubleAction() {
$double_manager = new Class_User_DbDoubleFinder;
$id_user = $this->_getParam('id_user',null);
if (!$user = Class_Users::find($id_user))
return $this->_redirectToIndex();
$next = $double_manager->getNextDouble($id_user);
$users = $double_manager->findDoubleFor($user);
array_map(function ($user) {
if ((new Class_User_Datas($user))->hasDatas())
return;
$user->delete();
},$users);
$this->_helper->notify($this->_('Suppression effectuée'));
return $this->_redirect('/admin/users/manage-double-user/id_user/'.$next);
}
public function deleteDoubleAction() {
(new Class_User_DbDoubleFinder)->deleteNonLinkedUsers();
return $this->_redirect('/admin/users/manage-double-manual');
......@@ -107,7 +126,7 @@ class Admin_UsersController extends ZendAfi_Controller_Action {
$this->view->double_manager = new Class_User_DbDoubleFinder;
$this->view->users = $this->view->double_manager->findDoubleFor($user);
$this->view->titre = $this->_('Gestion manuelle des doublon pour l\'ID ABON : %s', $user->getIdabon());
$this->view->id_user = $id_user;
$this->view->next = $this->view->double_manager->getNextDouble($id_user);
$this->view->previous = $this->view->double_manager->getPreviousDouble($id_user);
}
......
<?php
echo $this->tag('p',
$this->_('Vous avez %s comptes abonnés possédant au moins un doublon dans votre base de données qui ne peuvent pas être supprimés automatiquement.',
$this->double_manager->countDouble()));
$this->_('Il reste %s comptes abonnés possédant au moins un doublon dans votre base de données.',
$this->tag('b', $this->double_manager->countDouble())));
$description = (new Class_TableDescription('double-users'))
......@@ -40,6 +40,7 @@ $description = (new Class_TableDescription('double-users'))
'action' => 'manage-double-merge',
'id_user_to' => $model->getIdUser(),
'id_user_from' => implode('_', $id_users)]))
->setText($this->_('Conserver')));});
echo $this->renderTable($description,
......@@ -50,12 +51,29 @@ $attribs = [];
if ($this->previous == '')
$attribs = ['disabled' => 'disabled'];
echo $this->button((new Class_Entity())
->setUrl($this->url(['module' => 'admin',
'controller' => 'users',
'action' => 'manage-double'
]))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'back'),
['style' => 'filter: invert();']))
->setText($this->_('Retour à la gestion des doublons')));
echo $this->button((new Class_Entity())
->setUrl($this->url(['module' => 'admin',
'controller' => 'users',
'action' => 'manage-double-user',
'id_user' => $this->previous]
))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'down'),
['style' => 'filter: invert(); transform: rotate(90deg);']))
->setText($this->_('Précédent'))
->setAttribs($attribs));
......@@ -69,4 +87,23 @@ echo $this->button((new Class_Entity())
'action' => 'manage-double-user',
'id_user' => $this->next]
))
->setText($this->_('Ignorer et continuer')));
\ No newline at end of file
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'down'),
['style' => 'filter: invert(); transform: rotate(270deg);']))
->setText($this->_('Ignorer et continuer')));
echo $this->button((new Class_Entity())
->setUrl($this->url(['module' => 'admin',
'controller' => 'users',
'action' => 'force-delete-double',
'id_user' => $this->id_user]
))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'delete'),
['style' => 'filter: invert();'])
)
->setText($this->_('Supprimer les abonnés')));
......@@ -7,12 +7,33 @@ echo $this->tag('p',
$this->tag('small',
$this->_('Requête d\'identification des doublons : %s', $this->tag('b', $this->double_manager->getRequest()))));
echo $this->button((new Class_Entity())
->setUrl($this->url(['module' => 'admin',
'controller' => 'users',
'action' => 'index'
]))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'back'),
['style' => 'filter: invert();']))
->setText($this->_('Retour à la gestion des utilisateurs')));
echo $this->button((new Class_Entity())
->setUrl($this->url(['action' => 'delete-double']))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'test'),
['style' => 'filter: invert();']))
->setText($this->_('Lancer le dédoublonnage automatique')));
echo $this->button((new Class_Entity())
->setUrl($this->url(['action' => 'manage-double-user',
'id_user' => $this->double_manager->getFirstDouble()]))
->setImage($this->tagImg(Class_Admin_Skin::current()
->getIconUrl('actions',
'users'),
['style' => 'filter: invert();']))
->setText($this->_('Gérer manuellement les doublons')));
......@@ -137,9 +137,8 @@ class Class_User_DbDoubleFinder {
if ($date =='')
return false;
foreach($users as $user) {
echo $user->getDateFin().'>'.$date;
echo strtotime($user->getDateFin()) .'>'. strtotime($date);
if (strtotime($user->getDateFin()) > strtotime($date))
return false;
}
......
......@@ -1231,7 +1231,14 @@ abstract class UsersControllerDoubleTestCase extends Admin_AbstractControllerTes
'password' => 'rita',
'idabon' => '91',
'ordreabon' => '18',
'doublon' => '3'],
['id_user' => '110',
'login' => 'rita',
'password' => 'rita',
'idabon' => '100',
'ordreabon' => '18',
'doublon' => '3']
])
->whenCalled('fetchOne')
......@@ -1258,6 +1265,10 @@ abstract class UsersControllerDoubleTestCase extends Admin_AbstractControllerTes
->with('select count(id) from notices_paniers where id_user=106')
->answers(1)
->whenCalled('fetchOne')
->with('select count(id) from notices_paniers where id_user=110')
->answers(1)
->whenCalled('fetchOne')
->answers(0)
->whenCalled('query')
......@@ -1325,13 +1336,42 @@ abstract class UsersControllerDoubleTestCase extends Admin_AbstractControllerTes
$this->createUsersWithStatusDifferentAndSameNames(89);
$this->createUsersWithStatusDifferentAndSameNames(90,[103,104,105], [1,1,1]);
$this->createUsersWithStatusDifferentAndSameNames(91,[106,107,108], [0,0,1]);
$this->createUsersWithEmptyValidityDate();
$this->fixture('Class_PanierNotice',
['id' => 4,
'libelle' => 's',
'id_user' => 25]);
}
protected function createUsersWithEmptyValidityDate() {
$this->fixture('Class_Users',
['id' => 110,
'nom' => 'Abatzi',
'prenom' => 'rita',
'statut' => 1,
'login' => 'rita',
'date_fin' => null,
'password' => 'rita',
'idabon' => 100,
'ordreabon' => 18]);
$this->fixture('Class_Users',
['id' => 111,
'nom' => 'Abatzi',
'prenom' => 'rita',
'statut' => 0,
'date_fin' =>null,
'login' => 'rita',
'password' => 'rita',
'idabon' => 100,
'ordreabon' => 18]);
$this->fixture('Class_PanierNotice',
['id' => 40,
'libelle' => 's',
'id_user' => 110]);
}
protected function createUsersWithStatusDifferentAndSameNames($id_abon, $ids = [100,101,102], $status = [0,1,1]) {
$this->fixture('Class_Users',
......@@ -1397,8 +1437,8 @@ class UsersControllerManageDoubleTest extends UsersControllerDoubleTestCase {
/** @test */
public function twoDoubleAccountsShouldBeFounded() {
$this->assertXPathContentContains('//p', 'Vous avez 5 comptes abonnés possédant au moins un doublon');
public function sixDoubleAccountsShouldBeFounded() {
$this->assertXPathContentContains('//p', 'Vous avez <b>6</b> comptes abonnés possédant au moins un doublon',$this->_response->getBody());
}
......@@ -1461,6 +1501,13 @@ class UsersControllerDeleteDoubleTest extends UsersControllerDoubleTestCase {
}
/** @test */
public function userId110And111ShouldNotHaveBeendDeleted() {
$this->assertNotNull(Class_Users::find(110));
$this->assertNotNull(Class_Users::find(111));
}
/** @test */
public function userId100ShouldHaveBaskets() {
$this->assertEquals(3,Class_PanierNotice::countBy(['id_user' => 100,'id' =>[100,101,102]]));
......@@ -1518,6 +1565,17 @@ class UsersControllerManageDoubleUserTest extends UsersControllerDoubleTestCase
$this->assertXpath('//div');
}
/** @test */
public function backButtonShouldBeDisplayed() {
$this->assertXpath('//button[contains(@onclick, "/admin/users/manage-double")]',$this->_response->getBody());
}
/** @test */
public function deleteButtonShouldBeDisplayed() {
$this->assertXpath('//button[contains(@onclick, "/admin/users/force-delete-double/id_user/25")]',$this->_response->getBody());
}
/** @test */
public function buttonMergeShouldBe654to25() {
......@@ -1611,6 +1669,27 @@ class UsersControllerManageDoubleMergeWithMultipleSourcesTest extends UsersContr
}
/** @test */
public function user655ShouldBeDeleted() {
$this->assertNull(Class_Users::find(655));
}
}
class UsersControllerForceDeleteDoubleTest extends UsersControllerDoubleTestCase {
public function setUp() {
parent::setUp();
$this->dispatch('/admin/users/force-delete-double/id_user/25', true);
}
/** @test */
public function user25ShouldNotBeDeleted() {
$this->assertNotNull(Class_Users::find(25));
}
/** @test */
public function user655ShouldBeDeleted() {
$this->assertNull(Class_Users::find(655));
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment