renew and other crud functionality

This commit is contained in:
2026-01-11 18:31:03 +00:00
parent 55bf184d53
commit ca516d74c2
21 changed files with 882 additions and 74 deletions

View File

@@ -3,6 +3,9 @@
namespace App\Http\Controllers;
use App\Models\Contract;
use App\Models\Unit;
use App\Models\Tenant;
use App\Models\Subunit;
use Illuminate\Http\Request;
use Inertia\Inertia;
@@ -22,7 +25,7 @@ class TenantContractController extends Controller
public function show(Contract $tenantContract)
{
$tenantContract->load(['unit.building.owner', 'person', 'payments', 'subunits']);
$tenantContract->load(['unit.building.tenant', 'person', 'payments', 'subunits']);
return Inertia::render('TenantContracts/Show', ['contract' => $tenantContract]);
}
@@ -31,4 +34,73 @@ class TenantContractController extends Controller
$tenantContract->delete();
return redirect()->route('tenant-contracts.index');
}
// app/Http/Controllers/tenantContractController.php - add these methods
public function create()
{
$units = Unit::with('building')->get();
$tenants = Tenant::all();
$subunits = Subunit::all();
return Inertia::render('TenantContracts/Create', [
'units' => $units,
'tenants' => $tenants,
'subunits' => $subunits
]);
}
public function store(Request $request)
{
$validated = $request->validate([
'unit_id' => 'required|exists:units,id',
'person_id' => 'required|exists:tenants,id',
'contract_type' => 'required',
'contract_number' => 'required|unique:contracts',
'ejari_no' => 'required',
'start_date' => 'required|date',
'end_date' => 'required|date',
'duration_months' => 'required|integer',
'total_amount' => 'required|numeric',
'status' => 'required',
'notes' => 'nullable',
'subunit_ids' => 'nullable|array',
'payments' => 'required|array'
]);
$contract = Contract::create($validated);
if ($request->subunit_ids) {
$contract->subunits()->attach($request->subunit_ids);
}
foreach ($request->payments as $payment) {
$contract->payments()->create($payment);
}
return redirect()->route('tenant-contracts.index');
}
public function renew(Contract $tenantContract)
{
$units = Unit::with('building')->get();
$tenants = Tenant::all();
$subunits = Subunit::all();
$renewData = [
'unit_id' => $tenantContract->unit_id,
'person_id' => $tenantContract->person_id,
'ejari_no' => $tenantContract->ejari_no,
'duration_months' => $tenantContract->duration_months,
'total_amount' => $tenantContract->total_amount,
'start_date' => $tenantContract->end_date->addDay()->format('Y-m-d'),
'subunit_ids' => $tenantContract->subunits->pluck('id')->toArray()
];
return Inertia::render('TenantContracts/Create', [
'units' => $units,
'tenants' => $tenants,
'subunits' => $subunits,
'renewData' => $renewData
]);
}
}