glastree_on_gitea

This commit is contained in:
2026-05-26 08:14:29 +02:00
commit 0bed099d05
9556 changed files with 1186307 additions and 0 deletions
@@ -0,0 +1,64 @@
<?php
namespace App\Http\Controllers;
use App\Models\Evento;
use App\Models\Documento;
use Illuminate\Http\Request;
class EventoDocumentoController extends Controller
{
public function store(Request $request, $evento)
{
$this->authorizeWrite('documenti');
$this->authorizeWrite('eventi');
$evento = Evento::findOrFail($evento);
$request->validate([
'nome_file' => 'required|string|max:255',
'tipologia' => 'required|in:documento,programma,locandina,altro',
'file' => 'required|file|max:10240',
]);
$file = $request->file('file');
$path = $file->store('documenti/eventi', 'public');
$documento = Documento::create([
'nome_file' => $request->nome_file,
'tipologia' => $request->tipologia,
'file_path' => $path,
'mime_type' => $file->getMimeType(),
'dimensione' => $file->getSize(),
'visibilita' => 'evento',
'visibilita_target_id' => $evento->id,
'visibilita_target_type' => Evento::class,
]);
$evento->documenti()->attach($documento->id);
return redirect()->back()->with('success', 'Documento caricato con successo.');
}
public function destroy($evento, $documento)
{
$this->authorizeDelete('documenti');
$this->authorizeWrite('eventi');
$evento = Evento::findOrFail($evento);
$documento = Documento::findOrFail($documento);
if ($evento->documenti()->where('documenti.id', $documento->id)->exists()) {
$evento->documenti()->detach($documento->id);
}
if ($documento->visibilita === 'evento' && $documento->visibilita_target_id == $evento->id) {
if ($documento->eventi()->count() === 0 && $documento->gruppi()->count() === 0 && $documento->individui()->count() === 0) {
if ($documento->file_path && \Storage::disk('public')->exists($documento->file_path)) {
\Storage::disk('public')->delete($documento->file_path);
}
$documento->delete();
}
}
return redirect()->back()->with('success', 'Documento rimosso.');
}
}