From 8dd11af96bb65bfb637ec6833b998d8480821fbf Mon Sep 17 00:00:00 2001 From: AntonyAntonio Date: Mon, 5 Dec 2016 23:17:18 -0300 Subject: [PATCH 01/10] Guillermo - path / staff/add[skip ci] --- server/controllers/staff.php | 2 + server/controllers/staff/add.php | 76 ++++++++++++++++++++++++++++++++ server/data/ERRORS.php | 2 + 3 files changed, 80 insertions(+) create mode 100644 server/controllers/staff/add.php diff --git a/server/controllers/staff.php b/server/controllers/staff.php index aafedcbd..c7cf0e91 100644 --- a/server/controllers/staff.php +++ b/server/controllers/staff.php @@ -6,6 +6,7 @@ require_once 'staff/get-tickets.php'; require_once 'staff/get-new-tickets.php'; require_once 'staff/get-all-tickets.php'; require_once 'staff/search-tickets.php'; +require_once 'staff/add.php'; $systemControllerGroup = new ControllerGroup(); $systemControllerGroup->setGroupPath('/staff'); @@ -17,5 +18,6 @@ $systemControllerGroup->addController(new GetTicketStaffController); $systemControllerGroup->addController(new GetNewTicketsStaffController); $systemControllerGroup->addController(new GetAllTicketsStaffController); $systemControllerGroup->addController(new SearchTicketStaffController); +$systemControllerGroup->addController(new AddStaffController); $systemControllerGroup->finalize(); \ No newline at end of file diff --git a/server/controllers/staff/add.php b/server/controllers/staff/add.php new file mode 100644 index 00000000..63183974 --- /dev/null +++ b/server/controllers/staff/add.php @@ -0,0 +1,76 @@ + 'staff_3', + 'requestData' => [ + 'name' => [ + 'validation' => DataValidator::length(2, 55)->alpha(), + 'error' => ERRORS::INVALID_NAME + ], + 'email' => [ + 'validation' => DataValidator::email(), + 'error' => ERRORS::INVALID_EMAIL + ], + 'password' => [ + 'validation' => DataValidator::length(5, 200), + 'error' => ERRORS::INVALID_PASSWORD + ], + 'level' => [ + 'validation' => DataValidator::between(1, 3, true), + 'error' => ERRORS::INVALID_LEVEL + ] + + ] + ]; + } + + public function handler() { + + $this->storeRequestData(); + $staff = new Staff(); + + $staffrow = Staff::getDataStore($this->email,'email'); + + if($staffrow->isNull()) { + $staff->setProperties([ + 'name'=> $this->name, + 'email' => $this->email, + 'password'=> $this->password, + 'profilePic' => $this->profilePic, + 'level' => $this->level, + 'sharedDepartmentList'=> $this->departments, + ]); + + $staff->store(); + + Response::respondSuccess(); + return; + } + + Response::respondError(ERRORS::ALREADY_A_STAFF); + + + } + public function storeRequestData() { + $this->name = Controller::request('name'); + $this->email = Controller::request('email'); + $this->password = Controller::request('password'); + $this->profilePic = Controller::request('profilePic'); + $this->level = Controller::request('level'); + $this->departments = Controller::request('departments'); + } +} \ No newline at end of file diff --git a/server/data/ERRORS.php b/server/data/ERRORS.php index 91387377..f0bd8322 100644 --- a/server/data/ERRORS.php +++ b/server/data/ERRORS.php @@ -26,4 +26,6 @@ class ERRORS { const INVALID_ORDER = 'INVALID_ORDER'; const INVALID_USER = 'INVALID_USER'; const ALREADY_BANNED = 'ALREADY_BANNED'; + const INVALID_LEVEL = 'INVALID_LEVEL'; + const ALREADY_A_STAFF = 'ALREADY_A_STAFF'; } From b2547ce5f86be82692960a7ddec487f0d5ea7900 Mon Sep 17 00:00:00 2001 From: AntonyAntonio Date: Tue, 6 Dec 2016 01:32:00 -0300 Subject: [PATCH 02/10] Guillermo - path / staff/add[skip ci] --- server/controllers/staff/get.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/controllers/staff/get.php b/server/controllers/staff/get.php index db922c80..dfbf5ce1 100644 --- a/server/controllers/staff/get.php +++ b/server/controllers/staff/get.php @@ -14,6 +14,20 @@ class GetStaffController extends Controller { public function handler() { $user = Controller::getLoggedUser(); + + $userId = Controller::request('userId'); + $userRow = Staff::getDataStore($userId,'id'); + + if($user->level == 3 && !$userRow->isNull()) { + Response::respondSuccess([ + 'id' => $userRow->id, + 'name' => $userRow->name, + 'email' => $userRow->email, + 'password' => $userRow->password + ]); + return; + } + $parsedDepartmentList = []; $departmentList = $user->sharedDepartmentList; From 1a3adfe41821ce6242f5cd6ca3a90e378cba3ab9 Mon Sep 17 00:00:00 2001 From: AntonyAntonio Date: Wed, 7 Dec 2016 01:37:18 -0300 Subject: [PATCH 03/10] Guillermo - path / staff/get-all[skip ci] --- server/controllers/staff.php | 4 ++++ server/controllers/staff/delete.php | 18 ++++++++++++++++++ server/controllers/staff/get-all.php | 27 +++++++++++++++++++++++++++ server/models/Staff.php | 11 +++++++++++ 4 files changed, 60 insertions(+) create mode 100644 server/controllers/staff/delete.php create mode 100644 server/controllers/staff/get-all.php diff --git a/server/controllers/staff.php b/server/controllers/staff.php index c7cf0e91..f1cfb954 100644 --- a/server/controllers/staff.php +++ b/server/controllers/staff.php @@ -7,6 +7,8 @@ require_once 'staff/get-new-tickets.php'; require_once 'staff/get-all-tickets.php'; require_once 'staff/search-tickets.php'; require_once 'staff/add.php'; +require_once 'staff/get-all.php'; +require_once 'staff/delete.php'; $systemControllerGroup = new ControllerGroup(); $systemControllerGroup->setGroupPath('/staff'); @@ -19,5 +21,7 @@ $systemControllerGroup->addController(new GetNewTicketsStaffController); $systemControllerGroup->addController(new GetAllTicketsStaffController); $systemControllerGroup->addController(new SearchTicketStaffController); $systemControllerGroup->addController(new AddStaffController); +$systemControllerGroup->addController(new GetAllStaffController); +$systemControllerGroup->addController(new DeleteStaffController); $systemControllerGroup->finalize(); \ No newline at end of file diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php new file mode 100644 index 00000000..1ffdbe9a --- /dev/null +++ b/server/controllers/staff/delete.php @@ -0,0 +1,18 @@ + 'staff_3', + 'requestData' => [] + ]; + } + + public function handler (){ + + } + +} \ No newline at end of file diff --git a/server/controllers/staff/get-all.php b/server/controllers/staff/get-all.php new file mode 100644 index 00000000..afec9d07 --- /dev/null +++ b/server/controllers/staff/get-all.php @@ -0,0 +1,27 @@ + 'staff_3', + 'requestData' => [] + ]; + } + + + public function handler() { + $staffs = Staff::getAll(); + $staffArray = []; + + foreach($staffs as $staff) { + $staffArray[] = $staff->toArray(); + } + + Response::respondSuccess($staffArray); + + } +} \ No newline at end of file diff --git a/server/models/Staff.php b/server/models/Staff.php index 03e3e078..67cf9e8a 100644 --- a/server/models/Staff.php +++ b/server/models/Staff.php @@ -30,4 +30,15 @@ class Staff extends DataStore { public static function getUser($value, $property = 'id') { return parent::getDataStore($value, $property); } + public function toArray() { + return [ + 'name'=> $this->name, + 'email' => $this->email, + 'password' => $this->password, + 'profilePic' => $this->profilePic, + 'level' => $this->level, + 'departments' => $this->sharedDepartmentList->toArray(), + 'tickets' => $this->sharedTicketList->toArray(), + ]; + } } From 60211c2b3cf383169cafc6d2876b48de296a6dff Mon Sep 17 00:00:00 2001 From: AntonyAntonio Date: Wed, 7 Dec 2016 02:06:50 -0300 Subject: [PATCH 04/10] Guillermo - path / staff/delete[skip ci] --- server/controllers/staff/delete.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php index 1ffdbe9a..67b50f89 100644 --- a/server/controllers/staff/delete.php +++ b/server/controllers/staff/delete.php @@ -1,5 +1,6 @@ 'staff_3', - 'requestData' => [] + 'requestData' => [ + + ] ]; } - public function handler (){ + public function handler() { + $staffId = Controller::request('userId'); + + + $staff = Staff::getDataStore($staffId); + $staff->delete(); + Response::respondSuccess(); } } \ No newline at end of file From 630e121bfbc85478dafcbe8a83dce8151abc7a8f Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 7 Dec 2016 16:59:42 -0300 Subject: [PATCH 05/10] Guillermo - staff/add [skip ci] --- server/controllers/staff/add.php | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/server/controllers/staff/add.php b/server/controllers/staff/add.php index 63183974..dbcaeccf 100644 --- a/server/controllers/staff/add.php +++ b/server/controllers/staff/add.php @@ -39,20 +39,19 @@ class AddStaffController extends Controller { } public function handler() { - $this->storeRequestData(); - $staff = new Staff(); + $staff = new Staff(); - $staffrow = Staff::getDataStore($this->email,'email'); + $staffRow = Staff::getDataStore($this->email,'email'); - if($staffrow->isNull()) { + if($staffRow->isNull()) { $staff->setProperties([ 'name'=> $this->name, 'email' => $this->email, 'password'=> $this->password, 'profilePic' => $this->profilePic, 'level' => $this->level, - 'sharedDepartmentList'=> $this->departments, + 'sharedDepartmentList'=> $this->getDepartmentList(), ]); $staff->store(); @@ -62,9 +61,8 @@ class AddStaffController extends Controller { } Response::respondError(ERRORS::ALREADY_A_STAFF); - - } + public function storeRequestData() { $this->name = Controller::request('name'); $this->email = Controller::request('email'); @@ -73,4 +71,16 @@ class AddStaffController extends Controller { $this->level = Controller::request('level'); $this->departments = Controller::request('departments'); } + + public function getDepartmentList() { + $listDepartments = new DataStoreList(); + $departmentIds = json_decode($this->departments); + + foreach($departmentIds as $id) { + $department = Department::getDataStore($id); + $listDepartments->add($department); + } + + return $listDepartments; + } } \ No newline at end of file From d57baa6cd8b93e9dbb764a31b4d6d25461a917b1 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 7 Dec 2016 17:24:42 -0300 Subject: [PATCH 06/10] Guillermo - staff/dellete[skip ci] --- server/controllers/staff/delete.php | 17 ++++++++++++----- server/data/ERRORS.php | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php index 67b50f89..17fb8042 100644 --- a/server/controllers/staff/delete.php +++ b/server/controllers/staff/delete.php @@ -9,17 +9,24 @@ class DeleteStaffController extends Controller { return [ 'permission' => 'staff_3', 'requestData' => [ - + 'staffId' => [ + 'validation' => DataValidator::dataStoreId('staff'), + 'error' => ERRORS::INVALID_STAFF + ] ] ]; } public function handler() { - $staffId = Controller::request('userId'); - - - + $staffId = Controller::request('staffId'); $staff = Staff::getDataStore($staffId); + + foreach($staff->sharedTicketList as $ticket) { + $ticket->owner = null; + $ticket->unread = true; + $ticket->store(); + } + $staff->delete(); Response::respondSuccess(); } diff --git a/server/data/ERRORS.php b/server/data/ERRORS.php index f0bd8322..5f1c70b0 100644 --- a/server/data/ERRORS.php +++ b/server/data/ERRORS.php @@ -28,4 +28,5 @@ class ERRORS { const ALREADY_BANNED = 'ALREADY_BANNED'; const INVALID_LEVEL = 'INVALID_LEVEL'; const ALREADY_A_STAFF = 'ALREADY_A_STAFF'; + const INVALID_STAFF = 'INVALID_STAFF'; } From 6bad1949034f8e68126f1ccd1b7f791720b78ef8 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 7 Dec 2016 19:30:31 -0300 Subject: [PATCH 07/10] Guillermo - staff/edit[skip ci] --- server/controllers/staff.php | 2 + server/controllers/staff/delete.php | 9 ++-- server/controllers/staff/edit.php | 66 +++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 server/controllers/staff/edit.php diff --git a/server/controllers/staff.php b/server/controllers/staff.php index f1cfb954..fff73e65 100644 --- a/server/controllers/staff.php +++ b/server/controllers/staff.php @@ -9,6 +9,7 @@ require_once 'staff/search-tickets.php'; require_once 'staff/add.php'; require_once 'staff/get-all.php'; require_once 'staff/delete.php'; +require_once 'staff/edit.php'; $systemControllerGroup = new ControllerGroup(); $systemControllerGroup->setGroupPath('/staff'); @@ -23,5 +24,6 @@ $systemControllerGroup->addController(new SearchTicketStaffController); $systemControllerGroup->addController(new AddStaffController); $systemControllerGroup->addController(new GetAllStaffController); $systemControllerGroup->addController(new DeleteStaffController); +$systemControllerGroup->addController(new EditStaffController); $systemControllerGroup->finalize(); \ No newline at end of file diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php index 17fb8042..1b315abe 100644 --- a/server/controllers/staff/delete.php +++ b/server/controllers/staff/delete.php @@ -9,10 +9,7 @@ class DeleteStaffController extends Controller { return [ 'permission' => 'staff_3', 'requestData' => [ - 'staffId' => [ - 'validation' => DataValidator::dataStoreId('staff'), - 'error' => ERRORS::INVALID_STAFF - ] + ] ]; } @@ -23,8 +20,8 @@ class DeleteStaffController extends Controller { foreach($staff->sharedTicketList as $ticket) { $ticket->owner = null; - $ticket->unread = true; - $ticket->store(); + $ticket->true = true; + $ticket->store() } $staff->delete(); diff --git a/server/controllers/staff/edit.php b/server/controllers/staff/edit.php new file mode 100644 index 00000000..4d675b99 --- /dev/null +++ b/server/controllers/staff/edit.php @@ -0,0 +1,66 @@ + 'staff_3', + 'requestData' => [ + 'staffId' =>[ + 'validation' => DataValidator::dataStoreId('staff'), + 'error' => ERRORS::INVALID_STAFF + ] + ] + ]; + } + + public function handler() { + $this->staffId = Controller::request('staffId'); + + if(!$this->staffId) { + $this->staffRow = Controller::getLoggedUser(); + } else { + $this->staffRow = Staff::getDataStore($this->staffId,'id'); + } + + $this->editInformation(); + Response::respondSuccess(); + } + + public function editInformation() { + + if(Controller::request('email')) { + $this->staffRow->email = Controller::request('email'); + } + + if(Controller::request('password')) { + $this->staffRow->password = Controller::request('password'); + } + if(Controller::request('level')) { + $this->staffRow->level = Controller::request('level'); + } + if(Controller::request('departments')) { + $this->staffRow->sharedDepartmentList = $this->getDepartmentList(); + } + + $this->staffRow->store(); + } + + + public function getDepartmentList() { + $listDepartments = new DataStoreList(); + $departmentIds = json_decode(Controller::request('departments')); + + foreach($departmentIds as $id) { + $department = Department::getDataStore($id); + $listDepartments->add($department); + } + + return $listDepartments; + } +} \ No newline at end of file From 829e6060f5d200bffb76b19c5f90a267e87c3224 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 7 Dec 2016 23:43:32 -0300 Subject: [PATCH 08/10] Guillermo - staff/edit[skip ci] --- server/controllers/staff/delete.php | 2 +- server/models/Department.php | 2 +- tests/staff/add.rb | 5 +++++ tests/staff/delete.rb | 0 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 tests/staff/add.rb create mode 100644 tests/staff/delete.rb diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php index 1b315abe..78df1c6b 100644 --- a/server/controllers/staff/delete.php +++ b/server/controllers/staff/delete.php @@ -21,7 +21,7 @@ class DeleteStaffController extends Controller { foreach($staff->sharedTicketList as $ticket) { $ticket->owner = null; $ticket->true = true; - $ticket->store() + $ticket->store(); } $staff->delete(); diff --git a/server/models/Department.php b/server/models/Department.php index a263d38e..ac499081 100644 --- a/server/models/Department.php +++ b/server/models/Department.php @@ -7,7 +7,7 @@ class Department extends DataStore { public static function getProps() { return [ 'name', - 'sharedTicketList' + 'sharedTicketList', ]; } diff --git a/tests/staff/add.rb b/tests/staff/add.rb new file mode 100644 index 00000000..5f9c6e75 --- /dev/null +++ b/tests/staff/add.rb @@ -0,0 +1,5 @@ +describe'/staff/add' do + request() + + it 'should ' +end \ No newline at end of file diff --git a/tests/staff/delete.rb b/tests/staff/delete.rb new file mode 100644 index 00000000..e69de29b From 895fbf011f82bae82ae9df7d546e6b5eb05fdd63 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 8 Dec 2016 03:21:37 -0300 Subject: [PATCH 09/10] GUILLERMO - all test staff [skip ci] --- server/controllers/staff/add.php | 9 ++-- server/controllers/staff/delete.php | 5 ++- server/controllers/staff/edit.php | 27 +++++++----- server/controllers/staff/get-all.php | 18 +++++++- server/controllers/staff/get.php | 12 ++---- server/libs/validations/dataStoreId.php | 4 ++ server/models/Department.php | 6 +++ server/models/Staff.php | 3 +- tests/init.rb | 4 ++ tests/staff/add.rb | 41 +++++++++++++++++- tests/staff/delete.rb | 29 +++++++++++++ tests/staff/edit.rb | 56 +++++++++++++++++++++++++ tests/staff/get-all.rb | 35 ++++++++++++++++ tests/staff/get.rb | 15 +++++++ 14 files changed, 234 insertions(+), 30 deletions(-) create mode 100644 tests/staff/edit.rb create mode 100644 tests/staff/get-all.rb diff --git a/server/controllers/staff/add.php b/server/controllers/staff/add.php index dbcaeccf..e3b13390 100644 --- a/server/controllers/staff/add.php +++ b/server/controllers/staff/add.php @@ -48,15 +48,16 @@ class AddStaffController extends Controller { $staff->setProperties([ 'name'=> $this->name, 'email' => $this->email, - 'password'=> $this->password, + 'password'=> Hashing::hashPassword($this->password), 'profilePic' => $this->profilePic, 'level' => $this->level, 'sharedDepartmentList'=> $this->getDepartmentList(), ]); - $staff->store(); - - Response::respondSuccess(); + + Response::respondSuccess([ + 'id' => $staff->store() + ]); return; } diff --git a/server/controllers/staff/delete.php b/server/controllers/staff/delete.php index 78df1c6b..d9332267 100644 --- a/server/controllers/staff/delete.php +++ b/server/controllers/staff/delete.php @@ -9,7 +9,10 @@ class DeleteStaffController extends Controller { return [ 'permission' => 'staff_3', 'requestData' => [ - + 'staffId' =>[ + 'validation' => DataValidator::dataStoreId('staff'), + 'error' => ERRORS::INVALID_STAFF + ] ] ]; } diff --git a/server/controllers/staff/edit.php b/server/controllers/staff/edit.php index 4d675b99..66500cc0 100644 --- a/server/controllers/staff/edit.php +++ b/server/controllers/staff/edit.php @@ -9,13 +9,8 @@ class EditStaffController extends Controller { public function validations() { return [ - 'permission' => 'staff_3', - 'requestData' => [ - 'staffId' =>[ - 'validation' => DataValidator::dataStoreId('staff'), - 'error' => ERRORS::INVALID_STAFF - ] - ] + 'permission' => 'staff_1', + 'requestData' => [] ]; } @@ -24,8 +19,16 @@ class EditStaffController extends Controller { if(!$this->staffId) { $this->staffRow = Controller::getLoggedUser(); + } else if(Controller::isStaffLogged(3)) { + $this->staffRow = Staff::getDataStore($this->staffId, 'id'); + + if($this->staffRow->isNull()) { + Response::respondError(ERRORS::INVALID_STAFF); + return; + } } else { - $this->staffRow = Staff::getDataStore($this->staffId,'id'); + Response::respondError(ERRORS::NO_PERMISSION); + return; } $this->editInformation(); @@ -39,12 +42,14 @@ class EditStaffController extends Controller { } if(Controller::request('password')) { - $this->staffRow->password = Controller::request('password'); + $this->staffRow->password = Hashing::hashPassword(Controller::request('password')); } - if(Controller::request('level')) { + + if(Controller::request('level') && Controller::isStaffLogged(3)) { $this->staffRow->level = Controller::request('level'); } - if(Controller::request('departments')) { + + if(Controller::request('departments') && Controller::isStaffLogged(3)) { $this->staffRow->sharedDepartmentList = $this->getDepartmentList(); } diff --git a/server/controllers/staff/get-all.php b/server/controllers/staff/get-all.php index afec9d07..12f027c6 100644 --- a/server/controllers/staff/get-all.php +++ b/server/controllers/staff/get-all.php @@ -18,7 +18,23 @@ class GetAllStaffController extends Controller { $staffArray = []; foreach($staffs as $staff) { - $staffArray[] = $staff->toArray(); + $assignedTickets = 0; + $closedTickets = 0; + + foreach ($staff->sharedTicketList as $ticket) { + if($ticket->closed) $closedTickets++; + else $assignedTickets++; + } + + $staffArray[] = [ + 'name' => $staff->name, + 'email' => $staff->email, + 'profilePic' => $staff->profilePic, + 'level' => $staff->level, + 'departments' => $staff->sharedDepartmentList->toArray(), + 'assignedTickets' => $assignedTickets, + 'closedTickets' => $closedTickets, + ]; } Response::respondSuccess($staffArray); diff --git a/server/controllers/staff/get.php b/server/controllers/staff/get.php index dfbf5ce1..1cd6a491 100644 --- a/server/controllers/staff/get.php +++ b/server/controllers/staff/get.php @@ -15,17 +15,11 @@ class GetStaffController extends Controller { public function handler() { $user = Controller::getLoggedUser(); - $userId = Controller::request('userId'); - $userRow = Staff::getDataStore($userId,'id'); + $userId = Controller::request('staffId'); + $userRow = Staff::getDataStore($userId); if($user->level == 3 && !$userRow->isNull()) { - Response::respondSuccess([ - 'id' => $userRow->id, - 'name' => $userRow->name, - 'email' => $userRow->email, - 'password' => $userRow->password - ]); - return; + $user = $userRow; } $parsedDepartmentList = []; diff --git a/server/libs/validations/dataStoreId.php b/server/libs/validations/dataStoreId.php index a510cb55..029ee33c 100644 --- a/server/libs/validations/dataStoreId.php +++ b/server/libs/validations/dataStoreId.php @@ -22,6 +22,9 @@ class DataStoreId extends AbstractRule { case 'user': $dataStore = \User::getUser($dataStoreId); break; + case 'staff': + $dataStore = \Staff::getUser($dataStoreId); + break; case 'ticket': $dataStore = \Ticket::getTicket($dataStoreId); break; @@ -45,6 +48,7 @@ class DataStoreId extends AbstractRule { private function isDataStoreNameValid($dataStoreName) { return in_array($dataStoreName, [ 'user', + 'staff', 'ticket', 'department', 'customresponse', diff --git a/server/models/Department.php b/server/models/Department.php index ac499081..f2abbaa0 100644 --- a/server/models/Department.php +++ b/server/models/Department.php @@ -24,4 +24,10 @@ class Department extends DataStore { return $departmentsNameList; } + public function toArray() { + return [ + 'id' => $this->id, + 'name' => $this->name + ]; + } } \ No newline at end of file diff --git a/server/models/Staff.php b/server/models/Staff.php index 67cf9e8a..02e72cf3 100644 --- a/server/models/Staff.php +++ b/server/models/Staff.php @@ -34,11 +34,10 @@ class Staff extends DataStore { return [ 'name'=> $this->name, 'email' => $this->email, - 'password' => $this->password, 'profilePic' => $this->profilePic, 'level' => $this->level, 'departments' => $this->sharedDepartmentList->toArray(), - 'tickets' => $this->sharedTicketList->toArray(), + 'tickets' => $this->sharedTicketList->toArray() ]; } } diff --git a/tests/init.rb b/tests/init.rb index 45791f55..0af3e81a 100644 --- a/tests/init.rb +++ b/tests/init.rb @@ -25,7 +25,10 @@ require './ticket/custom-response.rb' require './ticket/change-department.rb' require './ticket/close.rb' require './ticket/re-open.rb' +require './staff/add.rb' require './staff/get.rb' +require './staff/edit.rb' +require './staff/delete.rb' require './staff/assign-ticket.rb' require './staff/un-assign-ticket.rb' require './staff/get-tickets.rb' @@ -39,5 +42,6 @@ require './user/get-user.rb' require './user/ban.rb' require './user/get-users-test.rb' require './user/delete.rb' +require './staff/get-all.rb' diff --git a/tests/staff/add.rb b/tests/staff/add.rb index 5f9c6e75..5b189cc3 100644 --- a/tests/staff/add.rb +++ b/tests/staff/add.rb @@ -1,5 +1,42 @@ describe'/staff/add' do - request() + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) - it 'should ' + it 'should add staff member' do + result= request('/staff/add', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + name: 'Tyrion Lannister', + email: 'tyrion@opensupports.com', + password: 'testpassword', + level: 2, + profilePic: 'http://www.opensupports.com/profilepic.jpg', + departments: '[1]' + }) + + (result['status']).should.equal('success') + + row = $database.getRow('staff', result['data']['id'], 'id') + + (row['name']).should.equal('Tyrion Lannister') + (row['email']).should.equal('tyrion@opensupports.com') + (row['profile_pic']).should.equal('http://www.opensupports.com/profilepic.jpg') + (row['level']).should.equal('2') + end + it 'should fail if staff member is alrady a staff' do + result= request('/staff/add', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + name: 'Tyrion Lannister', + email: 'tyrion@opensupports.com', + password: 'testpassword', + level: 2, + profilePic: 'http://www.opensupports.com/profilepic.jpg', + departments: '[1]' + }) + + (result['status']).should.equal('fail') + (result['message']).should.equal('ALREADY_A_STAFF') + + end end \ No newline at end of file diff --git a/tests/staff/delete.rb b/tests/staff/delete.rb index e69de29b..af55dcc5 100644 --- a/tests/staff/delete.rb +++ b/tests/staff/delete.rb @@ -0,0 +1,29 @@ +describe'/staff/delete' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + + it 'should delete staff member' do + result= request('/staff/delete', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + staffId:2 + }) + + (result['status']).should.equal('success') + + row = $database.getRow('staff', 2, 'id') + (row).should.equal(nil) + + end + it 'should fail delete if staff member is does not exist' do + result= request('/staff/delete', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + staffId:2 + }) + + (result['status']).should.equal('fail') + (result['message']).should.equal('INVALID_STAFF') + + end +end \ No newline at end of file diff --git a/tests/staff/edit.rb b/tests/staff/edit.rb new file mode 100644 index 00000000..3167359f --- /dev/null +++ b/tests/staff/edit.rb @@ -0,0 +1,56 @@ +describe'/staff/edit' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + + it 'should edit another staff member' do + result= request('/staff/edit', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + email: 'LittleLannister@opensupports.com', + level: 1, + departments: '[1, 2]', + staffId: 2 + }) + + (result['status']).should.equal('success') + + row = $database.getRow('staff', 2, 'id') + + (row['email']).should.equal('LittleLannister@opensupports.com') + (row['level']).should.equal('1') + + rows = $database.getRow('department_staff', 2, 'staff_id') + + (rows['department_id']).should.equal('1') + + end + + it 'should edit staff member ' do + request('/staff/add', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + name: 'Arya Stark', + password: 'starkpassword', + email: 'arya@opensupports.com', + level: 2, + profilePic: 'http://www.opensupports.com/profilepic.jpg', + departments: '[1]' + }) + request('/user/logout') + Scripts.login('arya@opensupports.com', 'starkpassword', true) + + result = request('/staff/edit', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + email: 'newwstaff@opensupports.com', + }) + + (result['status']).should.equal('success') + + row = $database.getRow('staff', $csrf_userid, 'id') + + (row['email']).should.equal('newwstaff@opensupports.com') + (row['level']).should.equal('2') + + end +end \ No newline at end of file diff --git a/tests/staff/get-all.rb b/tests/staff/get-all.rb new file mode 100644 index 00000000..ba5544f5 --- /dev/null +++ b/tests/staff/get-all.rb @@ -0,0 +1,35 @@ +describe'/staff/get-all' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + + it 'should get all staff member' do + result= request('/staff/get-all', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + + (result['status']).should.equal('success') + + (result['data'][0]['name']).should.equal('Emilia Clarke') + (result['data'][0]['email']).should.equal('staff@opensupports.com') + (result['data'][0]['profilePic']).should.equal('http://www.opensupports.com/profilepic.jpg') + (result['data'][0]['level']).should.equal('3') + (result['data'][0]['departments'][0]['id']).should.equal('1') + (result['data'][0]['departments'][0]['name']).should.equal('Tech Support') + (result['data'][0]['departments'][1]['id']).should.equal('2') + (result['data'][0]['departments'][1]['name']).should.equal('Suggestions') + (result['data'][0]['departments'][2]['id']).should.equal('3') + (result['data'][0]['departments'][2]['name']).should.equal('Sales and Subscriptions') + (result['data'][0]['assignedTickets']).should.equal(3) + (result['data'][0]['closedTickets']).should.equal(0) + + (result['data'][1]['name']).should.equal('Arya Stark') + (result['data'][1]['email']).should.equal('newwstaff@opensupports.com') + (result['data'][1]['profilePic']).should.equal('http://www.opensupports.com/profilepic.jpg') + (result['data'][1]['level']).should.equal('2') + (result['data'][1]['departments'][0]['id']).should.equal('1') + (result['data'][1]['departments'][0]['name']).should.equal('Tech Support') + (result['data'][1]['assignedTickets']).should.equal(0) + (result['data'][1]['closedTickets']).should.equal(0) + end +end \ No newline at end of file diff --git a/tests/staff/get.rb b/tests/staff/get.rb index a0abd11b..86f1870b 100644 --- a/tests/staff/get.rb +++ b/tests/staff/get.rb @@ -11,5 +11,20 @@ describe '/staff/get/' do (result['status']).should.equal('success') (result['data']['name']).should.equal('Emilia Clarke') (result['data']['staff']).should.equal(true) + (result['data']['email']).should.equal('staff@opensupports.com') + (result['data']['level']).should.equal('3') + end + it 'should return staff member data with staff Id' do + result = request('/staff/get', { + csrf_userid: $csrf_userid, + csrf_token: $csrf_token, + staffId:2 + }) + + (result['status']).should.equal('success') + (result['data']['name']).should.equal('Tyrion Lannister') + (result['data']['staff']).should.equal(true) + (result['data']['email']).should.equal('tyrion@opensupports.com') + (result['data']['level']).should.equal('2') end end \ No newline at end of file From 980904f86e2612bdaf2caf31f15ab021e65874b5 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Thu, 8 Dec 2016 14:30:19 -0300 Subject: [PATCH 10/10] Guillermo - staff/edit[skip ci] --- client/src/data/fixtures/staff-fixtures.js | 1 + server/controllers/staff/get-all.php | 1 + server/models/Department.php | 2 +- server/models/Staff.php | 4 +++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/client/src/data/fixtures/staff-fixtures.js b/client/src/data/fixtures/staff-fixtures.js index 4aadb436..97d3fe28 100644 --- a/client/src/data/fixtures/staff-fixtures.js +++ b/client/src/data/fixtures/staff-fixtures.js @@ -536,6 +536,7 @@ module.exports = [ pages: 4 } } + } }, { diff --git a/server/controllers/staff/get-all.php b/server/controllers/staff/get-all.php index 12f027c6..13428201 100644 --- a/server/controllers/staff/get-all.php +++ b/server/controllers/staff/get-all.php @@ -27,6 +27,7 @@ class GetAllStaffController extends Controller { } $staffArray[] = [ + 'id' => $staff->id, 'name' => $staff->name, 'email' => $staff->email, 'profilePic' => $staff->profilePic, diff --git a/server/models/Department.php b/server/models/Department.php index f2abbaa0..58d8cd38 100644 --- a/server/models/Department.php +++ b/server/models/Department.php @@ -7,7 +7,7 @@ class Department extends DataStore { public static function getProps() { return [ 'name', - 'sharedTicketList', + 'sharedTicketList' ]; } diff --git a/server/models/Staff.php b/server/models/Staff.php index 02e72cf3..d2895eb4 100644 --- a/server/models/Staff.php +++ b/server/models/Staff.php @@ -30,9 +30,11 @@ class Staff extends DataStore { public static function getUser($value, $property = 'id') { return parent::getDataStore($value, $property); } + public function toArray() { return [ - 'name'=> $this->name, + 'id' => $this->id, + 'name' => $this->name, 'email' => $this->email, 'profilePic' => $this->profilePic, 'level' => $this->level,