diff --git a/app/Models/Client.php b/app/Models/Client.php index 9db993a..1bdfa0c 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enums\ClientStatus; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -30,11 +31,9 @@ class Client extends Model ->withPivot('is_primary'); } - public function primaryContact(): BelongsToMany + protected function primaryContact(): Attribute { - return $this->belongsToMany(Contact::class) - ->wherePivot('is_primary', true) - ->withPivot('is_primary'); + return Attribute::get(fn () => $this->contacts()->wherePivot('is_primary', true)->first()); } public function invoices(): HasMany diff --git a/app/Models/Contact.php b/app/Models/Contact.php index 24099c6..c881387 100644 --- a/app/Models/Contact.php +++ b/app/Models/Contact.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Casts\PhoneNumberCast; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -27,4 +28,11 @@ class Contact extends Model { return Invoice::whereIn('client_id', $this->clients()->pluck('clients.id')); } + + protected function fullName(): Attribute + { + return Attribute::make( + get: fn (mixed $value, array $attributes) => $attributes['first_name'].' '.$attributes['last_name'], + ); + } } diff --git a/resources/views/components/⚡client-list.blade.php b/resources/views/components/⚡client-list.blade.php index c29ee17..9604b2c 100644 --- a/resources/views/components/⚡client-list.blade.php +++ b/resources/views/components/⚡client-list.blade.php @@ -25,7 +25,9 @@ new class extends Component { #[On('client-created')] #[On('client-updated')] - public function refresh(): void {} + public function refresh(): void + { + } #[Computed] public function clients() @@ -47,6 +49,9 @@ new class extends Component { wire:click="sort('abbreviation')"> Abbreviation + + Contacts + Audition Date @@ -67,6 +72,17 @@ new class extends Component { {{ $client->name }} {{ $client->abbreviation ?? '' }} + + @if($client->primary_contact) +
+ + {{ $client->primary_contact?->full_name }} +
+ @endif + @foreach($client->secondaryContacts as $contact) +

{{ $contact->full_name }}

+ @endforeach +
{{ $client->audition_date?->local()->format('m/d/Y') ?? '' }} @@ -82,7 +98,18 @@ new class extends Component { - Edit + Edit Client + + + + Add Contact + + Remove Contact +