Cara membuat Activity log

pertama tama kita buat migrations sama models nya 

php artisan make:model ActivityLog -m

Migration

<?php

use Illuminate\Support\Facades\Schema;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreateActivityLogTable extends Migration

{

    public function up()

    {

        Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {

            $table->bigIncrements('id');

            $table->string('log_name')->nullable();

            $table->text('description');

            $table->nullableMorphs('subject', 'subject');

            $table->nullableMorphs('causer', 'causer');

            $table->json('properties')->nullable();

            $table->timestamps();

            $table->index('log_name');

        });

    }

    public function down()

    {

        Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));

    }

}

Models

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class ActivityLog extends Model

{

    use HasFactory;

    protected $table = 'activity_log';

    public function user()

    {

        return $this->belongsTo(User::class, 'causer_id');

    }

}
Lalu kita buat Controller nya LogActivityController
php artisan make:controller LogActivityController

<?php

namespace App\Http\Controllers;

use App\Models\ActivityLog;

use Illuminate\Http\Request;

use Yajra\DataTables\DataTables;

use Illuminate\Support\Carbon;

class LogActivityController extends Controller

{

    public function index(Request $request)

    {

        if (\Auth::user()->isAbleTo('manage-log-activity')) {

            if ($request->ajax()) {

                $log = ActivityLog::with('user')->select();

                return DataTables::of($log)

                    ->editColumn('created_at', function ($log) {

                        return Carbon::parse($log->created_at)->diffForHumans();

                    })

                    ->make(true);

            }

            return view('log-pengguna.index');

        } else {

            return redirect()->back()->with('error', __('Permission denied.'));

        }

    }

}
Kita buat Route 
Route::prefix('log-activity')->group(function () {

        Route::controller(LogActivityController::class)->group(function () {

            Route::get('/', 'index')->name('log-activity.index');

        });

    });

Lalu kita buat view nya nama Fordernya log-pengguna dan file nya bernama index.blade.php

@extends('layouts.app')

@section('page-title')

{{__('Log Pengguna')}}

@endsection

@section('content')

<div class="content-header sty-one">

    <h1 class="text-black">Management Activity Log</h1>

    <ol class="breadcrumb">

        <li><a href="#">Module</a></li>

        <li class="sub-bread"><i class="fa fa-angle-right"></i> Log Activity</li>

    </ol>

</div>

<!-- Main activity log -->

<div class="content">

    <div class="info-box">

        <div class="teble-responsive">

            <table id="log" class="table table-bordered table-striped">

                <thead class="bg-primary text-white">

                    <tr>

                        <th style="width: 5%; color: #fff">No</th>

                        <th style="color: #fff">Nama</th>

                        <th style="color: #fff">Aktivitas</th>

                        <th style="color: #fff">Created</th>

                    </tr>

                </thead>

                <tbody>

                </tbody>

            </table>

        </div>

    </div>

</div>

@endsection

@section('script')

<script type="text/javascript">

    $(document).ready(function(){

        let i = 0;

        $('#log').DataTable({

            processing: true,

            serverSide: true,

            ajax: '{{ route('log-activity.index')}}',

            columns: [

                    { data: 'id', name: 'id' },

                    { data: 'user.name', name: 'user.name' },

                    { data: 'description', name: 'description' },

                    { data: 'created_at', name: 'created_at' },

                ],

            order: [[ 0, 'desc' ]],

            "scrollX": true

        });

    })

</script>

@endsection
kita buat permisision
// LogActivity

        $moduleLogActivity = Module::create([

            'name' => 'Management LogActivity'

        ]);

        $permissionLogActivity = [

                [

                    'name' => 'manage-log-activity',

                    'display_name' => 'Manage LogActivity',

                    'description' => 'Bisa Memanage LogActivity'

                ],

            ];

        foreach ($permissionLogActivity as $key) {

            Permission::create([

                'name' => $key['name'],

                'display_name' => $key['display_name'],

                'description' => $key['description'],

                'module_id' => $moduleLogActivity->id

            ]);

        }
Dan kita buat User Admin
'manage-log-activity'
dan kita buat sidebar nya
@permission('manage-log-activity')

                <li class="{{ request()->is('log-activity*') ? 'active' : '' }}">

                    <a href="{{ route('log-activity.index') }}"> <i class="fa fa-sitemap"></i> Activity Log</a>

                </li>

            @endpermission
Sedudah gitu kita lakun :php artisan migrate:refresh --seed dan php artisan optimize dan hasil nya seperti ini.

ketika kalian menambah kan lis di yang lain akan tampil di sini.

 

Related Articles

Comments