From 0a5d444186fb9dd354164b6c47071582c16fedbc Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 17 Jul 2018 02:04:00 -0300 Subject: [PATCH] Mark as unread if author is not making the change --- server/controllers/staff/assign-ticket.php | 2 +- server/controllers/staff/un-assign-ticket.php | 2 +- .../controllers/ticket/change-department.php | 2 +- server/controllers/ticket/change-priority.php | 10 +++----- server/controllers/ticket/close.php | 7 ++---- server/controllers/ticket/comment.php | 3 ++- tests/staff/get-new-tickets.rb | 2 +- tests/system/disable-user-system.rb | 2 +- tests/ticket/close.rb | 1 + tests/ticket/comment.rb | 25 +++++++++++++++++++ tests/ticket/create.rb | 20 +++++++++++++++ 11 files changed, 59 insertions(+), 17 deletions(-) diff --git a/server/controllers/staff/assign-ticket.php b/server/controllers/staff/assign-ticket.php index 93af3332..6343a769 100755 --- a/server/controllers/staff/assign-ticket.php +++ b/server/controllers/staff/assign-ticket.php @@ -59,7 +59,7 @@ class AssignStaffController extends Controller { } else { $this->user->sharedTicketList->add($this->ticket); $this->ticket->owner = $this->user; - $this->ticket->unread = true; + $this->ticket->unread = !$this->ticket->isAuthor($this->user); $event = Ticketevent::getEvent(Ticketevent::ASSIGN); $event->setProperties(array( 'authorStaff' => Controller::getLoggedUser(), diff --git a/server/controllers/staff/un-assign-ticket.php b/server/controllers/staff/un-assign-ticket.php index ac1ee06c..95a1b1e9 100755 --- a/server/controllers/staff/un-assign-ticket.php +++ b/server/controllers/staff/un-assign-ticket.php @@ -50,7 +50,7 @@ class UnAssignStaffController extends Controller { $owner->store(); $ticket->owner = null; - $ticket->unread = true; + $ticket->unread = !$ticket->isAuthor($user); $event = Ticketevent::getEvent(Ticketevent::UN_ASSIGN); $event->setProperties(array( diff --git a/server/controllers/ticket/change-department.php b/server/controllers/ticket/change-department.php index 18f83109..7c327466 100755 --- a/server/controllers/ticket/change-department.php +++ b/server/controllers/ticket/change-department.php @@ -64,7 +64,7 @@ class ChangeDepartmentController extends Controller { )); $ticket->addEvent($event); $ticket->department = $department; - $ticket->unread = true; + $ticket->unread = !$ticket->isAuthor($user); $ticket->store(); if(!$user->sharedDepartmentList->includesId($department->id)) { diff --git a/server/controllers/ticket/change-priority.php b/server/controllers/ticket/change-priority.php index cbd2dbc9..3ab57d62 100755 --- a/server/controllers/ticket/change-priority.php +++ b/server/controllers/ticket/change-priority.php @@ -18,9 +18,9 @@ use Respect\Validation\Validator as DataValidator; * * @apiUse NO_PERMISSION * @apiUse INVALID_TICKET - * @apiUse INVALID_PRIORITY + * @apiUse INVALID_PRIORITY * - * @apiSuccess {Object} data Empty object + * @apiSuccess {Object} data Empty object * */ @@ -52,10 +52,10 @@ class ChangePriorityController extends Controller { if($ticket->owner && $user->id === $ticket->owner->id) { $ticket->priority = $priority; - $ticket->unread = true; + $ticket->unread = !$ticket->isAuthor($user); $event = Ticketevent::getEvent(Ticketevent::PRIORITY_CHANGED); $event->setProperties(array( - 'authorStaff' => Controller::getLoggedUser(), + 'authorStaff' => Controller::getLoggedUser(), 'content' => $ticket->priority, 'date' => Date::getCurrentDate() )); @@ -70,5 +70,3 @@ class ChangePriorityController extends Controller { } } - - diff --git a/server/controllers/ticket/close.php b/server/controllers/ticket/close.php index 5ba0331c..c65e5105 100755 --- a/server/controllers/ticket/close.php +++ b/server/controllers/ticket/close.php @@ -83,11 +83,8 @@ class CloseController extends Controller { } private function markAsUnread() { - if(Controller::isStaffLogged()) { - $this->ticket->unread = true; - } else { - $this->ticket->unreadStaff = true; - } + $this->ticket->unread = !$this->ticket->isAuthor(Controller::getLoggedUser()); + $this->ticket->unreadStaff = !$this->ticket->isOwner(Controller::getLoggedUser()); } private function addCloseEvent() { diff --git a/server/controllers/ticket/comment.php b/server/controllers/ticket/comment.php index 26e6d623..3c106f40 100755 --- a/server/controllers/ticket/comment.php +++ b/server/controllers/ticket/comment.php @@ -115,7 +115,8 @@ class CommentController extends Controller { )); if(Controller::isStaffLogged()) { - $this->ticket->unread = true; + $this->ticket->unread = !$this->ticket->isAuthor(Controller::getLoggedUser()); + $this->ticket->unreadStaff = !$this->ticket->isOwner(Controller::getLoggedUser()); $comment->authorStaff = Controller::getLoggedUser(); } else if(Controller::isUserSystemEnabled()) { $this->ticket->unreadStaff = true; diff --git a/tests/staff/get-new-tickets.rb b/tests/staff/get-new-tickets.rb index 1d7caa1f..be095a41 100644 --- a/tests/staff/get-new-tickets.rb +++ b/tests/staff/get-new-tickets.rb @@ -10,6 +10,6 @@ describe '/staff/get-new-tickets' do }) (result['status']).should.equal('success') - (result['data'].size).should.equal(9) + (result['data'].size).should.equal(10) end end diff --git a/tests/system/disable-user-system.rb b/tests/system/disable-user-system.rb index b43a28da..0e13120a 100644 --- a/tests/system/disable-user-system.rb +++ b/tests/system/disable-user-system.rb @@ -92,7 +92,7 @@ describe'system/disable-user-system' do numberOftickets= $database.query("SELECT * FROM ticket WHERE author_email IS NULL AND author_name IS NULL AND author_id IS NOT NULL" ) - (numberOftickets.num_rows).should.equal(39) + (numberOftickets.num_rows).should.equal(40) end diff --git a/tests/ticket/close.rb b/tests/ticket/close.rb index f010ac7d..e8ea1a0f 100644 --- a/tests/ticket/close.rb +++ b/tests/ticket/close.rb @@ -34,6 +34,7 @@ describe '/ticket/close' do csrf_token: $csrf_token }) + puts result (result['status']).should.equal('success') ticket = $database.getRow('ticket', 1 , 'id') diff --git a/tests/ticket/comment.rb b/tests/ticket/comment.rb index fe1dfb97..d522198f 100644 --- a/tests/ticket/comment.rb +++ b/tests/ticket/comment.rb @@ -78,6 +78,31 @@ describe '/ticket/comment/' do (lastLog['type']).should.equal('COMMENT') end + it 'should add comment to ticket created by staff' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + result = request('/ticket/comment', { + content: 'some comment content', + ticketNumber: $ticketNumberByStaff, + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + + (result['status']).should.equal('success') + + ticket = $database.getRow('ticket', $ticketNumberByStaff, 'ticket_number') + comment = $database.getRow('ticketevent', ticket['id'], 'ticket_id') + (comment['content']).should.equal('some comment content') + (comment['type']).should.equal('COMMENT') + (comment['author_staff_id']).should.equal($csrf_userid) + (ticket['unread_staff']).should.equal('1') + + lastLog = $database.getLastRow('log') + (lastLog['type']).should.equal('COMMENT') + + request('/user/logout') + end + it 'should fail if user is not the author nor owner' do Scripts.createUser('no_commenter@comment.com', 'no_commenter', 'No Commenter') Scripts.login('no_commenter@comment.com', 'no_commenter') diff --git a/tests/ticket/create.rb b/tests/ticket/create.rb index 61054a29..8d090586 100644 --- a/tests/ticket/create.rb +++ b/tests/ticket/create.rb @@ -144,4 +144,24 @@ describe '/ticket/create' do (ticket2).should.equal((ticket0 - 100000 + 2 * ticket_number_gap) % 900000 + 100000) (ticket3).should.equal((ticket0 - 100000 + 3 * ticket_number_gap) % 900000 + 100000) end + + it 'should be able to create a ticket while being staff' do + request('/user/logout') + Scripts.login($staff[:email], $staff[:password], true) + result = request('/ticket/create', { + title: 'created by staff', + content: 'The staff created it', + departmentId: 1, + language: 'en', + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) + (result['status']).should.equal('success') + ticket = $database.getRow('ticket', result['data']['ticketNumber'], 'ticket_number') + (ticket['author_id']).should.equal(nil) + (ticket['author_staff_id']).should.equal('1') + + $ticketNumberByStaff = result['data']['ticketNumber'] + request('/user/logout') + end end