예제 #1
0
 /**
  * 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);
 }