From ea586072eb8e9de1de6a3d03dde28c6370594d2b Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 15 Oct 2016 01:32:44 -0300 Subject: [PATCH] guillermo- path- tickets-change-department [skip ci] --- server/controllers/ticket.php | 2 + .../controllers/ticket/change-department.php | 40 +++++++++++++++++++ tests/ticket/change-department.rb | 21 ++++++++++ 3 files changed, 63 insertions(+) create mode 100644 server/controllers/ticket/change-department.php create mode 100644 tests/ticket/change-department.rb diff --git a/server/controllers/ticket.php b/server/controllers/ticket.php index c7908497..89296842 100644 --- a/server/controllers/ticket.php +++ b/server/controllers/ticket.php @@ -6,6 +6,7 @@ include 'ticket/add-custom-response.php'; include 'ticket/delete-custom-response.php'; include 'ticket/edit-custom-response.php'; include 'ticket/get-custom-responses.php'; +include 'ticket/change-department.php'; $ticketControllers = new ControllerGroup(); $ticketControllers->setGroupPath('/ticket'); @@ -17,5 +18,6 @@ $ticketControllers->addController(new AddCustomResponseController); $ticketControllers->addController(new DeleteCustomResponseController); $ticketControllers->addController(new EditCustomResponseController); $ticketControllers->addController(new GetCustomResponsesController); +$ticketControllers->addController(new ChangeDepartmentController); $ticketControllers->finalize(); \ No newline at end of file diff --git a/server/controllers/ticket/change-department.php b/server/controllers/ticket/change-department.php new file mode 100644 index 00000000..b291e8a7 --- /dev/null +++ b/server/controllers/ticket/change-department.php @@ -0,0 +1,40 @@ + 'staff_1', + 'requestData' => [ + 'ticketNumber' => [ + 'validation' => DataValidator::validTicketNumber(), + 'error' => ERRORS::INVALID_TICKET + ], + 'departmentId' => [ + 'validation' => DataValidator::dataStoreId('department'), + 'error' => ERRORS::INVALID_DEPARTMENT + ] + ] + ]; + } + + public function handler() { + $ticketNumber = Controller::request('ticketNumber'); + $departmentId = Controller::request('departmentId'); + $ticket = Ticket::getByTicketNumber($ticketNumber); + $department = Department::getDataStore($departmentId); + $user = Controller::getLoggedUser(); + + if($ticket->owner && $ticket->owner->id !== $user->id){ + Response::respondError(ERRORS::NO_PERMISSION); + return; + } + + $ticket->department = $department; + $ticket->store(); + Response::respondSuccess(); + } +} \ No newline at end of file diff --git a/tests/ticket/change-department.rb b/tests/ticket/change-department.rb new file mode 100644 index 00000000..ca003236 --- /dev/null +++ b/tests/ticket/change-department.rb @@ -0,0 +1,21 @@ +describe '/ticket/change-department' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + + #TODO: Create tests + + it 'should change department if everything is okey' do + + result = request('/ticket/change-department', { + ticketNumber:1, + departmentId:2, + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + + (result['status']).should.equal('success') + + ticket = $database.getRow('ticket', 1 , 'id') + (ticket['department']).should.equal('2') + end +end \ No newline at end of file