diff --git a/app/Mail/AlerteStock.php b/app/Mail/AlerteStock.php index 6ad87b50..525b7e83 100644 --- a/app/Mail/AlerteStock.php +++ b/app/Mail/AlerteStock.php @@ -23,14 +23,20 @@ class AlerteStock extends TemplateMailable public $seuil; + public $lien_article; + + public $lien_offre; + protected static $templateModelClass = MailTemplate::class; public function __construct($offer) { - $this->article = $offer->article->title ?? 'Article #'.$offer->article_id; + $this->article = $offer->article->name ?? 'Article #'.$offer->article_id; $this->offre = $offer->id; $this->stock_restant = $offer->stock_current; $this->seuil = $offer->minimum_ondemand; + $this->lien_article = url('/Admin/Shop/Articles/edit/'.$offer->article_id); + $this->lien_offre = url('/Admin/Shop/Offers/edit/'.$offer->id); } public function envelope() diff --git a/database/migrations/shop/2026_02_20_130000_update_mail_template_alerte_stock_add_link.php b/database/migrations/shop/2026_02_20_130000_update_mail_template_alerte_stock_add_link.php new file mode 100644 index 00000000..16fc3f33 --- /dev/null +++ b/database/migrations/shop/2026_02_20_130000_update_mail_template_alerte_stock_add_link.php @@ -0,0 +1,125 @@ +where('mailable', 'App\\Mail\\AlerteStock') + ->update([ + 'html_template' => json_encode(['fr' => $this->getHtmlTemplate()], JSON_UNESCAPED_UNICODE), + 'text_template' => json_encode(['fr' => $this->getTextTemplate()], JSON_UNESCAPED_UNICODE), + 'updated_at' => now(), + ]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('mail_templates') + ->where('mailable', 'App\\Mail\\AlerteStock') + ->update([ + 'html_template' => json_encode(['fr' => $this->getOldHtmlTemplate()], JSON_UNESCAPED_UNICODE), + 'text_template' => json_encode(['fr' => $this->getOldTextTemplate()], JSON_UNESCAPED_UNICODE), + 'updated_at' => now(), + ]); + } + + private function getHtmlTemplate(): string + { + return '' + .'
' + .'' + .'' + .'' + .'
' + .'' + .'Jardin\'enVie
' + .'' + .'
' + .'' + .'' + .'' + .'' + .'
' + .'Alerte stock bas
' + .'

Le stock de l\'article {{article}} (offre n°{{offre}}) ' + .'a atteint le seuil d\'alerte.

' + .'

{{stock_restant}} unités restantes

' + .'

Seuil d\'alerte configuré : {{seuil}} unités

' + .'

Voir l\'article' + .'  Voir l\'offre

' + .'

Pensez à réapprovisionner cet article.

' + .'
' + .'
' + .'' + .'
' + .'Jardin\'enVie Artisan Semencier
429 route des chaux, 26500 Bourg les Valence - Drôme' + .'
' + .'
'; + } + + private function getTextTemplate(): string + { + return "ALERTE STOCK BAS\n\n" + ."Article : {{article}} (offre n°{{offre}})\n" + ."Stock restant : {{stock_restant}} unités\n" + ."Seuil d'alerte : {{seuil}} unités\n\n" + ."Voir l'article dans l'admin : {{lien_article}}\n" + ."Voir l'offre dans l'admin : {{lien_offre}}\n\n" + ."Pensez à réapprovisionner cet article.\n\n" + ."Jardin'enVie Artisan Semencier\n" + .'429 route des chaux, 26500 Bourg les Valence - Drôme'; + } + + private function getOldHtmlTemplate(): string + { + return '' + .'
' + .'' + .'' + .'' + .'
' + .'' + .'Jardin\'enVie
' + .'' + .'
' + .'' + .'' + .'' + .'' + .'
' + .'Alerte stock bas
' + .'

Le stock de l\'article {{article}} (offre n°{{offre}}) ' + .'a atteint le seuil d\'alerte.

' + .'

{{stock_restant}} unités restantes

' + .'

Seuil d\'alerte configuré : {{seuil}} unités

' + .'

Pensez à réapprovisionner cet article.

' + .'
' + .'
' + .'' + .'
' + .'Jardin\'enVie Artisan Semencier
429 route des chaux, 26500 Bourg les Valence - Drôme' + .'
' + .'
'; + } + + private function getOldTextTemplate(): string + { + return "ALERTE STOCK BAS\n\n" + ."Article : {{article}} (offre n°{{offre}})\n" + ."Stock restant : {{stock_restant}} unités\n" + ."Seuil d'alerte : {{seuil}} unités\n\n" + ."Pensez à réapprovisionner cet article.\n\n" + ."Jardin'enVie Artisan Semencier\n" + .'429 route des chaux, 26500 Bourg les Valence - Drôme'; + } +};