Teren-app/routes/web.php
Simon Pocrnjič 7227c888d4 Mager updated
2025-09-27 17:45:55 +02:00

164 lines
9.5 KiB
PHP

<?php
use App\Charts\ExampleChart;
use App\Http\Controllers\PersonController;
use App\Http\Controllers\ClientCaseContoller;
use App\Http\Controllers\ClientController;
use App\Http\Controllers\ContractController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\ImportController;
use App\Http\Controllers\ImportTemplateController;
use App\Models\Person\Person;
use Illuminate\Http\Request;
use ArielMejiaDev\LarapexCharts\LarapexChart;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use \Illuminate\Database\Eloquent\Builder;
Route::redirect('/', 'login');
Route::middleware([
'auth:sanctum',
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('testing', function() {
return Inertia::render('Testing', []);
});
Route::get('search', function(Request $request) {
if( !empty($request->input('query')) ) {
$clients = App\Models\Person\Person::search($request->input('query'))
->query(function($builder) use($request): void {
$builder->join('clients', 'person.id', '=', 'clients.person_id')
->leftJoin('person_addresses', 'person.id', '=', 'person_addresses.person_id')
->leftJoin('person_phones', 'person.id', '=', 'person_phones.person_id')
->select('person.*', 'clients.uuid as client_uuid')
->limit($request->input('limit'));
})
->get();
$clientCases = App\Models\Person\Person::search($request->input('query'))
->query(function($builder) use($request): void {
$builder->join('client_cases', 'person.id', '=', 'client_cases.person_id')
->leftJoin('person_addresses', 'person.id', '=', 'person_addresses.person_id')
->leftJoin('person_phones', 'person.id', '=', 'person_phones.person_id')
->select('person.*', 'client_cases.uuid as case_uuid')
->limit($request->input('limit'));
})
->get();
return [
'clients' => $clients,
'client_cases' => $clientCases,
'query' => $request->input('query')
];
}
return [];
})->name('search');
//person
Route::put('person/{person:uuid}', [PersonController::class, 'update'])->name('person.update');
Route::post('person/{person:uuid}/address', [PersonController::class, 'createAddress'])->name('person.address.create');
Route::put('person/{person:uuid}/address/{address_id}', [PersonController::class, 'updateAddress'])->name('person.address.update');
Route::post('person/{person:uuid}/phone', [PersonController::class, 'createPhone'])->name('person.phone.create');
Route::put('person/{person:uuid}/phone/{phone_id}', [PersonController::class, 'updatePhone'])->name('person.phone.update');
Route::post('person/{person:uuid}/email', [PersonController::class, 'createEmail'])->name('person.email.create');
Route::put('person/{person:uuid}/email/{email_id}', [PersonController::class, 'updateEmail'])->name('person.email.update');
//client
Route::get('clients', [ClientController::class, 'index'])->name('client');
Route::get('clients/{client:uuid}', [ClientController::class, 'show'])->name('client.show');
Route::post('clients', [ClientController::class, 'store'])->name('client.store');
Route::put('clients/{client:uuid}', [ClientController::class, 'update'])->name('client.update');
//client-case
Route::get('client-cases', [ClientCaseContoller::class, 'index'])->name('clientCase');
Route::get('client-cases/{client_case:uuid}', [ClientCaseContoller::class, 'show'])->name('clientCase.show');
Route::post('client-cases', [ClientCaseContoller::class, 'store'])->name('clientCase.store');
//client-case / contract
Route::post('client-cases/{client_case:uuid}/contract', [ClientCaseContoller::class, 'storeContract'])->name('clientCase.contract.store');
Route::put('client-cases/{client_case:uuid}/contract/{uuid}', [ClientCaseContoller::class, 'updateContract'])->name('clientCase.contract.update');
Route::delete('client-cases/{client_case:uuid}/contract/{uuid}', [ClientCaseContoller::class, 'deleteContract'])->name('clientCase.contract.delete');
//client-case / activity
Route::post('client-cases/{client_case:uuid}/activity', [ClientCaseContoller::class, 'storeActivity'])->name('clientCase.activity.store');
//client-case / documents
Route::post('client-cases/{client_case:uuid}/documents', [ClientCaseContoller::class, 'storeDocument'])->name('clientCase.document.store');
Route::get('client-cases/{client_case:uuid}/documents/{document:uuid}/view', [ClientCaseContoller::class, 'viewDocument'])->name('clientCase.document.view');
Route::get('client-cases/{client_case:uuid}/documents/{document:uuid}/download', [ClientCaseContoller::class, 'downloadDocument'])->name('clientCase.document.download');
//settings
Route::get('settings', [SettingController::class, 'index'])->name('settings');
Route::post('settings/actions', [SettingController::class, 'storeAction'])->name('settings.actions.store');
Route::put('settings/actions/{id}', [SettingController::class, 'updateAction'])->name('settings.actions.update');
Route::post('settings/decisions', [SettingController::class, 'storeDecision'])->name('settings.decisions.store');
Route::put('settings/decisions/{id}', [SettingController::class, 'updateDecision'])->name('settings.decisions.update');
// imports
Route::get('imports/create', [ImportController::class, 'create'])->name('imports.create');
Route::get('imports', [ImportController::class, 'index'])->name('imports.index');
Route::get('imports/import/{import:uuid}', [ImportController::class, 'show'])->name('imports.continue');
Route::post('imports', [ImportController::class, 'store'])->name('imports.store');
Route::get('imports/{import}/columns', [ImportController::class, 'columns'])->name('imports.columns');
Route::post('imports/{import}/process', [ImportController::class, 'process'])->name('imports.process');
Route::post('imports/{import}/mappings', [ImportController::class, 'saveMappings'])->name('imports.mappings.save');
Route::get('imports/{import}/mappings', [ImportController::class, 'getMappings'])->name('imports.mappings.get');
Route::get('imports/{import}/events', [ImportController::class, 'getEvents'])->name('imports.events');
// import templates
Route::get('import-templates', [ImportTemplateController::class, 'index'])->name('importTemplates.index');
Route::get('imports/templates/create', [ImportTemplateController::class, 'create'])->name('importTemplates.create');
Route::post('import-templates', [ImportTemplateController::class, 'store'])->name('importTemplates.store');
Route::get('imports/templates/edit/{template:uuid}', [ImportTemplateController::class, 'edit'])->name('importTemplates.edit');
Route::put('import-templates/{template:uuid}', [ImportTemplateController::class, 'update'])->name('importTemplates.update');
Route::delete('import-templates/{template:uuid}', [ImportTemplateController::class, 'destroy'])->name('importTemplates.destroy');
Route::post('import-templates/{template:uuid}/mappings', [ImportTemplateController::class, 'addMapping'])->name('importTemplates.mappings.add');
Route::post('import-templates/{template:uuid}/mappings/bulk', [ImportTemplateController::class, 'bulkAddMappings'])->name('importTemplates.mappings.bulk');
Route::put('import-templates/{template:uuid}/mappings/{mapping}', [ImportTemplateController::class, 'updateMapping'])->name('importTemplates.mappings.update');
Route::delete('import-templates/{template:uuid}/mappings/{mapping}', [ImportTemplateController::class, 'deleteMapping'])->name('importTemplates.mappings.delete');
Route::post('import-templates/{template:uuid}/mappings/reorder', [ImportTemplateController::class, 'reorderMappings'])->name('importTemplates.mappings.reorder');
Route::post('import-templates/{template}/apply/{import}', [ImportTemplateController::class, 'applyToImport'])->name('importTemplates.apply');
//Route::put()
//types
Route::get('types/address', function(Request $request){
$types = App\Models\Person\AddressType::all();
return response()->json([
'types' => $types
]);
})->name('types.address');
});