<?php

use App\Models\Address;
use Livewire\Component;
use Illuminate\Support\Collection;
use Livewire\Attributes\Title;
use Illuminate\Support\Facades\Auth;

new #[Title('Mes adresses')]
class extends Component {

    public function deleteAddress(Address $address): void
    {
        // Sécurité : Vérifier que l'adresse appartient bien à l'utilisateur connecté
        if ($address->user_id !== Auth::id()) {
            abort(403);
        }

        $address->delete();

        $this->success(__('Adresse supprimée avec succès.'));
    }

    public function with(): array
    {
        return [
            'addresses' => Auth::user()->addresses()->with('country')->get(),
        ];
    }

}; ?>

<div class="max-w-5xl mx-auto py-8 px-4 space-y-6">
    {{-- En-tête de la page --}}
    <x-header title="{{ __('Mes adresses') }}" subtitle="{{ __('Gérez vos adresses de livraison et de facturation') }}" separator>
        <x-slot:actions>
            <x-button
                label="{{ __('Ajouter une adresse') }}"
                icon="o-plus"
                link="{{ route('addresses.create') }}"
                class="btn-primary btn-sm"
            />
        </x-slot:actions>
    </x-header>

    {{-- Liste des adresses --}}
    @if($addresses->isNotEmpty())
        <div class="grid gap-6 grid-cols-1 md:grid-cols-2">
            @foreach ($addresses as $address)
                <x-card
                    class="shadow-sm hover:shadow-md transition-all duration-200 border border-base-200 hover:border-primary/50 bg-base-100"
                >
                    {{-- Composant d'affichage de l'adresse --}}
                    <div class="pb-2">
                        <x-address :address="$address" />
                    </div>

                    <x-slot:actions class="pt-2 border-t border-base-200 justify-end gap-1">
                        <x-button
                            icon="o-pencil"
                            link="{{ route('addresses.edit', $address) }}"
                            class="btn-ghost btn-circle btn-xs text-base-content/70 hover:text-primary"
                            tooltip="{{ __('Modifier') }}"
                        />

                        <x-button
                            icon="o-trash"
                            wire:click="deleteAddress({{ $address->id }})"
                            wire:confirm="{{ __('Êtes-vous sûr de vouloir supprimer cette adresse ?') }}"
                            spinner="deleteAddress({{ $address->id }})"
                            class="btn-ghost btn-circle btn-xs text-error"
                            tooltip="{{ __('Supprimer') }}"
                        />
                    </x-slot:actions>
                </x-card>
            @endforeach
        </div>
    @else
        {{-- État vide (Aucune adresse) --}}
        <x-card class="text-center py-12 bg-base-100 shadow-sm border border-base-200">
            <div class="flex flex-col items-center justify-center space-y-4">
                <div class="w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center text-primary">
                    <x-icon name="o-map-pin" class="w-8 h-8" />
                </div>
                <div class="space-y-1">
                    <h3 class="font-bold text-lg">{{ __('Aucune adresse enregistrée') }}</h3>
                    <p class="text-sm text-base-content/60">
                        {{ __('Vous n\'avez pas encore ajouté d\'adresse à votre compte.') }}
                    </p>
                </div>
                <x-button
                    label="{{ __('Créer ma première adresse') }}"
                    icon="o-plus"
                    link="{{ route('addresses.create') }}"
                    class="btn-primary btn-sm mt-2"
                />
            </div>
        </x-card>
    @endif
</div>
