Added the support for generating docs from template doc

This commit is contained in:
Simon Pocrnjič
2025-10-06 21:46:28 +02:00
parent 0c8d1e0b5d
commit cec5796acf
69 changed files with 4570 additions and 374 deletions
+32 -30
View File
@@ -31,34 +31,7 @@
config('jetstream.auth_session'),
'verified',
])->group(function () {
Route::get('/dashboard', function () {
$chart = new ExampleChart(new LarapexChart);
$people = Person::with(['group', 'type', 'client', 'clientCase'])
->where([
['active', '=', 1],
])
->limit(10)
->orderByDesc('created_at')
->get();
$terrain = \App\Models\ClientCase::join('client_case_segment', 'client_cases.id', '=', 'client_case_segment.client_case_id')
->select('client_cases.*', 'client_case_segment.created_at as added_segment')
->where('client_case_segment.segment_id', '=', 2)
->where('client_case_segment.active', '=', true)
->orderByDesc('client_case_segment.created_at')
->limit(10)
->with('person')
->get();
return Inertia::render(
'Dashboard',
[
'chart' => $chart->build(),
'people' => $people,
'terrain' => $terrain,
]
);
})->name('dashboard');
Route::get('/dashboard', \App\Http\Controllers\DashboardController::class)->name('dashboard');
Route::get('testing', function () {
return Inertia::render('Testing/Index', [
@@ -66,6 +39,34 @@
]);
})->name('testing.index');
// Admin panel - user role management
Route::middleware(['permission:manage-settings'])->prefix('admin')->name('admin.')->group(function () {
// Admin dashboard
Route::get('/', function () {
return Inertia::render('Admin/Index');
})->name('index');
Route::get('users', [\App\Http\Controllers\Admin\UserRoleController::class, 'index'])->name('users.index');
Route::put('users/{user}', [\App\Http\Controllers\Admin\UserRoleController::class, 'update'])->name('users.update');
// Permissions management
Route::get('permissions', [\App\Http\Controllers\Admin\PermissionController::class, 'index'])->name('permissions.index');
Route::get('permissions/create', [\App\Http\Controllers\Admin\PermissionController::class, 'create'])->name('permissions.create');
Route::post('permissions', [\App\Http\Controllers\Admin\PermissionController::class, 'store'])->name('permissions.store');
// Document templates & global document settings
Route::get('document-templates', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'index'])->name('document-templates.index');
Route::post('document-templates', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'store'])->name('document-templates.store');
Route::post('document-templates/{template}/toggle', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'toggleActive'])->name('document-templates.toggle');
Route::put('document-templates/{template}/settings', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'updateSettings'])->name('document-templates.settings.update');
Route::get('document-templates/{template}', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'show'])->name('document-templates.show');
Route::get('document-templates/{template}/edit', [\App\Http\Controllers\Admin\DocumentTemplateController::class, 'edit'])->name('document-templates.edit');
Route::get('document-settings', [\App\Http\Controllers\Admin\DocumentSettingsController::class, 'edit'])->name('document-settings.index');
Route::put('document-settings', [\App\Http\Controllers\Admin\DocumentSettingsController::class, 'update'])->name('document-settings.update');
});
// Contract document generation (JSON) - protected by auth+verified; permission enforced inside controller service
Route::post('contracts/{contract:uuid}/generate-document', \App\Http\Controllers\ContractDocumentGenerationController::class)->name('contracts.generate-document');
// Phone page
Route::get('phone', [PhoneViewController::class, 'index'])->name('phone.index');
Route::get('phone/case/{client_case:uuid}', [PhoneViewController::class, 'showCase'])->name('phone.case');
@@ -104,7 +105,7 @@
->join('person', 'client_cases.person_id', '=', 'person.id')
->leftJoin('contract_segment', function ($j) {
$j->on('contract_segment.contract_id', '=', 'contracts.id')
->where('contract_segment.active', true);
->where('contract_segment.active', true);
})
->leftJoin('segments', 'segments.id', '=', 'contract_segment.segment_id')
// case-insensitive reference match
@@ -133,7 +134,7 @@
->join('contracts', 'contracts.client_case_id', '=', 'client_cases.id')
->join('contract_segment', function ($j) {
$j->on('contract_segment.contract_id', '=', 'contracts.id')
->where('contract_segment.active', true);
->where('contract_segment.active', true);
})
->join('segments', 'segments.id', '=', 'contract_segment.segment_id')
->whereIn('client_cases.id', $caseIds)
@@ -159,6 +160,7 @@
$row->case_segments = [];
}
}
return $row;
})->take($limit);
} else {