<?php

use App\Models\{Address, Country};
use Livewire\Component;
use Livewire\Attributes\Title;
use Mary\Traits\Toast;
use Illuminate\Support\Collection;
use App\Traits\ManageAddress;
use Illuminate\Support\Facades\Auth;

new #[Title('Modifier l\'adresse')]
class extends Component {
    use Toast, ManageAddress;

    /*
     * L'adresse à modifier.
     */
    public Address $myAddress;

    /*
     * Initialise le composant avec l'adresse à modifier.
     */
    public function mount(Address $address): void
    {
        if ($address->user_id !== Auth::id()) {
            abort(403);
        }

        $this->myAddress = $address;
        $this->fill($this->myAddress);
        $this->countries = Country::all();
        $this->country = $this->countries->find($this->country_id); // ✅ Charge le pays correspondant à l'adresse
    }

    /**
     * Enregistre les modifications de l'adresse.
     * @return void
     */
    public function save(): void
    {
        $data = $this->validate($this->rules());

        $this->myAddress->update($data);

        $this->success(__('Adresse mise à jour avec succès.'), redirectTo: route('addresses'));
    }
}; ?>

<div class="max-w-3xl mx-auto py-8 px-4 space-y-6">
    {{-- En-tête de la page --}}
    <x-header
        title="{!! __('Modifier l\'adresse') !!}"
        subtitle="{{ __('Mettez à jour vos informations de livraison ou de facturation') }}"
        separator
    >
        <x-slot:actions>
            <x-button
                label="{{ __('Retour aux adresses') }}"
                icon="o-arrow-left"
                link="{{ route('addresses') }}"
                class="btn-ghost btn-sm"
            />
        </x-slot:actions>
    </x-header>

    {{-- Carte du formulaire --}}
    <x-card class="shadow-xl bg-base-100 overflow-hidden" separator progress-indicator>
        <x-addresses.form
            :civilities="$civilities"
            :countries="$countries"
            :professionnal="$professionnal"
            :country="$country"
        />
    </x-card>
</div>
