74 lines
2.6 KiB
PHP
74 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Bo;
|
|
|
|
use Carbon\Carbon;
|
|
use App\Models\Site;
|
|
use App\Models\Ticket;
|
|
use App\Mail\NewTicket;
|
|
use Illuminate\Http\Request;
|
|
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]);
|
|
}
|
|
}
|
|
|
|
$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,
|
|
'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]);
|
|
}
|
|
}
|