Helpdesk da PluGzOne, baseado no osTicket
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

130 lines
4.3 KiB

<?php
require_once(INCLUDE_DIR . 'class.schedule.php');
class ScheduleAjaxAPI extends AjaxController {
function add($sid=0) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
if ($sid && !($schedule = Schedule::lookup($sid)))
Http::response(404, 'No such schedule');
elseif ($_POST['sid'])
$schedule = Schedule::lookup($_POST['sid']);
$action = '#schedule/add';
$errors = array();
$form = Schedule::basicForm($_POST ?: ($schedule ? array(
'type' => $schedule->getType(),
'timezone' => $schedule->timezone,
'description' => 'Copy of '.$schedule->getName()
) : null));
if ($_POST && $form->isValid()) {
$data = $form->getClean();
if (Schedule::getIdByName($data['name'])) {
$form->getField('name')->addError(
__('Name already in use'));
} elseif ($schedule && strcasecmp($schedule->getType(),
$data['type'])) {
$errors['sid'] = sprintf(
__('Type must be of %s to clone this Schedule'),
$schedule->getTypeDesc());
} else {
$vars = array_intersect_key($data, array_flip(['name',
'timezone', 'description']));
$s = Schedule::create($vars);
$s->setFlag(Schedule::FLAG_BIZHRS, ($data['type'] ==
'bizhrs'));
if ($s->save()) {
if ($schedule) $s->cloneEntries($schedule);
Http::response(201, $s->getId());
}
}
}
include STAFFINC_DIR.'templates/schedule-add.tmpl.php';
}
function cloneSchedule($id) {
return $this->add($id);
}
function addEntry($id) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
elseif (!($schedule = Schedule::lookup($id)))
Http::response(404, 'No such schedule');
$form = $schedule->getEntryForm($_POST ?: null);
$errors = array();
if ($_POST && $form->isValid()) {
if (($entry = $schedule->addEntry($form, $errors)))
Http::response(201, $entry->getId());
foreach ($errors as $k => $error) {
if (($f=$form->getField($k)))
$f->addError($error);
}
}
include STAFFINC_DIR . 'templates/schedule-entry.tmpl.php';
}
function updateEntry($sid, $id) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
if (!($entry = ScheduleEntry::lookup($id))
|| !($schedule=$entry->getSchedule())
|| $schedule->getId() != $sid)
Http::response(404, 'Unknown Entry');
$form = $entry->getForm($_POST ?: null);
$errors = array();
if ($_POST && $entry->update($form, $errors))
Http::response(201, $entry->getId());
foreach ($errors as $k => $error) {
if (($f=$form->getField($k)))
$f->addError($error);
}
include STAFFINC_DIR . 'templates/schedule-entry.tmpl.php';
}
function diagnostic($id) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
elseif (!($schedule = BusinessHoursSchedule::lookup($id)))
Http::response(404, 'No such schedule');
$form = $schedule->getDiagnosticForm($_POST ?: null);
if ($_POST) $form->isValid();
include STAFFINC_DIR . 'templates/schedule-diagnostic.tmpl.php';
}
function deleteEntries($id) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
if (!($schedule = Schedule::lookup($id)))
Http::response(404, 'Unknown Schedule');
$count = 0;
if (isset($_POST['ids']) && is_array($_POST['ids']))
$count = $schedule->entries
->filter(array('id__in' => array_values($_POST['ids'])))
->delete();
Http::response(200, $this->encode(array('success' => $count)));
}
}
?>