Beispiel #1
0
 /**
  * boot
  * observing model
  *
  */
 public static function boot()
 {
     parent::boot();
     FingerLog::observe(new FingerLogObserver());
 }
 /** 
  * observe FingerLog event deleting
  * 1. check if prev day
  * 2. delete FingerLogs and process FingerLogs
  * 3. act, accept or refuse
  * 
  * @param $model
  * @return bool
  */
 public function deleting($model)
 {
     //1. check if prev day
     if ($model->on->format('Y-m-d') <= Carbon::now()->format('Y-m-d')) {
         $model['errors'] = ['Tidak dapat menghapus FingerLog yang sudah lewat dari tanggal hari ini.'];
         return false;
     }
     //2. delete FingerLogs and process FingerLogs
     $FingerLogs = FingerLog::personid($model->person_id)->ondate([$model->on->startOfDay()->format('Y-m-d H:i:s'), $model->on->endOfDay()->format('Y-m-d H:i:s')])->get();
     if ($FingerLogs->count() && $FingerLogs->count() <= 1) {
         $processes = ProcessLog::personid($model->person_id)->ondate([$model->on->startOfDay()->format('Y-m-d H:i:s'), $model->on->endOfDay()->format('Y-m-d H:i:s')])->get();
         foreach ($processes as $key => $value) {
             if (!$value->delete()) {
                 $model['errors'] = $value->getError();
                 return false;
             }
         }
     }
 }