157 lines
6.6 KiB
PHP
157 lines
6.6 KiB
PHP
@extends('admin.layout')
|
|
|
|
@section('title', 'Log Attività')
|
|
@section('page_title', 'Log Attività')
|
|
|
|
@section('breadcrumbs')
|
|
<li class="breadcrumb-item active">Admin</li>
|
|
<li class="breadcrumb-item active">Log Attività</li>
|
|
@endsection
|
|
|
|
@section('content')
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3 class="card-title">Attività di Sistema</h3>
|
|
<div class="card-tools">
|
|
<button type="button" class="btn btn-danger btn-sm" onclick="deleteLogs()">
|
|
<i class="fas fa-trash mr-1"></i> Cancella Log
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="GET" class="mb-3" id="filter-form">
|
|
<div class="row">
|
|
<div class="col-md-2">
|
|
<select name="user_id" class="form-control">
|
|
<option value="">Tutti gli utenti</option>
|
|
@foreach($users as $u)
|
|
<option value="{{ $u->id }}" {{ request('user_id') == $u->id ? 'selected' : '' }}>{{ $u->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<select name="module" class="form-control">
|
|
<option value="">Tutti i moduli</option>
|
|
@foreach($modules as $module)
|
|
<option value="{{ $module }}" {{ request('module') == $module ? 'selected' : '' }}>{{ $module }}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<select name="action" class="form-control">
|
|
<option value="">Tutte le azioni</option>
|
|
<option value="create" {{ request('action') == 'create' ? 'selected' : '' }}>Create</option>
|
|
<option value="update" {{ request('action') == 'update' ? 'selected' : '' }}>Update</option>
|
|
<option value="delete" {{ request('action') == 'delete' ? 'selected' : '' }}>Delete</option>
|
|
<option value="login" {{ request('action') == 'login' ? 'selected' : '' }}>Login</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<input type="date" name="from" class="form-control" value="{{ request('from') }}" placeholder="Da">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<input type="date" name="to" class="form-control" value="{{ request('to') }}" placeholder="A">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<button type="submit" class="btn btn-primary">Filtra</button>
|
|
<a href="/admin/activity-logs" class="btn btn-secondary">Reset</a>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
<table class="table table-bordered table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Data/Ora</th>
|
|
<th>Utente</th>
|
|
<th>Azione</th>
|
|
<th>Modulo</th>
|
|
<th>Descrizione</th>
|
|
<th>IP</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@forelse($logs as $log)
|
|
<tr>
|
|
<td><small>{{ $log->created_at->format('d/m/Y H:i:s') }}</small></td>
|
|
<td>{{ $log->user->name ?? 'Sistema' }}</td>
|
|
<td>
|
|
<span class="badge badge-{{ $log->action == 'delete' ? 'danger' : ($log->action == 'create' ? 'success' : ($log->action == 'login' ? 'info' : 'warning')) }}">
|
|
{{ $log->action }}
|
|
</span>
|
|
</td>
|
|
<td>{{ $log->module }}</td>
|
|
<td>{{ $log->description }}</td>
|
|
<td><small>{{ $log->ip_address }}</small></td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="6" class="text-center">Nessun log presente</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
|
|
{{ $logs->links() }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('scripts')
|
|
<script>
|
|
function deleteLogs() {
|
|
var filterForm = document.getElementById('filter-form');
|
|
var params = new URLSearchParams(new FormData(filterForm));
|
|
var filterDescription = [];
|
|
|
|
var userFilter = params.get('user_id');
|
|
var moduleFilter = params.get('module');
|
|
var actionFilter = params.get('action');
|
|
var fromFilter = params.get('from');
|
|
var toFilter = params.get('to');
|
|
|
|
if (userFilter) filterDescription.push('utente=' + userFilter);
|
|
if (moduleFilter) filterDescription.push('modulo=' + moduleFilter);
|
|
if (actionFilter) filterDescription.push('azione=' + actionFilter);
|
|
if (fromFilter) filterDescription.push('dal=' + fromFilter);
|
|
if (toFilter) filterDescription.push('al=' + toFilter);
|
|
|
|
var message = filterDescription.length > 0
|
|
? 'Eliminare i log filtrati? (' + filterDescription.join(', ') + ')'
|
|
: 'Eliminare TUTTI i log?';
|
|
|
|
if (!confirm(message)) return;
|
|
|
|
var form = document.createElement('form');
|
|
form.method = 'POST';
|
|
form.action = '/admin/activity-logs';
|
|
form.style.display = 'none';
|
|
|
|
var csrf = document.createElement('input');
|
|
csrf.name = '_token';
|
|
csrf.value = '{{ csrf_token() }}';
|
|
form.appendChild(csrf);
|
|
|
|
var method = document.createElement('input');
|
|
method.name = '_method';
|
|
method.value = 'DELETE';
|
|
form.appendChild(method);
|
|
|
|
filterForm.querySelectorAll('select, input').forEach(function(el) {
|
|
if (el.name && el.value) {
|
|
var input = document.createElement('input');
|
|
input.name = el.name;
|
|
input.value = el.value;
|
|
form.appendChild(input);
|
|
}
|
|
});
|
|
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
}
|
|
</script>
|
|
@endsection |