/** * 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; } } } }