242 lines
16 KiB
PHP
242 lines
16 KiB
PHP
<x-filament-panels::page>
|
|
<div class="space-y-6">
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<div class="flex flex-wrap items-center justify-between gap-2">
|
|
<div>
|
|
<h2 class="text-base font-semibold">Inserimento rapido Post-it</h2>
|
|
<p class="text-sm text-gray-500">Questa pagina e dedicata all'inserimento. La gestione completa e separata.</p>
|
|
</div>
|
|
<div class="flex flex-wrap gap-2">
|
|
<a href="{{ $this->getGestionePostItUrl() }}" class="inline-flex items-center rounded-md bg-indigo-700 px-3 py-1.5 text-xs font-medium text-white hover:bg-indigo-600">Apri Gestione Post-it</a>
|
|
<a href="{{ $this->getGestioneTicketUrl() }}" class="inline-flex items-center rounded-md bg-emerald-700 px-3 py-1.5 text-xs font-medium text-white hover:bg-emerald-600">Apri Gestione Ticket</a>
|
|
</div>
|
|
</div>
|
|
|
|
@if(! $this->isPostItTableReady())
|
|
<div class="mt-3 rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm text-amber-800">
|
|
Tabella chiamate non pronta. In questa modalita puoi comunque creare ticket diretti dal form.
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<h2 class="text-base font-semibold">Nuova chiamata</h2>
|
|
<p class="mb-4 text-sm text-gray-500">Annota rapidamente la chiamata e trasformala in ticket quando serve.</p>
|
|
|
|
<div class="grid gap-4 md:grid-cols-2">
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Ricerca chiamante (telefono o nome)</span>
|
|
<input type="text" wire:model.live.debounce.300ms="ricercaChiamante" class="w-full rounded-lg border-gray-300" placeholder="Es. +39 333 1234567 oppure Mario Rossi" />
|
|
<span class="mt-1 block text-xs text-gray-500">Seleziona un risultato per precompilare i campi sotto.</span>
|
|
</label>
|
|
|
|
@if($suggerimentiRubrica->count() > 0)
|
|
<div class="md:col-span-2 grid gap-2">
|
|
@foreach($suggerimentiRubrica as $s)
|
|
<button type="button" wire:click="selezionaSuggerimentoRubrica({{ (int) $s->id }})" class="rounded-lg border p-3 text-left {{ (int) $selectedSuggerimentoId === (int) $s->id ? 'border-emerald-400 bg-emerald-50 ring-1 ring-emerald-200' : 'bg-white hover:bg-gray-50' }}">
|
|
<div class="text-sm font-medium">{{ $s->nome_completo ?: ($s->ragione_sociale ?: 'Contatto') }}</div>
|
|
<div class="text-xs text-gray-600">
|
|
{{ $s->telefono_cellulare ?: $s->telefono_ufficio ?: $s->telefono_casa ?: 'Telefono non disponibile' }}
|
|
@if($s->categoria)
|
|
· {{ $s->categoria }}
|
|
@endif
|
|
</div>
|
|
</button>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Telefono</span>
|
|
<input type="text" wire:model.live.debounce.400ms="telefono" class="w-full rounded-lg border-gray-300" placeholder="+39..." />
|
|
</label>
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Nome chiamante</span>
|
|
<input type="text" wire:model.defer="nomeChiamante" class="w-full rounded-lg border-gray-300" placeholder="Nome e cognome" />
|
|
</label>
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Direzione</span>
|
|
<select wire:model.defer="direzione" class="w-full rounded-lg border-gray-300">
|
|
<option value="in_arrivo">In arrivo</option>
|
|
<option value="in_uscita">In uscita</option>
|
|
<option value="persa">Persa</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Esito</span>
|
|
<input type="text" wire:model.defer="esito" class="w-full rounded-lg border-gray-300" placeholder="Es. richiamare domani" />
|
|
</label>
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Oggetto</span>
|
|
<input type="text" wire:model.defer="oggetto" class="w-full rounded-lg border-gray-300" placeholder="Es. perdita acqua scala B" />
|
|
</label>
|
|
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Priorita</span>
|
|
<select wire:model.defer="priorita" class="w-full rounded-lg border-gray-300">
|
|
<option value="Bassa">Bassa</option>
|
|
<option value="Media">Media</option>
|
|
<option value="Alta">Alta</option>
|
|
<option value="Urgente">Urgente</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Nota</span>
|
|
<textarea rows="4" wire:model.defer="nota" class="w-full rounded-lg border-gray-300" placeholder="Dettagli della chiamata..."></textarea>
|
|
</label>
|
|
</div>
|
|
|
|
@if($rubricaId || $stabileId)
|
|
<div class="mt-3 rounded-lg border border-green-200 bg-green-50 p-3 text-sm text-green-800">
|
|
Match trovato:
|
|
@if($rubricaId)
|
|
contatto #{{ $rubricaId }}
|
|
@endif
|
|
@if($stabileId)
|
|
- stabile #{{ $stabileId }}
|
|
@endif
|
|
</div>
|
|
@endif
|
|
|
|
<div class="mt-4 flex flex-wrap gap-2">
|
|
<x-filament::button wire:click="salvaPostIt">Salva Post-it</x-filament::button>
|
|
<x-filament::button color="success" wire:click="salvaEConvertiInTicket">Salva e crea ticket</x-filament::button>
|
|
</div>
|
|
</div>
|
|
|
|
@if($this->isPostItTableReady())
|
|
<div class="grid gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(320px,1fr)]">
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<div class="mb-3 flex items-center justify-between gap-2">
|
|
<div>
|
|
<h2 class="text-base font-semibold">Post-it recenti</h2>
|
|
<p class="text-sm text-gray-500">Seleziona un Post-it per gestirlo o assegnarlo direttamente.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="space-y-3">
|
|
@forelse($this->recenti as $gruppo)
|
|
@php($riga = $gruppo['primary'])
|
|
<button type="button" wire:click="selectPostIt({{ (int) $riga->id }})" class="block w-full rounded-lg border p-3 text-left {{ ($gruppo['contains_selected'] ?? false) ? 'border-emerald-400 bg-emerald-50 ring-1 ring-emerald-200' : 'hover:bg-gray-50' }}">
|
|
<div class="flex flex-wrap items-start justify-between gap-2">
|
|
<div>
|
|
<div class="font-medium">{{ $gruppo['caller_label'] ?: ($riga->oggetto ?: 'Senza oggetto') }}</div>
|
|
<div class="text-sm text-gray-600">
|
|
@if(!empty($gruppo['phone']))
|
|
{{ $gruppo['phone'] }}
|
|
@elseif($riga->nome_chiamante)
|
|
{{ $riga->nome_chiamante }}
|
|
@endif
|
|
@if($riga->stabile)
|
|
· {{ $riga->stabile->denominazione ?: ('Stabile #' . $riga->stabile->id) }}
|
|
@endif
|
|
</div>
|
|
</div>
|
|
<div class="text-xs text-gray-500">{{ $gruppo['latest_at'] ?? optional($riga->chiamata_il)->format('d/m/Y H:i') }}</div>
|
|
</div>
|
|
|
|
<div class="mt-2 flex flex-wrap gap-2 text-[11px]">
|
|
<span class="rounded-md bg-slate-100 px-2 py-1 text-slate-700">{{ (int) ($gruppo['count'] ?? 1) }} chiamate</span>
|
|
<span class="rounded-md bg-slate-100 px-2 py-1 text-slate-700">{{ $riga->stato }}</span>
|
|
<span class="rounded-md bg-blue-100 px-2 py-1 text-blue-800">{{ $riga->priorita }}</span>
|
|
@if($riga->assegnazione_tipo)
|
|
<span class="rounded-md bg-amber-100 px-2 py-1 text-amber-800">Assegnato a {{ $riga->assegnazione_tipo }}</span>
|
|
@endif
|
|
@if($riga->assegnatoAUser)
|
|
<span class="rounded-md bg-emerald-100 px-2 py-1 text-emerald-800">{{ $riga->assegnatoAUser->name }}</span>
|
|
@endif
|
|
@if($riga->assegnatoAFornitore)
|
|
<span class="rounded-md bg-emerald-100 px-2 py-1 text-emerald-800">{{ $riga->assegnatoAFornitore->ragione_sociale ?: trim(($riga->assegnatoAFornitore->nome ?? '') . ' ' . ($riga->assegnatoAFornitore->cognome ?? '')) }}</span>
|
|
@endif
|
|
@if($riga->ticket_id)
|
|
<span class="rounded-md bg-indigo-100 px-2 py-1 text-indigo-800">Ticket #{{ (int) $riga->ticket_id }}</span>
|
|
@endif
|
|
</div>
|
|
</button>
|
|
@empty
|
|
<div class="rounded-lg border border-dashed p-4 text-sm text-gray-500">Nessun Post-it recente.</div>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<h2 class="text-base font-semibold">Assegnazione Post-it</h2>
|
|
@if(! $this->isPostItAssignmentReady())
|
|
<div class="mt-3 rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm text-amber-800">Assegnazione disponibile dopo l'applicazione della nuova migrazione Post-it nel normale flusso di aggiornamento.</div>
|
|
@elseif($this->selectedPostIt)
|
|
<div class="mt-3 rounded-lg border bg-slate-50 p-3 text-sm text-slate-700">
|
|
<div class="font-medium">Post-it #{{ (int) $this->selectedPostIt->id }} · {{ $this->selectedPostIt->oggetto ?: 'Senza oggetto' }}</div>
|
|
<div class="mt-1 text-xs text-slate-500">
|
|
{{ $this->selectedPostIt->nome_chiamante ?: 'Chiamante non identificato' }}
|
|
@if($this->selectedPostIt->telefono)
|
|
· {{ $this->selectedPostIt->telefono }}
|
|
@endif
|
|
@if($this->selectedPostIt->ticket_id)
|
|
· Ticket #{{ (int) $this->selectedPostIt->ticket_id }}
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-4 space-y-4">
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Tipo assegnazione</span>
|
|
<select wire:model.live="assegnazioneTipo" class="w-full rounded-lg border-gray-300">
|
|
<option value="operatore">Operatore</option>
|
|
<option value="fornitore">Fornitore</option>
|
|
<option value="collaboratore">Collaboratore dello studio</option>
|
|
</select>
|
|
</label>
|
|
|
|
@if($assegnazioneTipo === 'operatore')
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Operatore</span>
|
|
<select wire:model="assegnazioneUserId" class="w-full rounded-lg border-gray-300">
|
|
<option value="">Seleziona operatore</option>
|
|
@foreach($this->operatoriOptions as $id => $label)
|
|
<option value="{{ $id }}">{{ $label }}</option>
|
|
@endforeach
|
|
</select>
|
|
</label>
|
|
@elseif($assegnazioneTipo === 'collaboratore')
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Collaboratore</span>
|
|
<select wire:model="assegnazioneUserId" class="w-full rounded-lg border-gray-300">
|
|
<option value="">Seleziona collaboratore</option>
|
|
@foreach($this->collaboratoriOptions as $id => $label)
|
|
<option value="{{ $id }}">{{ $label }}</option>
|
|
@endforeach
|
|
</select>
|
|
</label>
|
|
@else
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Fornitore</span>
|
|
<select wire:model="assegnazioneFornitoreId" class="w-full rounded-lg border-gray-300">
|
|
<option value="">Seleziona fornitore</option>
|
|
@foreach($this->fornitoriOptions as $id => $label)
|
|
<option value="{{ $id }}">{{ $label }}</option>
|
|
@endforeach
|
|
</select>
|
|
</label>
|
|
@endif
|
|
|
|
<div class="flex flex-wrap gap-2">
|
|
<x-filament::button wire:click="assegnaPostIt">Salva assegnazione</x-filament::button>
|
|
@if($this->selectedPostIt->ticket_id)
|
|
<a href="{{ \App\Filament\Pages\Supporto\TicketGestione::getUrl(panel: 'admin-filament') }}#ticket-{{ (int) $this->selectedPostIt->ticket_id }}" class="inline-flex items-center rounded-md border px-3 py-2 text-sm">Apri ticket collegato</a>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@else
|
|
<div class="mt-3 rounded-lg border border-dashed p-4 text-sm text-gray-500">Seleziona un Post-it recente per assegnarlo.</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</x-filament-panels::page>
|