Aggiunto classe immobili
This commit is contained in:
parent
71d75ef464
commit
5dbe0a2c85
117
app/Http/Controllers/ImmobiliController.php
Normal file
117
app/Http/Controllers/ImmobiliController.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Immobili;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ImmobiliController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
return view('affitti.immobili.index',[
|
||||
'immobili' => 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]);
|
||||
}
|
||||
}
|
45
app/Models/Immobili.php
Normal file
45
app/Models/Immobili.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Immobili extends Model
|
||||
{
|
||||
//
|
||||
protected $table = 'immobilis';
|
||||
protected $fillable = [
|
||||
'indirizzo',
|
||||
'citta',
|
||||
'cap',
|
||||
'provincia',
|
||||
'nazione',
|
||||
'descrizione',
|
||||
'categoria',
|
||||
'tipologia',
|
||||
'stato',
|
||||
'classe_energetica',
|
||||
'superficie',
|
||||
'vani',
|
||||
'bagni',
|
||||
'camere',
|
||||
'piano',
|
||||
'ascensore',
|
||||
'riscaldamento',
|
||||
'condizionatore',
|
||||
'giardino',
|
||||
'posto_auto',
|
||||
'garage',
|
||||
'balcone',
|
||||
'terrazzo',
|
||||
'cantina',
|
||||
'arredamento',
|
||||
'spese_condominiali',
|
||||
'anno_costruzione',
|
||||
'prezzo',
|
||||
'disponibilita',
|
||||
'note',
|
||||
'fibra-ottica',
|
||||
'internet',
|
||||
];
|
||||
}
|
@ -428,7 +428,42 @@ return [
|
||||
'icon' => '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'],
|
||||
],
|
||||
|
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('immobilis', function (Blueprint $table) {
|
||||
$table->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');
|
||||
}
|
||||
};
|
25
resources/views/affitti/immobili/assegna-contratto.blade.php
Normal file
25
resources/views/affitti/immobili/assegna-contratto.blade.php
Normal file
@ -0,0 +1,25 @@
|
||||
@extends('adminlte::page')
|
||||
|
||||
@section('title', 'Assegna Contratto')
|
||||
@section('content_header')
|
||||
<h1>Assegna Contratto</h1>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<h1>Assegna Contratto all'Immobile</h1>
|
||||
<form action="{{ route('immobili.assegnaContratto', $id) }}" method="POST">
|
||||
@csrf
|
||||
<div class="mb-3">
|
||||
<label for="contratto_id" class="form-label">Seleziona Contratto</label>
|
||||
<select name="contratto_id" id="contratto_id" class="form-select" required>
|
||||
<option value="">-- Seleziona --</option>
|
||||
@foreach($contratti as $contratto)
|
||||
<option value="{{ $contratto->id }}">{{ $contratto->nome }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Assegna Contratto</button>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
45
resources/views/affitti/immobili/create.blade.php
Normal file
45
resources/views/affitti/immobili/create.blade.php
Normal file
@ -0,0 +1,45 @@
|
||||
@extends('adminlte::page')
|
||||
|
||||
@section('title', 'Crea Immobile')
|
||||
@section('content_header')
|
||||
<h1>Crea Nuovo Immobile</h1>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<form method="POST" action="{{ route('immobili.store') }}">
|
||||
@csrf
|
||||
<div class="form-group"><label for="indirizzo">Indirizzo</label><input type="text" name="indirizzo" id="indirizzo" class="form-control"></div>
|
||||
<div class="form-group"><label for="citta">Città</label><input type="text" name="citta" id="citta" class="form-control"></div>
|
||||
<div class="form-group"><label for="cap">CAP</label><input type="text" name="cap" id="cap" class="form-control"></div>
|
||||
<div class="form-group"><label for="provincia">Provincia</label><input type="text" name="provincia" id="provincia" class="form-control"></div>
|
||||
<div class="form-group"><label for="nazione">Nazione</label><input type="text" name="nazione" id="nazione" class="form-control"></div>
|
||||
<div class="form-group"><label for="descrizione">Descrizione</label><input type="text" name="descrizione" id="descrizione" class="form-control"></div>
|
||||
<div class="form-group"><label for="categoria">Categoria</label><input type="text" name="categoria" id="categoria" class="form-control"></div>
|
||||
<div class="form-group"><label for="tipologia">Tipologia</label><input type="text" name="tipologia" id="tipologia" class="form-control"></div>
|
||||
<div class="form-group"><label for="stato">Stato</label><input type="text" name="stato" id="stato" class="form-control"></div>
|
||||
<div class="form-group"><label for="classe_energetica">Classe Energetica</label><input type="text" name="classe_energetica" id="classe_energetica" class="form-control"></div>
|
||||
<div class="form-group"><label for="superficie">Superficie</label><input type="text" name="superficie" id="superficie" class="form-control"></div>
|
||||
<div class="form-group"><label for="vani">Vani</label><input type="text" name="vani" id="vani" class="form-control"></div>
|
||||
<div class="form-group"><label for="bagni">Bagni</label><input type="text" name="bagni" id="bagni" class="form-control"></div>
|
||||
<div class="form-group"><label for="camere">Camere</label><input type="text" name="camere" id="camere" class="form-control"></div>
|
||||
<div class="form-group"><label for="piano">Piano</label><input type="text" name="piano" id="piano" class="form-control"></div>
|
||||
<div class="form-group"><label for="ascensore">Ascensore</label><input type="text" name="ascensore" id="ascensore" class="form-control"></div>
|
||||
<div class="form-group"><label for="riscaldamento">Riscaldamento</label><input type="text" name="riscaldamento" id="riscaldamento" class="form-control"></div>
|
||||
<div class="form-group"><label for="condizionatore">Condizionatore</label><input type="text" name="condizionatore" id="condizionatore" class="form-control"></div>
|
||||
<div class="form-group"><label for="giardino">Giardino</label><input type="text" name="giardino" id="giardino" class="form-control"></div>
|
||||
<div class="form-group"><label for="posto_auto">Posto Auto</label><input type="text" name="posto_auto" id="posto_auto" class="form-control"></div>
|
||||
<div class="form-group"><label for="garage">Garage</label><input type="text" name="garage" id="garage" class="form-control"></div>
|
||||
<div class="form-group"><label for="balcone">Balcone</label><input type="text" name="balcone" id="balcone" class="form-control"></div>
|
||||
<div class="form-group"><label for="terrazzo">Terrazzo</label><input type="text" name="terrazzo" id="terrazzo" class="form-control"></div>
|
||||
<div class="form-group"><label for="cantina">Cantina</label><input type="text" name="cantina" id="cantina" class="form-control"></div>
|
||||
<div class="form-group"><label for="arredamento">Arredamento</label><input type="text" name="arredamento" id="arredamento" class="form-control"></div>
|
||||
<div class="form-group"><label for="spese_condominiali">Spese Condominiali</label><input type="text" name="spese_condominiali" id="spese_condominiali" class="form-control"></div>
|
||||
<div class="form-group"><label for="anno_costruzione">Anno Costruzione</label><input type="text" name="anno_costruzione" id="anno_costruzione" class="form-control"></div>
|
||||
<div class="form-group"><label for="prezzo">Prezzo</label><input type="text" name="prezzo" id="prezzo" class="form-control"></div>
|
||||
<div class="form-group"><label for="disponibilita">Disponibilità</label><input type="text" name="disponibilita" id="disponibilita" class="form-control"></div>
|
||||
<div class="form-group"><label for="note">Note</label><input type="text" name="note" id="note" class="form-control"></div>
|
||||
<div class="form-group"><label for="fibra-ottica">Fibra Ottica</label><input type="text" name="fibra-ottica" id="fibra-ottica" class="form-control"></div>
|
||||
<div class="form-group"><label for="internet">Internet</label><input type="text" name="internet" id="internet" class="form-control"></div>
|
||||
<button type="submit" class="btn btn-primary">Salva</button>
|
||||
</form>
|
||||
@stop
|
44
resources/views/affitti/immobili/index.blade.php
Normal file
44
resources/views/affitti/immobili/index.blade.php
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
@extends('adminlte::page')
|
||||
|
||||
@section('title', 'Immobili')
|
||||
|
||||
@section('content_header')
|
||||
<h1>Immobili</h1>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<p>Elenco immobili</p>
|
||||
<a href="{{ route('immobili.create') }}" class="btn btn-primary mb-3">Nuovo Immobile</a>
|
||||
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Indirizzo</th>
|
||||
<th>Città</th>
|
||||
<th>Stato</th>
|
||||
<th>Azioni</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($immobili as $immobile)
|
||||
<tr>
|
||||
<td>{{ $immobile->id }}</td>
|
||||
<td>{{ $immobile->indirizzo }}</td>
|
||||
<td>{{ $immobile->citta }}</td>
|
||||
<td>{{ $immobile->stato }}</td>
|
||||
<td>
|
||||
<a href="{{ route('immobili.show', $immobile->id) }}" class="btn btn-info btn-sm">Visualizza</a>
|
||||
<a href="{{ route('immobili.edit', $immobile->id) }}" class="btn btn-warning btn-sm">Modifica</a>
|
||||
<form action="{{ route('immobili.destroy', $immobile->id) }}" method="POST" style="display:inline;">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Sei sicuro di voler eliminare questo immobile?')">Elimina</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@stop
|
39
resources/views/affitti/immobili/show.blade.php
Normal file
39
resources/views/affitti/immobili/show.blade.php
Normal file
@ -0,0 +1,39 @@
|
||||
@extends('adminlte::page')
|
||||
|
||||
@section('title', 'Dettagli Immobile')
|
||||
@section('content_header')
|
||||
<h1>Dettagli Immobile</h1>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<!-- Navbar superiore -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light mb-4">
|
||||
<div class="container-fluid">
|
||||
<span class="navbar-brand">Gestione Immobile</span>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('affitti_contratti.associa',$immobile->id) }}">Associa Contratto</a>
|
||||
</li>
|
||||
<!-- Aggiungi altri collegamenti qui -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Informazioni Immobile -->
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4>Informazioni Immobile</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p><strong>Indirizzo:</strong> {{ $immobile->indirizzo }}</p>
|
||||
<p><strong>Tipologia:</strong> {{ $immobile->tipologia }}</p>
|
||||
<p><strong>Superficie:</strong> {{ $immobile->superficie }} m²</p>
|
||||
|
||||
<!-- Aggiungi altre informazioni rilevanti -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
@ -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
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user