Update Log aktivitas
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
@extends('layout.main')
|
||||
|
||||
@use('App\Services\Konfigurasi\FormatLogAktivitas', 'Format')
|
||||
@use('App\Models\Pertanian\Petani')
|
||||
@use('Illuminate\Support\Str')
|
||||
|
||||
@section('content')
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
<div class="card">
|
||||
<div class="card-header border-bottom">
|
||||
<h5 class="card-title mb-1">Log Aktivitas</h5>
|
||||
<small class="text-body-secondary">Jejak perubahan data, status petani, dan login pengguna.</small>
|
||||
</div>
|
||||
|
||||
{{-- Filter --}}
|
||||
<div class="card-body pt-4">
|
||||
<form method="GET" action="{{ route('log-aktivitas.index') }}" class="row g-3 align-items-end">
|
||||
<div class="col-md-2">
|
||||
<label class="form-label" for="jenis">Jenis</label>
|
||||
<select id="jenis" name="jenis" class="form-select form-select-sm">
|
||||
<option value="">Semua</option>
|
||||
@foreach ($jenis as $kunci => $j)
|
||||
<option value="{{ $kunci }}" @selected(request('jenis') === $kunci)>{{ $j['label'] }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label" for="dari">Dari Tanggal</label>
|
||||
<input type="date" id="dari" name="dari" value="{{ request('dari') }}"
|
||||
class="form-control form-control-sm @error('dari') is-invalid @enderror">
|
||||
@error('dari')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label" for="sampai">Sampai Tanggal</label>
|
||||
<input type="date" id="sampai" name="sampai" value="{{ request('sampai') }}"
|
||||
class="form-control form-control-sm @error('sampai') is-invalid @enderror">
|
||||
@error('sampai')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<label class="form-label" for="per_page">Tampil</label>
|
||||
<select id="per_page" name="per_page" class="form-select form-select-sm">
|
||||
@foreach ($perPage as $n)
|
||||
<option value="{{ $n }}" @selected($aktivitas->perPage() == $n)>{{ $n }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<label class="form-label" for="search">Cari</label>
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" id="search" name="search" class="form-control" value="{{ request('search') }}"
|
||||
placeholder="Aktivitas, nama pengguna, atau nama petani...">
|
||||
<button type="submit" class="btn btn-primary"><i class="icon-base ti tabler-search"></i></button>
|
||||
@if (request()->hasAny(['jenis', 'search', 'dari', 'sampai']))
|
||||
<a href="{{ route('log-aktivitas.index') }}" class="btn btn-label-secondary">Reset</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{{-- Tabel log --}}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead class="border-top">
|
||||
<tr>
|
||||
<th class="text-nowrap">Waktu</th>
|
||||
<th>Pengguna</th>
|
||||
<th>Jenis</th>
|
||||
<th>Aktivitas</th>
|
||||
<th>Rincian</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse ($aktivitas as $item)
|
||||
@php
|
||||
$j = $jenis[$item->log_name] ?? ['label' => $item->log_name ?? '-', 'warna' => 'secondary'];
|
||||
$prop = $item->properties ?? collect();
|
||||
$baru = $item->attribute_changes['attributes'] ?? [];
|
||||
$lama = $item->attribute_changes['old'] ?? null;
|
||||
$petaniId = $item->subject_type === Petani::class ? $item->subject_id : ($prop['petani_id'] ?? null);
|
||||
$namaData = $item->subject?->nama ?? $item->subject?->name;
|
||||
@endphp
|
||||
<tr>
|
||||
<td class="text-nowrap">
|
||||
<span class="d-block">{{ $item->created_at->translatedFormat('d M Y') }}</span>
|
||||
<small class="text-body-secondary">{{ $item->created_at->format('H:i:s') }}</small>
|
||||
</td>
|
||||
<td>
|
||||
@if ($item->causer)
|
||||
<span class="text-heading fw-medium d-block">{{ $item->causer->name }}</span>
|
||||
<small class="text-body-secondary">{{ $item->causer->role?->label() }}</small>
|
||||
@else
|
||||
<span class="text-body-secondary">Sistem / tamu</span>
|
||||
@endif
|
||||
</td>
|
||||
<td><span class="badge bg-label-{{ $j['warna'] }}">{{ $j['label'] }}</span></td>
|
||||
<td>
|
||||
<span class="d-block">{{ $item->description }}</span>
|
||||
@if ($item->subject_type && $item->subject_type !== Petani::class)
|
||||
<small class="text-body-secondary d-block">#{{ $item->subject_id }}{{ $namaData ? ' · ' . Str::limit($namaData, 40) : '' }}</small>
|
||||
@endif
|
||||
@if ($petaniId)
|
||||
<small class="text-body-secondary d-block">
|
||||
<i class="icon-base ti tabler-user icon-xs"></i>
|
||||
{{ $namaPetani[$petaniId] ?? $namaData ?? 'Petani #' . $petaniId }}
|
||||
</small>
|
||||
@endif
|
||||
</td>
|
||||
<td class="small">
|
||||
@if ($item->log_name === 'verifikasi')
|
||||
<span class="badge bg-label-secondary">{{ Format::status($prop['dari'] ?? null) }}</span>
|
||||
<i class="icon-base ti tabler-arrow-right icon-xs mx-1"></i>
|
||||
<span class="badge bg-label-primary">{{ Format::status($prop['ke'] ?? null) }}</span>
|
||||
@if (! empty($prop['catatan']))
|
||||
<div class="mt-1 text-wrap" style="max-width: 360px;">Catatan: {{ $prop['catatan'] }}</div>
|
||||
@endif
|
||||
@elseif ($item->log_name === 'auth')
|
||||
<span class="d-block">IP: {{ $prop['ip'] ?? '-' }}</span>
|
||||
@if (! empty($prop['identitas']))
|
||||
<span class="d-block">Login: {{ $prop['identitas'] }}</span>
|
||||
@endif
|
||||
@elseif ($baru)
|
||||
@php
|
||||
$isian = collect($baru)->when(! $lama, fn ($c) => $c->reject(fn ($v) => $v === null || $v === ''));
|
||||
$batas = $lama ? $isian->count() : 5;
|
||||
@endphp
|
||||
<ul class="list-unstyled mb-0">
|
||||
@foreach ($isian->take($batas) as $kolom => $nilai)
|
||||
<li class="text-wrap" style="max-width: 420px;">
|
||||
<span class="fw-medium">{{ Format::kolom($kolom) }}:</span>
|
||||
@if ($lama)
|
||||
<span class="text-body-secondary text-decoration-line-through">{{ Format::nilai($kolom, $lama[$kolom] ?? null) }}</span>
|
||||
<i class="icon-base ti tabler-arrow-right icon-xs mx-1"></i>
|
||||
@endif
|
||||
{{ Format::nilai($kolom, $nilai) }}
|
||||
</li>
|
||||
@endforeach
|
||||
@if ($isian->count() > $batas)
|
||||
<li class="text-body-secondary">+{{ $isian->count() - $batas }} isian lainnya</li>
|
||||
@endif
|
||||
</ul>
|
||||
@else
|
||||
<span class="text-body-secondary">-</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="text-center py-4">Belum ada aktivitas yang tercatat.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center justify-content-md-end border-top p-4">
|
||||
{{ $aktivitas->links('pagination::bootstrap-5') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -260,7 +260,7 @@
|
||||
@endif
|
||||
|
||||
@if($isAdmin)
|
||||
<li class="menu-item {{ request()->routeIs(['users.*', 'program.*', 'framework.*', 'group.*']) || (request()->routeIs('tabel.*') && !request()->routeIs('tabel.data.*')) ? 'active open' : '' }}">
|
||||
<li class="menu-item {{ request()->routeIs(['users.*', 'log-aktivitas.*', 'program.*', 'framework.*', 'group.*']) || (request()->routeIs('tabel.*') && !request()->routeIs('tabel.data.*')) ? 'active open' : '' }}">
|
||||
<a href="javascript:void(0);" class="menu-link menu-toggle">
|
||||
<span class="menu-icon sidebar-icon" aria-hidden="true"><i class="icon-base ti tabler-settings"></i></span>
|
||||
<div data-i18n="Konfigurasi">Konfigurasi</div>
|
||||
@@ -271,6 +271,11 @@
|
||||
<span class="menu-icon sidebar-icon" aria-hidden="true"><i class="icon-base ti tabler-user-shield"></i></span><div data-i18n="Daftar Pengguna">Daftar Pengguna</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item {{ request()->routeIs('log-aktivitas.*') ? 'active' : '' }}">
|
||||
<a href="{{ route('log-aktivitas.index') }}" class="menu-link">
|
||||
<span class="menu-icon sidebar-icon" aria-hidden="true"><i class="icon-base ti tabler-history"></i></span><div data-i18n="Log Aktivitas">Log Aktivitas</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@if($isAdmin && $appName === 'AgroPro')
|
||||
<li class="menu-item {{ request()->routeIs(['program.*', 'framework.*']) ? 'active open' : '' }}">
|
||||
|
||||
Reference in New Issue
Block a user