diff --git a/app/Exports/SegmentContractsExport.php b/app/Exports/SegmentContractsExport.php index be0462d..6da9156 100644 --- a/app/Exports/SegmentContractsExport.php +++ b/app/Exports/SegmentContractsExport.php @@ -34,6 +34,7 @@ class SegmentContractsExport extends DefaultValueBinder implements FromQuery, Sh public const COLUMN_METADATA = [ 'reference' => ['label' => 'Pogodba'], 'client_case' => ['label' => 'Primer'], + 'address' => ['label' => 'Naslov'], 'client' => ['label' => 'Stranka'], 'type' => ['label' => 'Vrsta'], 'start_date' => ['label' => 'Začetek'], @@ -107,6 +108,7 @@ private function resolveValue(Contract $contract, string $column): mixed return match ($column) { 'reference' => $contract->reference, 'client_case' => optional($contract->clientCase?->person)->full_name, + 'address' => optional($contract->clientCase?->person?->address)->address, 'client' => optional($contract->clientCase?->client?->person)->full_name, 'type' => optional($contract->type)->name, 'start_date' => $this->formatDate($contract->start_date), diff --git a/app/Http/Controllers/SegmentController.php b/app/Http/Controllers/SegmentController.php index 5fcc1b5..cd3fe1c 100644 --- a/app/Http/Controllers/SegmentController.php +++ b/app/Http/Controllers/SegmentController.php @@ -64,6 +64,12 @@ public function show(Segment $segment) ->withQueryString(); $contracts = $this->hydrateClientShortcut($contracts); + + // Hide addresses array since we're using the singular address relationship + $contracts->getCollection()->each(function ($contract) { + $contract->clientCase?->person?->makeHidden('addresses'); + $contract->clientCase?->client?->person?->makeHidden('addresses'); + }); $clients = Client::query() ->whereHas('clientCases.contracts.segments', function ($q) use ($segment) { @@ -191,8 +197,7 @@ private function buildContractsQuery(Segment $segment, ?string $search, ?string ->where('contract_segment.active', '=', 1); }) ->with([ - 'clientCase.person', - 'clientCase.client.person', + 'clientCase.person.address', 'type', 'account', ]) diff --git a/app/Models/Person/Person.php b/app/Models/Person/Person.php index f3fe192..ba4ea8a 100644 --- a/app/Models/Person/Person.php +++ b/app/Models/Person/Person.php @@ -112,6 +112,14 @@ public function addresses(): HasMany ->orderBy('id'); } + public function address(): HasOne + { + return $this->hasOne(\App\Models\Person\PersonAddress::class) + ->with(['type']) + ->where('active', '=', 1) + ->oldestOfMany('id'); + } + public function emails(): HasMany { return $this->hasMany(\App\Models\Email::class, 'person_id') diff --git a/resources/js/Pages/Segments/Show.vue b/resources/js/Pages/Segments/Show.vue index 61313ff..74432ac 100644 --- a/resources/js/Pages/Segments/Show.vue +++ b/resources/js/Pages/Segments/Show.vue @@ -49,11 +49,12 @@ const clientComboboxOpen = ref(false); const columns = [ { key: "reference", label: "Pogodba", sortable: false }, { key: "client_case", label: "Primer", sortable: false }, + { key: "address", label: "Naslov", sortable: false }, { key: "client", label: "Stranka", sortable: false }, { key: "type", label: "Vrsta", sortable: false }, { key: "start_date", label: "Začetek", sortable: false }, { key: "end_date", label: "Konec", sortable: false }, - { key: "account", label: "Stanje", align: "right", sortable: false }, + { key: "account", label: "Stanje", align: "right" }, ]; const exportDialogOpen = ref(false);