Publication initiale de RelaisSMS : documentation et sources nettoyees
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\SmsCampaign;
|
||||
use App\Services\Sms\SmsCampaignReconciler;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class ReconcileSmsCampaignsCommand extends Command
|
||||
{
|
||||
protected $signature = 'sms-campaigns:reconcile {--limit=50 : Nombre maximum de campagnes a verifier.}';
|
||||
|
||||
protected $description = 'Verifie les envois incertains dans l historique OVH sans renvoyer de SMS.';
|
||||
|
||||
public function handle(SmsCampaignReconciler $reconciler): int
|
||||
{
|
||||
$processed = 0;
|
||||
SmsCampaign::query()
|
||||
->where('provider', 'ovh')
|
||||
->where(function (Builder $query): void {
|
||||
$query->where('status', 'uncertain')
|
||||
->orWhere(fn (Builder $query): Builder => $query->where('status', 'sending')->where('updated_at', '<', now()->subMinutes(10)));
|
||||
})
|
||||
->orderBy('updated_at')
|
||||
->limit(max(1, (int) $this->option('limit')))
|
||||
->get()
|
||||
->each(function (SmsCampaign $campaign) use ($reconciler, &$processed): void {
|
||||
if ($campaign->status === 'sending') {
|
||||
$campaign->update([
|
||||
'status' => 'uncertain',
|
||||
'error_message' => 'Envoi interrompu avant confirmation. Verification OVH necessaire ; ne pas renvoyer cette campagne.',
|
||||
]);
|
||||
$campaign->deliveries()->where('status', 'queued')->update(['status' => 'uncertain']);
|
||||
}
|
||||
$reconciler->reconcile($campaign);
|
||||
$processed++;
|
||||
});
|
||||
|
||||
$this->line($processed.' campagne(s) verifiee(s), sans nouvel envoi.');
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user