<?php

use App\Models\Consultation;
use Livewire\Volt\Component;

new class extends Component
{
    public function with(): array
    {
        return [
            'todaySchedule' => Consultation::approved()
                ->whereDate('booking_date', today())
                ->with('user:id,full_name')
                ->orderBy('booking_time')
                ->get(),
        ];
    }

    public function markComplete(int $consultationId): void
    {
        $consultation = Consultation::findOrFail($consultationId);
        $consultation->markAsCompleted();
    }

    public function markNoShow(int $consultationId): void
    {
        $consultation = Consultation::findOrFail($consultationId);
        $consultation->markAsNoShow();
    }
}; ?>

<div wire:poll.30s>
    <flux:heading size="sm" class="mb-4">{{ __('widgets.todays_schedule') }}</flux:heading>

    @forelse ($todaySchedule as $consultation)
        <div wire:key="schedule-{{ $consultation->id }}" class="flex items-center justify-between border-b border-zinc-100 py-2 last:border-0 dark:border-zinc-700">
            <div>
                <div class="font-medium text-zinc-900 dark:text-zinc-100">
                    {{ \Carbon\Carbon::parse($consultation->booking_time)->format('g:i A') }}
                </div>
                <div class="flex items-center gap-2 text-sm text-zinc-500 dark:text-zinc-400">
                    <span>{{ $consultation->user?->full_name ?? __('widgets.unknown_client') }}</span>
                    <flux:badge size="sm">{{ $consultation->consultation_type->label() }}</flux:badge>
                </div>
            </div>
            <div class="flex gap-2">
                <flux:button
                    size="xs"
                    wire:click="markComplete({{ $consultation->id }})"
                    wire:loading.attr="disabled"
                >
                    {{ __('widgets.complete') }}
                </flux:button>
                <flux:button
                    size="xs"
                    variant="danger"
                    wire:click="markNoShow({{ $consultation->id }})"
                    wire:loading.attr="disabled"
                >
                    {{ __('widgets.no_show') }}
                </flux:button>
            </div>
        </div>
    @empty
        <flux:text class="text-zinc-500 dark:text-zinc-400">{{ __('widgets.no_consultations_today') }}</flux:text>
    @endforelse
</div>
