add reason in corporate, plan, service

This commit is contained in:
2023-06-05 09:01:43 +07:00
parent 4fb2bab64e
commit 4cc2ae24b8
34 changed files with 2037 additions and 87 deletions

29
app/Models/AuditTrail.php Normal file
View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AuditTrail extends Model
{
use HasFactory;
protected $fillable = [
'model',
'model_id',
'action',
'old_values',
'new_values',
'user_id',
];
protected $casts = [
'old_values' => 'json',
'new_values' => 'json',
];
public function user()
{
return $this->belongsTo(User::class);
}
}

View File

@@ -1,7 +1,7 @@
<?php
namespace App\Models;
use Altek\Accountant\Contracts\Recordable;
use App\Traits\Blameable;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -17,6 +17,7 @@ class Corporate extends Model
'parent_id',
'code',
'name',
'reason',
'welcome_message',
'help_text',
'active',

View File

@@ -19,6 +19,7 @@ class CorporatePlan extends Model
'name',
'description',
'active',
'reason'
];
public function corporate()

View File

@@ -15,6 +15,7 @@ class CorporateService extends Model
'corporate_id',
'service_code',
'status',
'reason'
];
protected $hidden = [

View File

@@ -13,6 +13,7 @@ class Service extends Model
'code',
'name',
'description',
'reason',
];
public function corporateService()

View File

@@ -6,6 +6,11 @@ use App\Rules\NikRule;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;
use App\Models\Corporate;
use App\Models\CorporateService;
use App\Models\CorporatePlan;
use App\Models\AuditTrail;
use Illuminate\Support\Facades\Auth;
use Str;
class AppServiceProvider extends ServiceProvider
@@ -32,5 +37,58 @@ class AppServiceProvider extends ServiceProvider
Str::macro('initials', fn($value, $sep = ' ', $glue = '') => trim(collect(explode($sep, $value))->map(function ($segment) {
return $segment[0] ?? '';
})->join($glue)));
// Menambahkan event listener untuk jejak audit pada model yang ingin di-audit
// Corporate::created(function ($model) {
// $this->logAuditTrail($model, 'created');
// });
Corporate::updated(function ($model) {
$this->logAuditTrail($model, 'updated');
});
Corporate::deleted(function ($model) {
$this->logAuditTrail($model, 'deleted');
});
// Corporate Service
CorporateService::updated(function ($model) {
$this->logAuditTrail($model, 'updated');
});
CorporateService::deleted(function ($model) {
$this->logAuditTrail($model, 'deleted');
});
// Corporate Plans
CorporatePlan::updated(function ($model) {
$this->logAuditTrail($model, 'updated');
});
CorporatePlan::deleted(function ($model) {
$this->logAuditTrail($model, 'deleted');
});
}
private function logAuditTrail($model, $action)
{
// Membuat jejak audit baru
$auditTrail = new AuditTrail([
'model' => get_class($model),
'model_id' => $model->getKey(),
'action' => $action,
'old_values' => json_encode($model->getOriginal()),
'new_values' => json_encode($model->getAttributes()),
'user_id' => Auth::id(),
]);
// Simpan jejak audit
$auditTrail->save();
}
}