ldc-supportweb/app/Http/Controllers/Bo/BrevoController.php
2026-01-16 17:20:25 +01:00

77 lines
2.8 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use Carbon\Carbon;
use App\Models\Site;
use App\Models\Ticket;
use App\Mail\NewTicket;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
use App\Enums\Tickets\TicketTypeEnum;
use App\Enums\Tickets\TicketStatusEnum;
use App\Http\Requests\Bo\BrevoWehbookRequest;
class BrevoController extends Controller
{
public function createTicket(BrevoWehbookRequest $request)
{
$data = [];
$site = Site::where('name', 'Mailing en masse')->firstOrFail();
$formContent = $request->items[0]["ExtractedMarkdownMessage"];
$tblRegexPatterns = [
'user' => '/Matricule et Nom du demandeur\s*\|\s*([^|]+?)\s*\|/i',
'email' => '/Email du demandeur\s*\|\s*([^|]+?)\s*\|/i',
'brand' => '/Marque\s*\/\s*Filiale\s*\|\s*([^|]+?)\s*\|/i',
'subject' => '/Pour quels besoins avez-vous besoin d\'envoyer des emails en masse\s*\?\s*\|\s*([^|]+?)\s*\|/is',
'date_mep' => '/Date de première envoi souhaité\s*\|\s*([^|]+?)\s*\|/i',
'comment' => '/Commentaire\s*\|\s*([^|]+?)(?=\s*\|)/i',
];
foreach ($tblRegexPatterns as $field => $regex) {
if (preg_match($regex, $formContent, $matches)) {
$data[$field] = trim($matches[1]);
} else {
return response()->json(['reason' => "Champ manquant $field"], 422);
}
}
if ($data['date_mep']) {
$dateMep = Carbon::createFromFormat('d/m/Y', $data['date_mep'])->format('Y-m-d');
}
$ticket = new Ticket([
'site_id' => $site->id,
'type' => TicketTypeEnum::mailing->value,
'status' => TicketStatusEnum::new->value,
'date_mep' => $dateMep ?? null,
'text' => "
Bonjour,\n
Nom du demandeur : {$data['user']},
Adresse mail : {$data['email']},
Marque / Filiale concernée : {$data['brand']},
Sujet : {$data['subject']},
Date d'envoi souhaitée : {$data['date_mep']},
Commentaire : {$data['comment']},\n
Cordialement.
",
'title' => "Demande de mail en masse pour {$data['brand']}",
'is_internal' => false
]);
$ticket->user()->associate($site->projectManager);
$ticket->site()->associate($site);
$ticket->assignedUser()->associate($site->projectManager);
$ticket->saveOrFail();
if (config('mail.MAIL_ADMIN')) {
Mail::to(config('mail.MAIL_ADMIN'))->send(new NewTicket($ticket));
} else {
throw new \ErrorException('Missing MAIL_ADMIN in .env');
}
return response()->json(['ok' => true]);
}
}