/** * Delete a schedule (throw to queue) * * @return Response */ public function delete($org_id = null, $cal_id = null, $id = null) { // $schedule = \App\Models\Schedule::id($id)->calendarid($cal_id)->with(['calendar', 'calendar.calendars'])->first(); if (!$schedule) { return new JSend('error', (array) Input::all(), 'Jadwal tidak ditemukan.'); } $errors = new MessageBag(); DB::beginTransaction(); //1. store schedule of calendar to queue $schedule = $schedule->toArray(); //1a. Validate Basic schedule Parameter $parameter = $schedule; unset($parameter['calendar']); $total = \App\Models\Work::calendarid($cal_id)->count(); $queue = new \App\Models\Queue(); $queue->fill(['process_name' => 'hr:schedules', 'process_option' => 'delete', 'parameter' => json_encode($parameter), 'total_process' => $total, 'task_per_process' => 1, 'process_number' => 0, 'total_task' => $total, 'message' => 'Initial Commit']); if (!$queue->save()) { $errors->add('Schedule', $queue->getError()); } //End of validate schedule //2. store schedule of calendars to queue if (!$errors->count() && isset($schedule['calendar']['calendars']) && is_array($schedule['calendar']['calendars'])) { foreach ($schedule['calendar']['calendars'] as $key => $value) { $cals_data = \App\Models\Calendar::id($value['id'])->calendarid($cal_id)->first(); if (!$cals_data) { $errors->add('Calendar', 'Tidak ada kalender ' . $value['name']); } if (!$errors->count()) { $total = \App\Models\Work::calendarid($value['id'])->count(); $parameter['calendar_id'] = $value['id']; $queue = new \App\Models\Queue(); $queue->fill(['process_name' => 'hr:schedules', 'process_option' => 'delete', 'parameter' => json_encode($parameter), 'total_process' => $total, 'task_per_process' => 1, 'process_number' => 0, 'total_task' => $total, 'message' => 'Initial Commit']); if (!$queue->save()) { $errors->add('Schedule', $queue->getError()); } } } } //End of validate calendar schedule if ($errors->count()) { DB::rollback(); return new JSend('error', (array) Input::all(), $errors); } DB::commit(); return new JSend('success', (array) $schedule); }
/** * delete schedule and update for persons * * @return void **/ public function delete($id) { $queue = new \App\Models\Queue(); $pending = $queue->find($id); $parameters = json_decode($pending->parameter, true); $messages = json_decode($pending->message, true); $errors = new MessageBag(); $schedule_data = \App\Models\Schedule::id($parameters['id'])->first(); if (!$schedule_data) { $errors->add('Batch', 'Tidak ada schedule.'); } elseif (!$schedule_data->delete()) { $errors->add('Batch', $schedule_data->getError()); } if (!$errors->count()) { $pnumber = $pending->total_process; $messages['message'][$pnumber] = 'Sukses Menghapus Jadwal ' . (isset($schedule_data['calendar']['name']) ? $schedule_data['calendar']['name'] : ''); $pending->fill(['process_number' => $pnumber, 'message' => 'Sukses']); } else { $pnumber = $pending->total_process; $messages['message'][$pnumber] = 'Gagal Menghapus Jadwal ' . (isset($schedule_data['calendar']['name']) ? $schedule_data['calendar']['name'] : ''); $messages['errors'][$pnumber] = $errors; $pending->fill(['process_number' => $pnumber, 'message' => 'Sukses']); } $pending->save(); return true; }