From 4f127b1d214db5163c620c2eeb413923178179eb Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Fri, 30 Sep 2016 18:47:04 -0300 Subject: [PATCH 1/3] Ivan - Add text editor to text area [skip ci] --- server/controllers/staff.php | 2 ++ server/controllers/staff/assign.php | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 server/controllers/staff/assign.php diff --git a/server/controllers/staff.php b/server/controllers/staff.php index 21df1a90..da897571 100644 --- a/server/controllers/staff.php +++ b/server/controllers/staff.php @@ -1,9 +1,11 @@ setGroupPath('/staff'); $systemControllerGroup->addController(new GetStaffController); +$systemControllerGroup->addController(new AssignStaffController); $systemControllerGroup->finalize(); \ No newline at end of file diff --git a/server/controllers/staff/assign.php b/server/controllers/staff/assign.php new file mode 100644 index 00000000..423f1038 --- /dev/null +++ b/server/controllers/staff/assign.php @@ -0,0 +1,23 @@ + 'staff_1', + 'requestData' => [ + 'ticketNumber' => [ + 'validation' => DataValidator::validTicketNumber(), + 'error' => ERRORS::INVALID_TICKET + ] + ] + ]; + } + + public function handler() { + + } +} From db97ee09b79dd4511d6fe5ad74cb68994467b8ed Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 7 Oct 2016 19:03:21 -0300 Subject: [PATCH 2/3] guillermo - add asign staff ticket [skip ci] --- server/controllers/staff.php | 2 +- server/controllers/staff/assign-ticket.php | 56 ++++++++++++++++++++++ server/controllers/staff/assign.php | 23 --------- server/data/ERRORS.php | 1 + server/models/Ticket.php | 1 - 5 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 server/controllers/staff/assign-ticket.php delete mode 100644 server/controllers/staff/assign.php diff --git a/server/controllers/staff.php b/server/controllers/staff.php index da897571..8699ac91 100644 --- a/server/controllers/staff.php +++ b/server/controllers/staff.php @@ -1,6 +1,6 @@ setGroupPath('/staff'); diff --git a/server/controllers/staff/assign-ticket.php b/server/controllers/staff/assign-ticket.php new file mode 100644 index 00000000..e32e44cd --- /dev/null +++ b/server/controllers/staff/assign-ticket.php @@ -0,0 +1,56 @@ + 'staff_1', + 'requestData' => [ + 'ticketNumber' => [ + 'validation' => DataValidator::validTicketNumber(), + 'error' => ERRORS::INVALID_TICKET + ] + ] + ]; + } + + public function handler() { + $ticketNumber = Controller::request('ticketNumber'); + $this->user = Controller::getLoggedUser(); + $this->ticket = Ticket::getByTicketNumber($ticketNumber); + + if($this->ticket->owner) { + Response::respondError(ERRORS::TICKET_ALREADY_ASSIGNED); + return; + } + + if(!$this->ticketHasStaffDepartment()) { + Response::respondError(ERRORS::INVALID_DEPARTMENT); + } else { + $this->user->sharedTicketList->add($this->ticket); + $this->ticket->owner = $this->user; + $this->ticket->store(); + $this->user->store(); + + Response::respondSuccess(); + } + + } + + public function ticketHasStaffDepartment() { + $departmentMatch = false; + + foreach ($this->user->sharedDepartmentList as $department) { + if($this->ticket->department->id === $department->id) { + $departmentMatch = true; + } + } + + return $departmentMatch; + } +} diff --git a/server/controllers/staff/assign.php b/server/controllers/staff/assign.php deleted file mode 100644 index 423f1038..00000000 --- a/server/controllers/staff/assign.php +++ /dev/null @@ -1,23 +0,0 @@ - 'staff_1', - 'requestData' => [ - 'ticketNumber' => [ - 'validation' => DataValidator::validTicketNumber(), - 'error' => ERRORS::INVALID_TICKET - ] - ] - ]; - } - - public function handler() { - - } -} diff --git a/server/data/ERRORS.php b/server/data/ERRORS.php index a4ef80d2..45d4ba1b 100644 --- a/server/data/ERRORS.php +++ b/server/data/ERRORS.php @@ -17,4 +17,5 @@ class ERRORS { const INVALID_CAPTCHA = 'INVALID_CAPTCHA'; const INVALID_TICKET_EVENT = 'INVALID_TICKET_EVENT'; const INVALID_LANGUAGE = 'INVALID_LANGUAGE'; + const TICKET_ALREADY_ASSIGNED = 'TICKET_ALREADY_ASSIGNED'; } diff --git a/server/models/Ticket.php b/server/models/Ticket.php index 03e22fc7..b029b6a4 100644 --- a/server/models/Ticket.php +++ b/server/models/Ticket.php @@ -32,7 +32,6 @@ class Ticket extends DataStore { public function getDefaultProps() { return array( - 'owner' => null, 'priority' => 'low', 'ticketNumber' => $this->generateUniqueTicketNumber() ); From dcea795f89163f65b9b13cc29d33246971deff7b Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 7 Oct 2016 20:32:22 -0300 Subject: [PATCH 3/3] guillermo - add asign staff ticket [skip ci] --- tests/init.rb | 1 + tests/staff/assign-ticket.rb | 45 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 tests/staff/assign-ticket.rb diff --git a/tests/init.rb b/tests/init.rb index a664dc8b..07865079 100644 --- a/tests/init.rb +++ b/tests/init.rb @@ -23,3 +23,4 @@ require './ticket/comment.rb' require './ticket/get.rb' require './ticket/custom-response.rb' require './staff/get.rb' +require './staff/assign-ticket.rb' diff --git a/tests/staff/assign-ticket.rb b/tests/staff/assign-ticket.rb new file mode 100644 index 00000000..432ad9ca --- /dev/null +++ b/tests/staff/assign-ticket.rb @@ -0,0 +1,45 @@ +describe '/staff/assign-ticket' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + + #TODO: Create a staff without all department + + #it 'should fail if staff is not in the same department'do + + #end + + it 'should assign ticket if everything is okey' do + ticket = $database.getRow('ticket', 1 , 'id') + result = request('/staff/assign-ticket', { + ticketNumber: ticket['ticket_number'], + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + + (result['status']).should.equal('success') + + ticket = $database.getRow('ticket', 1 , 'id') + + (ticket['owner_id']).should.equal('1') + + staff_ticket = $database.getRow('staff_ticket', 1 , 'id') + + (staff_ticket['staff_id']).should.equal('1') + + (staff_ticket['ticket_id']).should.equal('1') + end + + it 'should fail if ticket is already owned' do + ticket = $database.getRow('ticket', 1 , 'id') + + result = request('/staff/assign-ticket', { + ticketNumber: ticket['ticket_number'], + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + + (result['status']).should.equal('fail') + (result['message']).should.equal('TICKET_ALREADY_ASSIGNED') + end + +end \ No newline at end of file