From 5dbe0a2c8507adfe3a833b639dd7175802b83709 Mon Sep 17 00:00:00 2001 From: Flavio Barachino Date: Fri, 3 Oct 2025 10:18:41 +0200 Subject: [PATCH] Aggiunto classe immobili --- app/Http/Controllers/ImmobiliController.php | 117 ++++++++++++++++++ app/Models/Immobili.php | 45 +++++++ config/adminlte.php | 37 +++++- ...25_09_26_115029_create_immobilis_table.php | 59 +++++++++ .../immobili/assegna-contratto.blade.php | 25 ++++ .../views/affitti/immobili/create.blade.php | 45 +++++++ .../views/affitti/immobili/index.blade.php | 44 +++++++ .../views/affitti/immobili/show.blade.php | 39 ++++++ routes/web.php | 26 +++- 9 files changed, 432 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/ImmobiliController.php create mode 100644 app/Models/Immobili.php create mode 100644 database/migrations/2025_09_26_115029_create_immobilis_table.php create mode 100644 resources/views/affitti/immobili/assegna-contratto.blade.php create mode 100644 resources/views/affitti/immobili/create.blade.php create mode 100644 resources/views/affitti/immobili/index.blade.php create mode 100644 resources/views/affitti/immobili/show.blade.php diff --git a/app/Http/Controllers/ImmobiliController.php b/app/Http/Controllers/ImmobiliController.php new file mode 100644 index 0000000..c671912 --- /dev/null +++ b/app/Http/Controllers/ImmobiliController.php @@ -0,0 +1,117 @@ + Immobili::all() + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + // + return view('affitti.immobili.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + // + $data = $request->validate([ + 'indirizzo' => 'nullable|string|max:255', + 'citta' => 'nullable|string|max:255', + 'cap' => 'nullable|string|max:20', + 'provincia' => 'nullable|string|max:255', + 'nazione' => 'nullable|string|max:255', + 'descrizione' => 'nullable|string|max:1000', + 'categoria' => 'nullable|string|max:255', + 'tipologia' => 'nullable|string|max:255', + 'stato' => 'nullable|string|max:255', + 'classe_energetica' => 'nullable|string|max:50', + 'superficie' => 'nullable|string|max:50', + 'vani' => 'nullable|string|max:50', + 'bagni' => 'nullable|string|max:50', + 'camere' => 'nullable|string|max:50', + 'piano' => 'nullable|string|max:50', + 'ascensore' => 'nullable|string|max:50', + 'riscaldamento' => 'nullable|string|max:50', + 'condizionatore' => 'nullable|string|max:50', + 'giardino' => 'nullable|string|max:50', + 'posto_auto' => 'nullable|string|max:50', + 'garage' => 'nullable|string|max:50', + 'balcone' => 'nullable|string|max:50', + 'terrazzo' => 'nullable|string|max:50', + 'cantina' => 'nullable|string|max:50', + 'arredamento' => 'nullable|string|max:50', + 'spese_condominiali' => 'nullable|string|max:100', + 'anno_costruzione' => 'nullable|string|max:4', + 'prezzo' => 'nullable|string|max:100', + 'disponibilita' => 'nullable|string|max:255', + 'note' => 'nullable|string|max:2000', + 'fibra-ottica' => 'nullable|string|max:50', + 'internet' => 'nullable|string|max:50', + ]); + Immobili::create($data); + return redirect()->route('immobili')->with('success', 'Immobile creato con successo.'); + } + + /** + * Display the specified resource. + */ + public function show(Immobili $immobili) + { + // + $immobile=Immobili::find($immobili->id); + return view('affitti.immobili.show',compact('immobile')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Immobili $immobili) + { + // + + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, Immobili $immobili) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Immobili $immobili) + { + // + $immobile=Immobili::find($immobili->id); + $immobile->delete(); + return redirect()->route('immobili')->with('success', 'Immobile eliminato con successo.'); + } + + public function associaContratto(Immobili $immobili) + { + $immobile=Immobili::find($immobili); + return view('affitti.immobili.assegna-contratto',[compact('immobile'),'id'=>$immobili]); + } +} diff --git a/app/Models/Immobili.php b/app/Models/Immobili.php new file mode 100644 index 0000000..c888220 --- /dev/null +++ b/app/Models/Immobili.php @@ -0,0 +1,45 @@ + 'fas fa-fw fa-car', 'can' => ['automobili'], ], - + [ 'text' => 'Affitti', + 'url' => '#', + 'icon' => 'fas fa-fw fa-home', + 'submenu' => [ + [ + 'text' => 'Immobili', + 'url' => 'admin/affitti/immobili', + 'icon' => 'fas fa-fw fa-wine-bottle', + 'can' => ['affitti'], + ], + [ + 'text' => 'Contratti di locazione', + 'url' => 'admin/affitti/locazioni', + 'icon' => 'fas fa-fw fa-tags', + 'can' => ['affitti'], + ], + [ + 'text' => 'Scadenze', + 'url' => 'admin/affitti/scadenze', + 'icon' => 'fas fa-fw fa-wallet', + 'can' => ['affitti'], + ], + [ + 'text' => 'Spese condominiali', + 'url' => 'admin/affitti/spese', + 'icon' => 'fas fa-fw fa-tags', + 'can' => ['affitti'], + ], + [ + 'text' => 'Ripartizione spese', + 'url' => 'admin/affitti/ripartizioni', + 'icon' => 'fas fa-fw fa-wallet', + 'can' => ['affitti'], + ], + ], + ], ['header' => 'GESTIONE PIM', 'can' => ['contatti','tasks','appuntamenti','meetingroom'], ], diff --git a/database/migrations/2025_09_26_115029_create_immobilis_table.php b/database/migrations/2025_09_26_115029_create_immobilis_table.php new file mode 100644 index 0000000..826e5b2 --- /dev/null +++ b/database/migrations/2025_09_26_115029_create_immobilis_table.php @@ -0,0 +1,59 @@ +id(); + $table->timestamps(); + $table->string('indirizzo')->nullable(); + $table->string('citta')->nullable(); + $table->string('cap')->nullable(); + $table->string('provincia')->nullable(); + $table->string('nazione')->nullable(); + $table->string('descrizione')->nullable(); + $table->string('categoria')->nullable(); + $table->string('tipologia')->nullable(); + $table->string('stato')->nullable(); + $table->string('classe_energetica')->nullable(); + $table->string('superficie')->nullable(); + $table->string('vani')->nullable(); + $table->string('bagni')->nullable(); + $table->string('camere')->nullable(); + $table->string('piano')->nullable(); + $table->string('ascensore')->nullable(); + $table->string('riscaldamento')->nullable(); + $table->string('condizionatore')->nullable(); + $table->string('giardino')->nullable(); + $table->string('posto_auto')->nullable(); + $table->string('garage')->nullable(); + $table->string('balcone')->nullable(); + $table->string('terrazzo')->nullable(); + $table->string('cantina')->nullable(); + $table->string('arredamento')->nullable(); + $table->string('spese_condominiali')->nullable(); + $table->string('anno_costruzione')->nullable(); + $table->string('prezzo')->nullable(); + $table->string('disponibilita')->nullable(); + $table->string('note')->nullable(); + $table->string('fibra-ottica')->nullable(); + $table->string('internet')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('immobilis'); + } +}; diff --git a/resources/views/affitti/immobili/assegna-contratto.blade.php b/resources/views/affitti/immobili/assegna-contratto.blade.php new file mode 100644 index 0000000..00b2ad5 --- /dev/null +++ b/resources/views/affitti/immobili/assegna-contratto.blade.php @@ -0,0 +1,25 @@ +@extends('adminlte::page') + +@section('title', 'Assegna Contratto') +@section('content_header') +

Assegna Contratto

+@stop + +@section('content') +
+

Assegna Contratto all'Immobile

+
+ @csrf +
+ + +
+ +
+
+@endsection diff --git a/resources/views/affitti/immobili/create.blade.php b/resources/views/affitti/immobili/create.blade.php new file mode 100644 index 0000000..a0982fd --- /dev/null +++ b/resources/views/affitti/immobili/create.blade.php @@ -0,0 +1,45 @@ +@extends('adminlte::page') + +@section('title', 'Crea Immobile') +@section('content_header') +

Crea Nuovo Immobile

+@stop + +@section('content') +
+ @csrf +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+@stop diff --git a/resources/views/affitti/immobili/index.blade.php b/resources/views/affitti/immobili/index.blade.php new file mode 100644 index 0000000..d5c2466 --- /dev/null +++ b/resources/views/affitti/immobili/index.blade.php @@ -0,0 +1,44 @@ + +@extends('adminlte::page') + +@section('title', 'Immobili') + +@section('content_header') +

Immobili

+@stop + +@section('content') +

Elenco immobili

+ Nuovo Immobile + + + + + + + + + + + + + @foreach($immobili as $immobile) + + + + + + + + @endforeach + +
IDIndirizzoCittàStatoAzioni
{{ $immobile->id }}{{ $immobile->indirizzo }}{{ $immobile->citta }}{{ $immobile->stato }} + Visualizza + Modifica +
+ @csrf + @method('DELETE') + +
+
+@stop diff --git a/resources/views/affitti/immobili/show.blade.php b/resources/views/affitti/immobili/show.blade.php new file mode 100644 index 0000000..29ec541 --- /dev/null +++ b/resources/views/affitti/immobili/show.blade.php @@ -0,0 +1,39 @@ +@extends('adminlte::page') + +@section('title', 'Dettagli Immobile') +@section('content_header') +

Dettagli Immobile

+@stop + +@section('content') +
+ + + + +
+
+

Informazioni Immobile

+
+
+

Indirizzo: {{ $immobile->indirizzo }}

+

Tipologia: {{ $immobile->tipologia }}

+

Superficie: {{ $immobile->superficie }} m²

+ + +
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 66b9339..c34dada 100644 --- a/routes/web.php +++ b/routes/web.php @@ -59,10 +59,7 @@ Route::middleware([ 'web', 'auth', ])->group(function () { - /*Route::get('admin', function () { - dd(\App\Models\User::all()); - return 'This is your multi-tenant application. The id of the current tenant is ' . tenant('id'); - });*/ + Route::get('admin/', [MovimentiController::class,'dashboard']); Route::get('changepassword',function(){return view('auth.change-password');})->name('changePassword'); Route::post('changepassword', [Utenti::class,'changePassword']); @@ -252,7 +249,28 @@ Route::middleware([ Route::get('admin/meeting', function() { return view('meetings.meeting'); })->name('meeting'); }); + // AFFITTI + Route::group(['middleware'=>['permission:affitti']], function(){ + Route::get('admin/affitti/immobili', [App\Http\Controllers\ImmobiliController::class,'index'])->name('immobili'); + Route::get('admin/affitti/immobili/create', [App\Http\Controllers\ImmobiliController::class,'create'])->name('immobili.create'); + Route::post('admin/affitti/immobili', [App\Http\Controllers\ImmobiliController::class,'store'])->name('immobili.store'); + Route::get('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'show'])->name('immobili.show'); + Route::get('admin/affitti/immobili/{immobili}/edit', [App\Http\Controllers\ImmobiliController::class,'edit'])->name('immobili.edit'); + Route::put('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'update'])->name('immobili.update'); + Route::delete('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'destroy'])->name('immobili.destroy'); + //navbar + Route::get('admin/affitti/associaContratto', [App\Http\Controllers\ImmobiliController::class,'associaContratto'])->name('affitti_contratti.associa'); + + // Cotratti + Route::get('admin/affitti/contratti', [App\Http\Controllers\ContrattiAffittiController::class,'index'])->name('contratti_affitti'); + Route::get('admin/affitti/contratti/create', [App\Http\Controllers\ContrattiAffittiController::class,'create'])->name('contratti_affitti.create'); + Route::post('admin/affitti/contratti', [App\Http\Controllers\ContrattiAffittiController::class,'store'])->name('contratti_affitti.store'); + Route::get('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\ContrattiAffittiController::class,'show'])->name('contratti_affitti.show'); + Route::get('admin/affitti/contratti/{contrattiAffitti}/edit', [App\Http\Controllers\ContrattiAffittiController::class,'edit'])->name('contratti_affitti.edit'); + Route::put('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\ContrattiAffittiController::class,'update'])->name('contratti_affitti.update'); + Route::delete('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\ContrattiAffittiController::class,'destroy'])->name('contratti_affitti'); + }); // API });