Ivan - Add events to backend [skip ci]
This commit is contained in:
parent
3dc9e6ca05
commit
0bed4bef45
|
@ -44,14 +44,19 @@ class CommentController extends Controller {
|
|||
}
|
||||
|
||||
private function storeComment() {
|
||||
$comment = new Comment();
|
||||
$comment = Ticketevent::getEvent(Ticketevent::COMMENT);
|
||||
$comment->setProperties(array(
|
||||
'content' => $this->content,
|
||||
'author' => Controller::getLoggedUser(),
|
||||
'date' => Date::getCurrentDate()
|
||||
));
|
||||
|
||||
$this->ticket->ownCommentList->add($comment);
|
||||
if(Controller::isStaffLogged()) {
|
||||
$comment->authorUser = Controller::getLoggedUser();
|
||||
} else {
|
||||
$comment->authorUser = Controller::getLoggedUser();
|
||||
}
|
||||
|
||||
$this->ticket->ownTicketeventList->add($comment);
|
||||
$this->ticket->store();
|
||||
}
|
||||
}
|
|
@ -15,4 +15,5 @@ class ERRORS {
|
|||
const INIT_SETTINGS_DONE = 'Settings already initialized';
|
||||
const INVALID_OLD_PASSWORD = 'Invalid old password';
|
||||
const INVALID_CAPTCHA = 'Invalid captcha';
|
||||
const INVALID_TICKET_EVENT = 'INVALID_TICKET_EVENT';
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ class Ticket extends DataStore {
|
|||
'closed',
|
||||
'author',
|
||||
'owner',
|
||||
'ownCommentList'
|
||||
'ownTicketeventList'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,7 @@ class Ticket extends DataStore {
|
|||
public function store() {
|
||||
parent::store();
|
||||
}
|
||||
|
||||
public function generateUniqueTicketNumber() {
|
||||
$ticketQuantity = Ticket::count('ticket');
|
||||
$minValue = 100000;
|
||||
|
@ -57,8 +58,6 @@ class Ticket extends DataStore {
|
|||
}
|
||||
|
||||
public function toArray() {
|
||||
$author = $this->author;
|
||||
|
||||
return [
|
||||
'ticketNumber' => $this->ticketNumber,
|
||||
'title' => $this->title,
|
||||
|
@ -74,7 +73,7 @@ class Ticket extends DataStore {
|
|||
'closed' => !!$this->closed,
|
||||
'author' => $this->authorToArray(),
|
||||
'owner' => $this->ownerToArray(),
|
||||
'comments' => $this->commentsToArray()
|
||||
'events' => $this->eventsToArray()
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -106,23 +105,31 @@ class Ticket extends DataStore {
|
|||
}
|
||||
}
|
||||
|
||||
public function commentsToArray() {
|
||||
$comments = [];
|
||||
public function eventsToArray() {
|
||||
$events = [];
|
||||
|
||||
foreach ($this->ownCommentList as $comment) {
|
||||
$comments[] = [
|
||||
'content'=> $comment->content,
|
||||
'author' => [
|
||||
'id'=> 15,
|
||||
'name' => $comment->author->name,
|
||||
'email' => $comment->author->email,
|
||||
'staff' => $comment->author->staff
|
||||
],
|
||||
'date'=> $comment->date,
|
||||
'file'=> $comment->file
|
||||
foreach ($this->ownTicketeventList as $ticketEvent) {
|
||||
$event = [
|
||||
'type' => $ticketEvent->type,
|
||||
'content'=> $ticketEvent->content,
|
||||
'author' => [],
|
||||
'date'=> $ticketEvent->date,
|
||||
'file'=> $ticketEvent->file
|
||||
];
|
||||
|
||||
$author = $ticketEvent->getAuthor();
|
||||
if(!$author->isNull()) {
|
||||
$event['author'] = [
|
||||
'id'=> $author->id,
|
||||
'name' => $author->name,
|
||||
'email' =>$author->email,
|
||||
'staff' => $author instanceof Staff
|
||||
];
|
||||
}
|
||||
|
||||
$events[] = $event;
|
||||
}
|
||||
|
||||
return $comments;
|
||||
return $events;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
class Ticketevent extends DataStore {
|
||||
const TABLE = 'ticketevent';
|
||||
|
||||
const COMMENT = 'COMMENT';
|
||||
const ASSIGN = 'ASSIGN';
|
||||
const UNASSIGN = 'UNASSIGN';
|
||||
const CLOSE = 'CLOSE';
|
||||
const REOPEN = 'REOPEN';
|
||||
const DEPARTMENT_CHANGED = 'DEPARTMENT_CHANGED';
|
||||
const PRIORITY_CHANGED = 'PRIORITY_CHANGED';
|
||||
|
||||
private static function getEventTypes() {
|
||||
return [
|
||||
'COMMENT',
|
||||
'UNASSIGN',
|
||||
'CLOSE',
|
||||
'REOPEN',
|
||||
'DEPARTMENT_CHANGED',
|
||||
'PRIORITY_CHANGED',
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEvent($type) {
|
||||
if (!in_array($type, Ticketevent::getEventTypes())) {
|
||||
return new NullDataStore();
|
||||
}
|
||||
|
||||
$ticketEvent = new Ticketevent();
|
||||
$ticketEvent->setProperties([
|
||||
'type' => $type
|
||||
]);
|
||||
|
||||
return $ticketEvent;
|
||||
}
|
||||
|
||||
public function getProps() {
|
||||
return [
|
||||
'type',
|
||||
'content',
|
||||
'file',
|
||||
'authorUser',
|
||||
'authorStaff',
|
||||
'date'
|
||||
];
|
||||
}
|
||||
|
||||
public function getAuthor() {
|
||||
if($this->authorUser) {
|
||||
return $this->authorUser;
|
||||
}
|
||||
|
||||
if($this->authorStaff) {
|
||||
return $this->authorStaff;
|
||||
}
|
||||
|
||||
return new NullDataStore();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue