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::delete('person/{person:uuid}/address/{address_id}', [PersonController::class, 'deleteAddress'])->name('person.address.delete'); 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::delete('person/{person:uuid}/phone/{phone_id}', [PersonController::class, 'deletePhone'])->name('person.phone.delete'); 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'); Route::delete('person/{person:uuid}/email/{email_id}', [PersonController::class, 'deleteEmail'])->name('person.email.delete'); // TRR (Bank account) endpoints Route::post('person/{person:uuid}/trr', [PersonController::class, 'createTrr'])->name('person.trr.create'); Route::put('person/{person:uuid}/trr/{trr_id}', [PersonController::class, 'updateTrr'])->name('person.trr.update'); Route::delete('person/{person:uuid}/trr/{trr_id}', [PersonController::class, 'deleteTrr'])->name('person.trr.delete'); //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 / contract / objects Route::post('client-cases/{client_case:uuid}/contract/{uuid}/objects', [CaseObjectController::class, 'store'])->name('clientCase.contract.object.store'); Route::put('client-cases/{client_case:uuid}/objects/{id}', [CaseObjectController::class, 'update'])->name('clientCase.object.update'); Route::delete('client-cases/{client_case:uuid}/objects/{id}', [CaseObjectController::class, 'destroy'])->name('clientCase.object.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'); });