/** * observe Lumen event saved * 1. check if prev day * 2. save into queue * 3. act, accept or refuse * * @param $model * @return bool */ public function saved($model) { //1. check if prev day $date_on = $model->on->startOfDay(); $date_today = Carbon::now()->startOfDay(); if ($date_today->diffInDays($date_on) >= 1 && $model->person()->count()) { //2. save into queue $on = $date_on->format('Y-m-d'); $idle_rule = new Policy(); $idle_rule_1 = $idle_rule->organisationid($model->person->organisation_id)->type('firstidle')->OnDate($on)->orderBy('started_at', 'desc')->first(); $idle_rule_2 = $idle_rule->organisationid($model->person->organisation_id)->type('secondidle')->OnDate($on)->orderBy('started_at', 'desc')->first(); $idle_rule_3 = $idle_rule->organisationid($model->person->organisation_id)->type('thirdidle')->OnDate($on)->orderBy('started_at', 'desc')->first(); $margin_bottom_idle = 900; $idle_1 = 3600; $idle_2 = 7200; if ($idle_rule_1) { $margin_bottom_idle = (int) $idle_rule_1->value; } if ($idle_rule_2) { $idle_1 = (int) $idle_rule_2->value; } if ($idle_rule_3) { $idle_2 = (int) $idle_rule_3->value; } $employee = new Employee(); $employee->workend = $date_on->format('Y-m-d H:i:s'); $employee = count($employee->organisationid($model->person->organisation_id)->get(['id'])); $parameter['margin_bottom_idle'] = $margin_bottom_idle; $parameter['idle_1'] = $idle_1; $parameter['idle_2'] = $idle_2; $parameter['on'] = $on; $parameter['organisation_id'] = $model->person->organisation_id; $check = Queue::where('parameter', json_encode($parameter))->where('process_name', 'hr:logobserver')->where('process_number', '0')->first(); if (!$check) { $queue = new Queue(); $queue->fill(['process_name' => 'hr:logobserver', 'parameter' => json_encode($parameter), 'total_process' => $employee, 'task_per_process' => 1, 'process_number' => 0, 'total_task' => $employee, 'message' => 'Initial Commit']); if (!$queue->save()) { $model['errors'] = $queue->getError(); return false; } else { return true; } } } return true; }
/** * absence log * * @return void * @author **/ public function generate() { Log::info('Running PointExpireQueue Generator command @' . date('Y-m-d H:i:s')); $clients = ClientTemplate::get(); foreach ($clients as $key => $value) { $points = PointLog::debit(true)->onactive([Carbon::parse(' + 1 month')->startOfDay()->format('Y-m-d H:i:s'), Carbon::parse(' + 1 month')->endOfDay()->format('Y-m-d H:i:s')])->haventgetcut(true)->get(); if (count($points) > 0) { $policies = new Store(); $policies = $policies->default(true)->get()->toArray(); $store = []; foreach ($policies as $key => $value2) { $store[$value2['type']] = $value2['value']; } $store['action'] = $store['url'] . '/product'; DB::beginTransaction(); $parameter['store'] = $store; $parameter['template'] = $value['located']; $parameter['on'] = Carbon::parse(' + 1 month')->format('Y-m-d H:i:s'); $queue = new Queue(); $queue->fill(['process_name' => 'point:expire', 'parameter' => json_encode($parameter), 'total_process' => count($points), 'task_per_process' => 1, 'process_number' => 0, 'total_task' => count($points), 'message' => 'Initial Commit']); if (!$queue->save()) { DB::rollback(); Log::error('Save queue on PointExpireQueue command ' . json_encode($queue->getError())); } else { DB::Commit(); } } } return true; }