timezone(env('APP_TIMEZONE')) ->toDateTimeString(); } public static function boot() { parent::boot(); static::created(function($data) { $activity = Activity::find($data->activity_id); $assignedMaterial = AssignMaterial::find($data->assign_material_id); $biayaActual = $activity->biaya_actual + floatval($assignedMaterial->budget) * floatval($data->qty); $dataPlan = AssignMaterial::where('activity_id', $activity->id)->get(); if($dataPlan[0]->status_activity == 'done'){ $percentage = 100; } else { $totalPlan = $dataPlan->sum('qty_planning'); $totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty"); $percentage = ($totalVolumeActual * 100) / $totalPlan; $percentage = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage; } $activity->update([ "persentase_progress" => $percentage, "biaya_actual" => $biayaActual, ]); $activity->save(); }); static::deleted(function($data) { $activity = Activity::find($data->activity_id); $assignedMaterial = AssignMaterial::find($data->assign_material_id); $activity->biaya_actual -= floatval($assignedMaterial->budget) * floatval($data->qty); $activity->actual_start = null; $activity->actual_end = null; $dataPlan = AssignMaterial::where('activity_id', $activity->id)->get(); $totalPlan = $dataPlan->sum('qty_planning'); $totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty"); $percentage = ($totalVolumeActual * 100) / $totalPlan; $activity->persentase_progress = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage; $activity->save(); }); } }