Publication initiale de RelaisSMS : documentation et sources nettoyees
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
@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
|
||||
Reference in New Issue
Block a user