opensupports/server/controllers/ticket/re-open.php

83 lines
2.0 KiB
PHP
Raw Normal View History

<?php
use Respect\Validation\Validator as DataValidator;
2017-04-17 04:59:11 +02:00
/**
* @api {post} /ticket/re-open Reopen ticket
2020-02-05 21:15:32 +01:00
* @apiVersion 4.6.1
2017-04-17 04:59:11 +02:00
*
* @apiName Reopen ticket
2017-04-17 04:59:11 +02:00
*
* @apiGroup Ticket
*
* @apiDescription This path reopens a closed ticket.
2017-04-17 04:59:11 +02:00
*
* @apiPermission user
*
2017-04-21 08:09:24 +02:00
* @apiParam {String} ticketNumber Number of the ticket to be reopened.
2017-04-17 04:59:11 +02:00
*
2017-04-21 08:09:24 +02:00
* @apiUse NO_PERMISSION
* @apiUse INVALID_TICKET
2018-07-19 02:38:12 +02:00
*
2017-04-21 08:09:24 +02:00
* @apiSuccess {Object} data Empty object
2017-04-17 04:59:11 +02:00
*
*/
class ReOpenController extends Controller {
const PATH = '/re-open';
const METHOD = 'POST';
private $ticket;
public function validations() {
return [
'permission' => 'user',
'requestData' => [
'ticketNumber' => [
'validation' => DataValidator::validTicketNumber(),
'error' => ERRORS::INVALID_TICKET
]
]
];
}
public function handler() {
$this->ticket = Ticket::getByTicketNumber(Controller::request('ticketNumber'));
2019-09-20 21:58:21 +02:00
$user = Controller::getLoggedUser();
2019-09-20 21:58:21 +02:00
if (!$user->canManageTicket($this->ticket)) throw new RequestException(ERRORS::NO_PERMISSION);
$this->markAsUnread();
$this->addReopenEvent();
$this->ticket->closed = false;
$this->ticket->store();
2016-12-29 21:25:45 +01:00
2017-01-05 22:01:56 +01:00
Log::createLog('RE_OPEN', $this->ticket->ticketNumber);
2016-12-29 21:25:45 +01:00
Response::respondSuccess();
}
private function markAsUnread() {
2016-10-21 21:12:17 +02:00
if(Controller::isStaffLogged()) {
$this->ticket->unread = true;
2016-10-21 21:12:17 +02:00
} else {
$this->ticket->unreadStaff = true;
2016-10-21 21:12:17 +02:00
}
}
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);
}
2018-07-19 02:38:12 +02:00
}