'user', 'requestData' => [ 'ticketNumber' => [ 'validation' => DataValidator::validTicketNumber(), 'error' => ERRORS::INVALID_TICKET ] ] ]; } public function handler() { $this->ticket = Ticket::getByTicketNumber(Controller::request('ticketNumber')); if($this->shouldDenyPermission()) { Response::respondError(ERRORS::NO_PERMISSION); return; } $this->markAsUnread(); $this->addReopenEvent(); $this->ticket->closed = false; $this->ticket->store(); Log::createLog('RE_OPEN', $this->ticket->ticketNumber); Response::respondSuccess(); } private function shouldDenyPermission() { $user = Controller::getLoggedUser(); return !( $this->ticket->isAuthor($user) || ( Controller::isStaffLogged() && $user->sharedDepartmentList->includesId($this->ticket->department->id) ) ); } private function markAsUnread() { if(Controller::isStaffLogged()) { $this->ticket->unread = true; } else { $this->ticket->unreadStaff = true; } } private function addReopenEvent() { $event = Ticketevent::getEvent(Ticketevent::RE_OPEN); $event->setProperties(array( 'date' => Date::getCurrentDate() )); if(Controller::isStaffLogged()) { $event->authorStaff = Controller::getLoggedUser(); } else { $event->authorUser = Controller::getLoggedUser(); } $this->ticket->addEvent($event); } }