Passa al contenuto principale

Admin UX

Miglioramenti all'interfaccia amministrativa introdotti con la PR #118 (aprile 2026) e iterazioni successive.

Lista assistenti/agenti

Nella tabella /assistants e /agents, per gli admin globali (senza company_id):

  • La colonna Azienda è un link cliccabile verso companies.edit
  • Accanto al nome azienda viene mostrato il badge del piano (Free, Starter, Plus, Professional, oppure piani custom tramite <x-badge-custom>)
resources/views/modules/assistants-agents/index.blade.php
<a href="{{ route('companies.edit', $model->company->id) }}"
class="font-semibold hover:opacity-75">
{{ $model->company->name }}
</a>

Lista utenti

Nella tabella /users, la colonna azienda dell'utente linka alla pagina di modifica dell'azienda associata.

Lista aziende

Il nome azienda nella tabella /companies linka direttamente a companies.edit.

Card abbonamento (sola lettura)

Nella pagina di modifica azienda (/companies/{id}/edit), sotto il form principale, è presente una card Abbonamento (sola lettura) che mostra:

CampoDescrizione
PianoBadge del piano attivo (Free/Starter/Plus/Professional/Custom)
AssistentiContatore con barra di progresso (usati / limite)
MessaggiContatore mensile con barra di progresso
Data scadenzaFine periodo abbonamento

La card è informativa: la modifica del piano avviene tramite il form principale (subscription_plan_id) o via Stripe/portale clienti.

Bulk delete

Utenti (/users)

  • Selezione multipla con checkbox (Alpine.js)
  • Pulsante "Elimina selezionati" apre modale di conferma
  • Route: DELETE /users/bulk-destroy
  • Protezione: non è possibile eliminare il proprio account dalla selezione
  • Pulizia automatica: inviti associati e TermsAcceptance vengono rimossi
app/Http/Controllers/UserController.php
public function bulkDestroy(Request $request)
{
$ids = collect($request->input('ids'))
->reject(fn (int $id) => $id === Auth::id())
->values()->all();
// ...
}

Aziende (/companies)

  • Selezione multipla con checkbox
  • Modale con opzioni aggiuntive:
    • Elimina utenti associati (delete_users)
    • Elimina risorse associate (delete_associated — assistenti, agenti, file, ecc.)
  • Route: DELETE /companies/bulk-destroy
  • Delega a CompanyDeletionService::deleteCompanies()

Componenti UI

  • x-penguin-modal — modale di conferma per operazioni bulk
  • x-settings-section — sezioni impostazioni raggruppate (usato anche nel contact form)
  • Selezione Alpine con eventi open-modal custom per aprire le modali

Checklist regressione

Per verificare che le interazioni Alpine funzionino dopo un deploy:

  1. /users — multi-select, select-all, modale bulk delete, annulla
  2. /companies — multi-select, modale con opzioni delete_users/delete_associated
  3. /assistants — link azienda cliccabile, badge piano visibile
  4. /companies/{id}/edit — card abbonamento con progress bar

Vedi Alpine regression checklist nel repo neting-ai.