diff --git a/app/Http/Controllers/ClientCaseContoller.php b/app/Http/Controllers/ClientCaseContoller.php index 361dd52..f27d439 100644 --- a/app/Http/Controllers/ClientCaseContoller.php +++ b/app/Http/Controllers/ClientCaseContoller.php @@ -121,7 +121,7 @@ public function store(Request $request) }); } - return to_route('client.show', $client); + return back()->with('success', 'Client created.')->with('flash_method', 'POST'); } public function storeContract(ClientCase $clientCase, StoreContractRequest $request) @@ -156,7 +156,7 @@ public function storeContract(ClientCase $clientCase, StoreContractRequest $requ // Preserve segment filter if present $segment = request('segment'); - return to_route('clientCase.show', ['client_case' => $clientCase, 'segment' => $segment]); + return back()->with('success', 'Contract created.')->with('flash_method', 'POST'); } public function updateContract(ClientCase $clientCase, string $uuid, UpdateContractRequest $request) @@ -222,7 +222,7 @@ public function updateContract(ClientCase $clientCase, string $uuid, UpdateContr // Preserve segment filter if present $segment = request('segment'); - return to_route('clientCase.show', ['client_case' => $clientCase, 'segment' => $segment]); + return back()->with('success', 'Contract updated.')->with('flash_method', 'PUT'); } /** @@ -322,7 +322,7 @@ public function storeActivity(ClientCase $clientCase, Request $request) // Stay on the current page (desktop or phone) instead of forcing a redirect to the desktop route. // Use 303 to align with Inertia's recommended POST/Redirect/GET behavior. - return back(303)->with('success', 'Successful created!'); + return back(303)->with('success', 'Successful created!')->with('flash_method', 'POST'); } catch (QueryException $e) { logger()->error('Database error occurred:', ['error' => $e->getMessage()]); @@ -348,7 +348,7 @@ public function deleteActivity(ClientCase $clientCase, \App\Models\Activity $act }); return back()->with('success', 'Activity deleted.'); - } + } public function deleteContract(ClientCase $clientCase, string $uuid, Request $request) { @@ -357,7 +357,7 @@ public function deleteContract(ClientCase $clientCase, string $uuid, Request $re // Preserve segment filter if present $segment = request('segment'); - return to_route('clientCase.show', ['client_case' => $clientCase, 'segment' => $segment]); + return to_route('clientCase.show', ['client_case' => $clientCase, 'segment' => $segment])->with('flash_method', 'DELETE'); } public function updateContractSegment(ClientCase $clientCase, string $uuid, Request $request) @@ -395,7 +395,7 @@ public function updateContractSegment(ClientCase $clientCase, string $uuid, Requ } }); - return back()->with('success', 'Contract segment updated.'); + return back()->with('success', 'Contract segment updated.')->with('flash_method', 'PATCH'); } public function attachSegment(ClientCase $clientCase, Request $request) @@ -446,7 +446,7 @@ public function attachSegment(ClientCase $clientCase, Request $request) } }); - return back()->with('success', 'Segment attached to case.'); + return back()->with('success', 'Segment attached to case.')->with('flash_method', 'PATCH'); } public function storeDocument(ClientCase $clientCase, Request $request) @@ -500,7 +500,7 @@ public function storeDocument(ClientCase $clientCase, Request $request) \App\Jobs\GenerateDocumentPreview::dispatch($doc->id); } - return back()->with('success', 'Document uploaded.'); + return back()->with('success', 'Document uploaded.')->with('flash_method', 'POST'); } public function updateDocument(ClientCase $clientCase, Document $document, Request $request) @@ -583,7 +583,7 @@ public function updateDocument(ClientCase $clientCase, Document $document, Reque $document->save(); // Refresh documents list on page - return back()->with('success', __('Document updated.')); + return back()->with('success', 'Document updated.')->with('flash_method', 'PUT'); } public function viewDocument(ClientCase $clientCase, Document $document, Request $request) @@ -960,9 +960,7 @@ public function deleteDocument(ClientCase $clientCase, Document $document, Reque $document->delete(); // soft delete - return $request->wantsJson() - ? response()->json(['status' => 'ok']) - : back()->with('success', 'Document deleted.'); + return back()->with('success', 'Document deleted.')->with('flash_method', 'DELETE'); } /** @@ -979,9 +977,7 @@ public function deleteContractDocument(Contract $contract, Document $document, R $document->delete(); - return $request->wantsJson() - ? response()->json(['status' => 'ok']) - : back()->with('success', 'Document deleted.'); + return back()->with('success', 'Document deleted.')->with('flash_method', 'DELETE'); } /** @@ -1162,7 +1158,7 @@ public function archiveContract(ClientCase $clientCase, string $uuid, Request $r $message = $reactivateRequested ? __('contracts.reactivated') : __('contracts.archived'); - return back()->with('success', $message); + return back()->with('success', $message)->with('flash_method', 'PATCH'); } /** diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index d1261e2..017edf6 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -197,14 +197,14 @@ public function store(Request $request) // \App\Models\Person\PersonAddress::create($address); - return to_route('client'); + return back()->with('success', 'Client created')->with('flash_method', 'POST'); } public function update(Client $client, Request $request) { - return to_route('client.show', $client); + return back()->with('success', 'Client updated')->with('flash_method', 'PUT'); } /** diff --git a/app/Http/Controllers/ContractController.php b/app/Http/Controllers/ContractController.php index dcd64e0..f063ead 100644 --- a/app/Http/Controllers/ContractController.php +++ b/app/Http/Controllers/ContractController.php @@ -47,7 +47,7 @@ public function store(Request $request) }); } - return to_route('clientCase.show', $clientCase); + return back()->with('success', 'Contract created')->with('flash_method', 'POST'); } public function update(Contract $contract, Request $request){ @@ -56,6 +56,6 @@ public function update(Contract $contract, Request $request){ 'type_id' => $request->input('type_id') ]); - + return back()->with('success', 'Contract updated')->with('flash_method', 'PUT'); } } diff --git a/app/Http/Controllers/PersonController.php b/app/Http/Controllers/PersonController.php index 05d1e08..c2682e3 100644 --- a/app/Http/Controllers/PersonController.php +++ b/app/Http/Controllers/PersonController.php @@ -26,18 +26,10 @@ public function update(Person $person, Request $request) $person->update($attributes); - if ($request->header('X-Inertia')) { - return back()->with('success', 'Person updated'); - } + return back()->with('success', 'Person updated')->with('flash_method', 'PUT'); + - return response()->json([ - 'person' => [ - 'full_name' => $person->full_name, - 'tax_number' => $person->tax_number, - 'social_security_number' => $person->social_security_number, - 'description' => $person->description, - ], - ]); + } public function createAddress(Person $person, Request $request) @@ -60,13 +52,8 @@ public function createAddress(Person $person, Request $request) ], $attributes); // Support Inertia form submissions (redirect back) and JSON (for API/axios) - if ($request->header('X-Inertia')) { - return back()->with('success', 'Address created'); - } + return back()->with('success', 'Address created')->with('flash_method', 'POST'); - return response()->json([ - 'address' => \App\Models\Person\PersonAddress::with(['type'])->findOrFail($address->id), - ]); } public function updateAddress(Person $person, int $address_id, Request $request) @@ -84,13 +71,8 @@ public function updateAddress(Person $person, int $address_id, Request $request) $address->update($attributes); - if ($request->header('X-Inertia')) { - return back()->with('success', 'Address updated'); - } - - return response()->json([ - 'address' => $address, - ]); + return back()->with('success', 'Address updated')->with('flash_method', 'PUT'); + } public function deleteAddress(Person $person, int $address_id, Request $request) @@ -98,11 +80,8 @@ public function deleteAddress(Person $person, int $address_id, Request $request) $address = $person->addresses()->findOrFail($address_id); $address->delete(); // soft delete - if ($request->header('X-Inertia')) { - return back()->with('success', 'Address deleted'); - } - return response()->json(['status' => 'ok']); + return back()->with('success', 'Address deleted')->with('flash_method', 'DELETE'); } public function createPhone(Person $person, Request $request) @@ -122,7 +101,7 @@ public function createPhone(Person $person, Request $request) 'country_code' => $attributes['country_code'] ?? null, ], $attributes); - return back()->with('success', 'Phone added successfully'); + return back()->with('success', 'Phone added successfully')->with('flash_method', 'POST'); } public function updatePhone(Person $person, int $phone_id, Request $request) @@ -140,7 +119,7 @@ public function updatePhone(Person $person, int $phone_id, Request $request) $phone->update($attributes); - return back()->with('success', 'Phone updated successfully'); + return back()->with('success', 'Phone updated successfully')->with('flash_method', 'PUT'); } public function deletePhone(Person $person, int $phone_id, Request $request) @@ -148,7 +127,7 @@ public function deletePhone(Person $person, int $phone_id, Request $request) $phone = $person->phones()->findOrFail($phone_id); $phone->delete(); // soft delete - return back()->with('success', 'Phone deleted'); + return back()->with('success', 'Phone deleted')->with('flash_method', 'DELETE'); } public function createEmail(Person $person, Request $request) @@ -170,7 +149,7 @@ public function createEmail(Person $person, Request $request) 'value' => $attributes['value'], ], $attributes); - return back()->with('success', 'Email added successfully'); + return back()->with('success', 'Email added successfully')->with('flash_method', 'POST'); } public function updateEmail(Person $person, int $email_id, Request $request) @@ -191,7 +170,7 @@ public function updateEmail(Person $person, int $email_id, Request $request) $email->update($attributes); - return back()->with('success', 'Email updated successfully'); + return back()->with('success', 'Email updated successfully')->with('flash_method', 'PUT'); } public function deleteEmail(Person $person, int $email_id, Request $request) @@ -203,7 +182,7 @@ public function deleteEmail(Person $person, int $email_id, Request $request) return back()->with('success', 'Email deleted'); } - return response()->json(['status' => 'ok']); + return back()->with('success', 'Email deleted')->with('flash_method', 'DELETE'); } // TRR (bank account) CRUD @@ -225,13 +204,10 @@ public function createTrr(Person $person, Request $request) // Create without dedup (IBAN may be null or vary); could dedup by IBAN if provided $trr = $person->bankAccounts()->create($attributes); - if ($request->header('X-Inertia')) { - return back()->with('success', 'TRR added successfully'); - } + + return back()->with('success', 'TRR added successfully')->with('flash_method', 'POST'); + - return response()->json([ - 'trr' => BankAccount::findOrFail($trr->id), - ]); } public function updateTrr(Person $person, int $trr_id, Request $request) @@ -253,13 +229,8 @@ public function updateTrr(Person $person, int $trr_id, Request $request) $trr = $person->bankAccounts()->findOrFail($trr_id); $trr->update($attributes); - if ($request->header('X-Inertia')) { - return back()->with('success', 'TRR updated successfully'); - } + return back()->with('success', 'TRR updated successfully')->with('flash_method', 'PUT'); - return response()->json([ - 'trr' => $trr, - ]); } public function deleteTrr(Person $person, int $trr_id, Request $request) @@ -267,10 +238,8 @@ public function deleteTrr(Person $person, int $trr_id, Request $request) $trr = $person->bankAccounts()->findOrFail($trr_id); $trr->delete(); - if ($request->header('X-Inertia')) { - return back()->with('success', 'TRR deleted'); - } - - return response()->json(['status' => 'ok']); + + return back()->with('success', 'TRR deleted')->with('flash_method', 'DELETE'); + } } diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index eced01e..19bae44 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -57,6 +57,7 @@ public function share(Request $request): array 'error' => fn () => $request->session()->get('error'), 'warning' => fn () => $request->session()->get('warning'), 'info' => fn () => $request->session()->get('info'), + 'method' => fn () => $request->session()->get('flash_method'), // HTTP method for toast styling ], 'notifications' => function () use ($request) { try { diff --git a/resources/js/Components/DocumentEditDialog.vue b/resources/js/Components/DocumentEditDialog.vue deleted file mode 100644 index 3facc50..0000000 --- a/resources/js/Components/DocumentEditDialog.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - {{ form.errors.name }} - - - - - {{ form.errors.description }} - - - - - - - - - — Brez — (dok. pri primeru) - {{ c.reference || c.uuid }} - - {{ form.errors.contract_uuid }} - - - - \ No newline at end of file diff --git a/resources/js/Components/DocumentUploadDialog.vue b/resources/js/Components/DocumentUploadDialog.vue deleted file mode 100644 index 223a879..0000000 --- a/resources/js/Components/DocumentUploadDialog.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - Primer - Pogodba: {{ c.reference }} - - - - - - - - - - - - - - {{ localError }} - - - - Public - - - - \ No newline at end of file diff --git a/resources/js/Components/DocumentViewerDialog.vue b/resources/js/Components/DocumentViewerDialog.vue deleted file mode 100644 index c07671b..0000000 --- a/resources/js/Components/DocumentViewerDialog.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - {{ props.title }} - - - - No document to display. - - - - Close - - - diff --git a/resources/js/Components/DocumentsTable/DocumentEditDialog.vue b/resources/js/Components/DocumentsTable/DocumentEditDialog.vue new file mode 100644 index 0000000..8d7f1cc --- /dev/null +++ b/resources/js/Components/DocumentsTable/DocumentEditDialog.vue @@ -0,0 +1,181 @@ + + + + + + + + Ime + + + + + + + + + + Opis + + + + + + + + + + + + + + Javno + + + + + + + Pogodba + + + + + + + + — Brez — (dok. pri primeru) + + {{ c.reference || c.uuid }} + + + + + + + + + diff --git a/resources/js/Components/DocumentsTable/DocumentUploadDialog.vue b/resources/js/Components/DocumentsTable/DocumentUploadDialog.vue new file mode 100644 index 0000000..9e522e1 --- /dev/null +++ b/resources/js/Components/DocumentsTable/DocumentUploadDialog.vue @@ -0,0 +1,218 @@ + + + + + + + + Pripiši k + + + + + + + + Primer + + Pogodba: {{ c.reference }} + + + + + + + + + + Ime + + + + + + + + + + Opis + + + + + + + + + + Datoteka (max 25MB) + + + + + {{ localError }} + + Izbrana datoteka: {{ value.name }} ({{ (value.size / 1024).toFixed(2) }} KB) + + + + + + + + + + + Javno + + + + + + diff --git a/resources/js/Components/DocumentsTable/DocumentViewerDialog.vue b/resources/js/Components/DocumentsTable/DocumentViewerDialog.vue new file mode 100644 index 0000000..822672e --- /dev/null +++ b/resources/js/Components/DocumentsTable/DocumentViewerDialog.vue @@ -0,0 +1,33 @@ + + + + !open && $emit('close')"> + + + {{ props.title }} + + + + Ni dokumenta za prikaz. + + + Zapri + + + + diff --git a/resources/js/Components/DocumentsTable.vue b/resources/js/Components/DocumentsTable/DocumentsTable.vue similarity index 98% rename from resources/js/Components/DocumentsTable.vue rename to resources/js/Components/DocumentsTable/DocumentsTable.vue index 3832267..43ab17c 100644 --- a/resources/js/Components/DocumentsTable.vue +++ b/resources/js/Components/DocumentsTable/DocumentsTable.vue @@ -13,11 +13,11 @@ import { faTrash, faFileAlt, } from "@fortawesome/free-solid-svg-icons"; -import { ref, computed } from "vue"; +import { ref } from "vue"; import { router } from "@inertiajs/vue3"; -import DataTable from "./DataTable/DataTable.vue"; +import DataTable from "../DataTable/DataTable.vue"; import Dropdown from "@/Components/Dropdown.vue"; -import DeleteDialog from "./Dialogs/DeleteDialog.vue"; +import DeleteDialog from "../Dialogs/DeleteDialog.vue"; import { Badge } from "@/Components/ui/badge"; const props = defineProps({ @@ -253,7 +253,7 @@ function closeActions() { :hoverable="true" :show-actions="true" row-key="uuid" - empty-text="No documents." + empty-text="Ni dokumentov." empty-icon="faFileAlt" > diff --git a/resources/js/Components/PersonInfo/PersonInfoGrid.vue b/resources/js/Components/PersonInfo/PersonInfoGrid.vue index 896f8a9..9666dc8 100644 --- a/resources/js/Components/PersonInfo/PersonInfoGrid.vue +++ b/resources/js/Components/PersonInfo/PersonInfoGrid.vue @@ -1,6 +1,5 @@ + + + + + + + + diff --git a/resources/js/Components/ui/switch/index.js b/resources/js/Components/ui/switch/index.js new file mode 100644 index 0000000..c986f8a --- /dev/null +++ b/resources/js/Components/ui/switch/index.js @@ -0,0 +1 @@ +export { default as Switch } from "./Switch.vue"; diff --git a/resources/js/Pages/Cases/Partials/ActivityTable.vue b/resources/js/Pages/Cases/Partials/ActivityTable.vue index 325a1b3..af4e946 100644 --- a/resources/js/Pages/Cases/Partials/ActivityTable.vue +++ b/resources/js/Pages/Cases/Partials/ActivityTable.vue @@ -16,14 +16,14 @@ const props = defineProps({ edit: Boolean, }); -const columns = computed(() => [ - { key: "decision_dot", label: "", class: "w-[6%]" }, +const columns = [ + { key: "decision_dot", label: " ", class: "w-[6%]" }, { key: "contract", label: "Pogodba", class: "w-[14%]" }, { key: "decision", label: "Odločitev", class: "w-[26%]" }, { key: "note", label: "Opomba", class: "w-[14%]" }, { key: "promise", label: "Obljuba", class: "w-[20%]" }, { key: "user", label: "Dodal", class: "w-[10%]" }, -]); +]; const rows = computed(() => props.activities?.data || []); diff --git a/resources/js/Pages/Cases/Show.vue b/resources/js/Pages/Cases/Show.vue index 317c5c1..4283509 100644 --- a/resources/js/Pages/Cases/Show.vue +++ b/resources/js/Pages/Cases/Show.vue @@ -8,10 +8,10 @@ import ContractDrawer from "./Partials/ContractDrawer.vue"; import ContractTable from "./Partials/ContractTable.vue"; import ActivityDrawer from "./Partials/ActivityDrawer.vue"; import ActivityTable from "./Partials/ActivityTable.vue"; -import DocumentsTable from "@/Components/DocumentsTable.vue"; -import DocumentEditDialog from "@/Components/DocumentEditDialog.vue"; -import DocumentUploadDialog from "@/Components/DocumentUploadDialog.vue"; -import DocumentViewerDialog from "@/Components/DocumentViewerDialog.vue"; +import DocumentsTable from "@/Components/DocumentsTable/DocumentsTable.vue"; +import DocumentEditDialog from "@/Components/DocumentsTable/DocumentEditDialog.vue"; +import DocumentUploadDialog from "@/Components/DocumentsTable/DocumentUploadDialog.vue"; +import DocumentViewerDialog from "@/Components/DocumentsTable/DocumentViewerDialog.vue"; import { classifyDocument } from "@/Services/documents"; import { router, useForm, usePage } from "@inertiajs/vue3"; import { AngleDownIcon, AngleUpIcon } from "@/Utilities/Icons"; diff --git a/resources/js/Pages/Phone/Case/Index.vue b/resources/js/Pages/Phone/Case/Index.vue index eced2f6..e1314ba 100644 --- a/resources/js/Pages/Phone/Case/Index.vue +++ b/resources/js/Pages/Phone/Case/Index.vue @@ -4,7 +4,7 @@ import SectionTitle from "@/Components/SectionTitle.vue"; import PersonDetailPhone from "@/Components/PersonDetailPhone.vue"; // Removed table-based component for phone; render a list instead // import DocumentsTable from '@/Components/DocumentsTable.vue'; -import DocumentViewerDialog from "@/Components/DocumentViewerDialog.vue"; +import DocumentViewerDialog from "@/Components/DocumentsTable/DocumentViewerDialog.vue"; import { classifyDocument } from "@/Services/documents"; import { reactive, ref, computed, watch, onMounted } from "vue"; import DialogModal from "@/Components/DialogModal.vue";