Files
RelaisSMS/resources/views/sms-campaigns/show.blade.php
T

143 lines
6.0 KiB
PHP

@extends('layouts.app')
@section('content')
@php
$displayTimezone = config('relais_sms.default_settings.display_timezone', 'Europe/Paris');
$statusLabels = [
'draft' => 'Brouillon',
'scheduled' => 'Programme',
'sending' => 'Envoi',
'uncertain' => 'A verifier',
'sent' => 'Envoye',
'partial' => 'Partiel',
'failed' => 'Echec',
'canceled' => 'Annule',
'queued' => 'En attente',
];
@endphp
<section class="page-wrap">
<header class="topbar">
<div class="title">
<a href="{{ route('sms-campaigns.index') }}" class="link">Retour a l'historique</a>
<h1 class="h-offset">Campagne #{{ $campaign->id }}</h1>
<p>{{ $campaign->created_at->format('d/m/Y H:i') }} par {{ $campaign->user?->name ?: 'Utilisateur supprime' }}</p>
</div>
<div class="actions">
@if ($campaign->status === 'scheduled')
<form method="POST" action="{{ route('sms-campaigns.cancel', $campaign) }}">
@csrf
@method('PATCH')
<button
type="submit"
class="secondary"
onclick="return confirm('Annuler cette campagne programmee ?')"
>
Annuler
</button>
</form>
@endif
<span class="badge {{ in_array($campaign->status, ['failed', 'partial', 'canceled'], true) ? 'error' : (in_array($campaign->status, ['scheduled', 'uncertain'], true) ? 'pending' : '') }}">
{{ $statusLabels[$campaign->status] ?? $campaign->status }}
</span>
</div>
</header>
<div class="stats-grid three">
<div class="stat-card">
<span>Destinataires</span>
<strong>{{ $campaign->recipients_count }}</strong>
</div>
<div class="stat-card">
<span>Envoyes</span>
<strong>{{ $campaign->sent_count }}</strong>
</div>
<div class="stat-card">
<span>Echecs</span>
<strong>{{ $campaign->failed_count }}</strong>
</div>
</div>
@if ($campaign->status === 'uncertain')
<p class="notice">{{ $campaign->recipients_count - $campaign->sent_count - $campaign->failed_count }} destinataire(s) a verifier. Un delai d attente ne signifie pas que les SMS ont echoue. La verification automatique consulte OVH sans renvoyer de SMS. Ne pas renvoyer cette campagne.</p>
@endif
<div class="panel">
<div class="panel-header">
<h2>Message</h2>
</div>
<div class="panel-body">
<p class="message-text">{{ $campaign->message }}</p>
@if ($campaign->error_message)
<p class="notice {{ $campaign->status === 'uncertain' ? '' : 'error' }} mt-md">{{ $campaign->error_message }}</p>
@endif
</div>
</div>
<div class="panel">
<div class="panel-header">
<h2>Audit</h2>
</div>
<dl class="panel-body form-grid cols-2 audit-list">
<div>
<dt class="audit-term">Utilisateur</dt>
<dd class="audit-value">{{ $campaign->user?->name ?: 'Utilisateur supprime' }}</dd>
</div>
<div>
<dt class="audit-term">Cree le</dt>
<dd class="audit-value">{{ $campaign->created_at->format('d/m/Y H:i') }}</dd>
</div>
<div>
<dt class="audit-term">Programme le</dt>
<dd class="audit-value">{{ $campaign->scheduled_at?->timezone($displayTimezone)->format('d/m/Y H:i') ?: 'Non programme' }}</dd>
</div>
<div>
<dt class="audit-term">Annule le</dt>
<dd class="audit-value">{{ $campaign->canceled_at?->timezone($displayTimezone)->format('d/m/Y H:i') ?: 'Non annule' }}</dd>
</div>
<div>
<dt class="audit-term">Groupes selectionnes</dt>
<dd class="audit-value">{{ implode(', ', $campaign->selected_group_names ?? []) ?: 'Aucun groupe' }}</dd>
</div>
</dl>
</div>
<div class="panel">
<div class="panel-header">
<h2>Destinataires</h2>
</div>
<div class="table-wrap">
<table class="data-table">
<thead>
<tr>
<th>Contact</th>
<th>Numero</th>
<th>Statut</th>
</tr>
</thead>
<tbody>
@foreach ($campaign->deliveries as $delivery)
<tr>
<td>
{{ $delivery->contact_name }}
<div class="muted truncate">{{ $delivery->provider_message_id ?: $delivery->error_message }}</div>
</td>
<td>{{ $delivery->number }}</td>
<td>
<span class="badge {{ in_array($delivery->status, ['failed', 'canceled'], true) ? 'error' : (in_array($delivery->status, ['queued', 'uncertain'], true) ? 'pending' : '') }}">
{{ $statusLabels[$delivery->status] ?? $delivery->status }}
</span>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</section>
@endsection