glastree_on_gitea
This commit is contained in:
@@ -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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user