Guillermo - stats architecture [skip ci]
This commit is contained in:
parent
149a18c52e
commit
845939f089
|
@ -9,6 +9,7 @@ require_once 'system/get-logs.php';
|
||||||
require_once 'system/get-mail-templates.php';
|
require_once 'system/get-mail-templates.php';
|
||||||
require_once 'system/edit-mail-template.php';
|
require_once 'system/edit-mail-template.php';
|
||||||
require_once 'system/recover-mail-template.php';
|
require_once 'system/recover-mail-template.php';
|
||||||
|
require_once 'system/get-stats.php';
|
||||||
|
|
||||||
$systemControllerGroup = new ControllerGroup();
|
$systemControllerGroup = new ControllerGroup();
|
||||||
$systemControllerGroup->setGroupPath('/system');
|
$systemControllerGroup->setGroupPath('/system');
|
||||||
|
@ -23,5 +24,6 @@ $systemControllerGroup->addController(new GetLogsController);
|
||||||
$systemControllerGroup->addController(new GetMailTemplatesController);
|
$systemControllerGroup->addController(new GetMailTemplatesController);
|
||||||
$systemControllerGroup->addController(new EditMailTemplateController);
|
$systemControllerGroup->addController(new EditMailTemplateController);
|
||||||
$systemControllerGroup->addController(new RecoverMailTemplateController);
|
$systemControllerGroup->addController(new RecoverMailTemplateController);
|
||||||
|
$systemControllerGroup->addController(new GetStatsController);
|
||||||
|
|
||||||
$systemControllerGroup->finalize();
|
$systemControllerGroup->finalize();
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
use Respect\Validation\Validator as DataValidator;
|
|
||||||
|
|
||||||
class EditSettingsController extends Controller {
|
class EditSettingsController extends Controller {
|
||||||
const PATH = '/edit-settings';
|
const PATH = '/edit-settings';
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
class GetStatsController extends Controller {
|
||||||
|
const PATH = '/get-stats';
|
||||||
|
|
||||||
|
public function validations() {
|
||||||
|
return [
|
||||||
|
'permission' => 'staff_1',
|
||||||
|
'requestData' => []
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handler() {
|
||||||
|
$begin = new DateTime(Setting::getSetting('last-stat-day')->value);
|
||||||
|
$end = new DateTime(Date::getCurrentDate());
|
||||||
|
|
||||||
|
$interval = new DateInterval('P1D');
|
||||||
|
$dateRange = new DatePeriod($begin, $interval ,$end);
|
||||||
|
|
||||||
|
foreach($dateRange as $date){
|
||||||
|
$numberOfTickets = Log::count('type=? AND date LIKE ?',['CREATE_TICKET', $date->format('Ymd') . '%']);
|
||||||
|
$stat = new Stat();
|
||||||
|
|
||||||
|
$stat->setProperties([
|
||||||
|
'date' => $date->format('Ymd'),
|
||||||
|
'type' => 'CREATE_TICKET',
|
||||||
|
'general' => 1,
|
||||||
|
'value' => $numberOfTickets,
|
||||||
|
]);
|
||||||
|
$stat->store();
|
||||||
|
}
|
||||||
|
|
||||||
|
Response::respondSuccess();
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,7 +40,8 @@ class InitSettingsController extends Controller {
|
||||||
'allow-attachments' => 0,
|
'allow-attachments' => 0,
|
||||||
'max-size' => 0,
|
'max-size' => 0,
|
||||||
'title' => 'Support Center',
|
'title' => 'Support Center',
|
||||||
'url' => 'http://www.opensupports.com/support'
|
'url' => 'http://www.opensupports.com/support',
|
||||||
|
'last-stat-day' => '20170101'//TODO: get current date
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,8 @@ class Log extends DataStore {
|
||||||
'type',
|
'type',
|
||||||
'authorUser',
|
'authorUser',
|
||||||
'authorStaff',
|
'authorStaff',
|
||||||
'to'
|
'to',
|
||||||
|
'date'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +23,8 @@ class Log extends DataStore {
|
||||||
|
|
||||||
$log->setProperties(array(
|
$log->setProperties(array(
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'to' => $to
|
'to' => $to,
|
||||||
|
'date' => Date::getCurrentDate()
|
||||||
));
|
));
|
||||||
|
|
||||||
if($author instanceof User) {
|
if($author instanceof User) {
|
||||||
|
@ -44,7 +46,8 @@ class Log extends DataStore {
|
||||||
'name' => $author->name,
|
'name' => $author->name,
|
||||||
'id' => $author->id,
|
'id' => $author->id,
|
||||||
'staff' => $author instanceof Staff
|
'staff' => $author instanceof Staff
|
||||||
]
|
],
|
||||||
|
'date' => $this->date
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,7 +18,8 @@ class Staff extends DataStore {
|
||||||
'level',
|
'level',
|
||||||
'sharedDepartmentList',
|
'sharedDepartmentList',
|
||||||
'sharedTicketList',
|
'sharedTicketList',
|
||||||
'lastLogin'
|
'lastLogin',
|
||||||
|
'sharedStatList'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
class Stat extends DataStore {
|
||||||
|
const TABLE = 'stat';
|
||||||
|
|
||||||
|
public static function getProps() {
|
||||||
|
return array (
|
||||||
|
'date',
|
||||||
|
'type',
|
||||||
|
'general',
|
||||||
|
'value'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefaultProps() {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue