143 lines
6.0 KiB
PHP
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
|