This commit is contained in:
Tony Murray
2020-04-10 21:19:53 -05:00
parent 0df9872188
commit 6b166cd13a
4 changed files with 27 additions and 42 deletions

View File

@@ -100,7 +100,8 @@ class AlertSchedule extends Model
}
public function getEndRecurringDtAttribute() {
return $this->end->toDateString();
$end = $this->end;
return $end->year == '9000' ? null : $end->toDateString();
}
public function getEndRecurringHrAttribute() {

View File

@@ -114,10 +114,17 @@ if ($sub_type == 'new-maintenance') {
if (empty($message)) {
$alert_schedule = \App\Models\AlertSchedule::findOrNew($schedule_id);
$alert_schedule->title = $title;
$alert_schedule->recurring = $recurring;
$alert_schedule->start = Carbon::parse($recurring ? "$start_recurring_dt $start_recurring_hr": $start)->tz('UTC');
$alert_schedule->end = Carbon::parse($recurring ? "$end_recurring_dt $start_recurring_hr" : $end)->tz('UTC');
$alert_schedule->notes = $notes;
$alert_schedule->recurring = $recurring;
$alert_schedule->start = $start;
$alert_schedule->end = $end;
if ($recurring) {
$alert_schedule->start_recurring_dt = $start_recurring_dt;
$alert_schedule->start_recurring_hr = $start_recurring_hr;
$alert_schedule->end_recurring_dt = $end_recurring_dt;
$alert_schedule->end_recurring_hr = $end_recurring_hr;
}
$alert_schedule->save();
if ($alert_schedule->schedule_id > 0) {
@@ -173,7 +180,7 @@ if ($sub_type == 'new-maintenance') {
);
} elseif ($sub_type == 'parse-maintenance') {
$schedule_id = mres($_POST['schedule_id']);
$schedule = dbFetchRow('SELECT * FROM `alert_schedule` WHERE `schedule_id`=?', array($schedule_id));
$alert_schedule = \App\Models\AlertSchedule::findOrFail($schedule_id);
$items = [];
foreach (dbFetchRows('SELECT `alert_schedulable_type`, `alert_schedulable_id` FROM `alert_schedulables` WHERE `schedule_id`=?', [$schedule_id]) as $target) {
$id = $target['alert_schedulable_id'];
@@ -192,19 +199,9 @@ if ($sub_type == 'new-maintenance') {
];
}
$response = array(
'start' => $schedule['start'],
'end' => $schedule['end'],
'title' => $schedule['title'],
'notes' => $schedule['notes'],
'recurring' => $schedule['recurring'],
'start_recurring_dt' => ($schedule['start_recurring_dt'] != '0000-00-00' ? $schedule['start_recurring_dt']: '1970-01-02 00:00:01'),
'end_recurring_dt' => ($schedule['end_recurring_dt']!= '0000-00-00' ? $schedule['end_recurring_dt'] : '1970-01-02 00:00:01'),
'start_recurring_hr' => substr($schedule['start_recurring_hr'], 0, 5),
'end_recurring_hr' => substr($schedule['end_recurring_hr'], 0, 5),
'recurring_day' => $schedule['recurring_day'],
'targets' => $items,
);
$response = $alert_schedule->toArray();
$response['recurring_day'] = $alert_schedule->getAttribute('recurring_day');
$response['targets'] = $items;
} elseif ($sub_type == 'del-maintenance') {
$schedule_id = mres($_POST['del_schedule_id']);
dbDelete('alert_schedule', '`schedule_id`=?', array($schedule_id));

View File

@@ -155,6 +155,7 @@ $('#schedule-maintenance').on('show.bs.modal', function (event) {
data: { type: "schedule-maintenance", sub_type: "parse-maintenance", schedule_id: schedule_id },
dataType: "json",
success: function(output) {
console.log(output);
var maps = $('#maps');
var selected = [];
$.each ( output['targets'], function( key, item ) {

View File

@@ -60,35 +60,21 @@ if (isset($sort) && !empty($sort)) {
$query->orderBy('start')->orderBy('title');
}
$now = Carbon::now(config('app.timezone'));
$days = [
'from' => ['1', '2', '3', '4', '5', '6', '7'],
'to' => ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
];
$now = Carbon::now();
$schedules = $query->get()->map(function ($schedule) use ($now, $days) {
$start = Carbon::parse($schedule->start, 'UTC')->tz(config('app.timezone'));
$end = Carbon::parse($schedule->end, 'UTC')->tz(config('app.timezone'));
$status = $end < $now ? 1 : 0; // set or lapsed
$schedules = $query->get()->map(function ($schedule) use ($now) {
/** @var \App\Models\AlertSchedule $schedule */
$status = $schedule->start < $now ? 1 : 0; // set or lapsed
// check if current
if ($now->between($start, $end) && (!$schedule->recurring || $now->between($start->toTimeString(), $end->toTimeString()))) {
if ($now->between($schedule->start, $schedule->end) && (!$schedule->recurring || $now->between($schedule->start_recurring_hr, $schedule->end_recurring_hr))) {
$status = 2;
}
return [
'title' => $schedule->title,
'recurring' => $schedule->recurring ? 'yes' : 'no',
'start' => $schedule->recurring ? '' : $start->toDateTimeString('minute'),
'end' => $schedule->recurring ? '' : $end->toDateTimeString('minute'),
'start_recurring_dt' => $schedule->recurring == 0 ? '' : $start->toDateString(),
'end_recurring_dt' => $schedule->recurring == 0 || $end->year == 9000 ? '' : $end->toDateString(),
'start_recurring_hr' => $schedule->recurring == 0 ? '' : $start->toTimeString('minute'),
'end_recurring_hr' => $schedule->recurring == 0 ? '' : $end->toTimeString('minute'),
'recurring_day' => $schedule->recurring == 0 ? '' : str_replace($days['from'], $days['to'], $schedule->recurring_day),
'id' => $schedule->schedule_id,
'status' => $status,
];
$data = $schedule->toArray();
$data['recurring_day'] = implode(',', $data['recurring_day']);
$data['status'] = $status;
return $data;
});
echo json_encode([