diff --git a/app/Events/NotifyAdmin.php b/app/Events/NotifyAdmin.php
new file mode 100644
index 0000000..d319fba
--- /dev/null
+++ b/app/Events/NotifyAdmin.php
@@ -0,0 +1,32 @@
+ticket = $ticket;
+ $this->corpsMaj = $corpsMaj;
+ }
+}
diff --git a/app/Listeners/SendNotificationMailToAdmin.php b/app/Listeners/SendNotificationMailToAdmin.php
new file mode 100644
index 0000000..ac0d903
--- /dev/null
+++ b/app/Listeners/SendNotificationMailToAdmin.php
@@ -0,0 +1,23 @@
+ticket;
+ Mail::to(config('mail.MAIL_ADMIN'))
+ ->send(new TicketUpdate($ticket, $event->corpsMaj));
+ }
+}
diff --git a/app/Listeners/SendSubscriptionsNotificationsMail.php b/app/Listeners/SendSubscriptionsNotificationsMail.php
index 0ba5511..53da1d1 100644
--- a/app/Listeners/SendSubscriptionsNotificationsMail.php
+++ b/app/Listeners/SendSubscriptionsNotificationsMail.php
@@ -4,6 +4,7 @@ namespace App\Listeners;
use App\Events\NotifySubscriptions;
use App\Mail\TicketUpdate;
+use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;
@@ -22,7 +23,9 @@ class SendSubscriptionsNotificationsMail
foreach ($event->ticket->subscriptions as $sub) {
if (
$sub->email !== $ignoreConnectedUserEmail and
- !$ignoreUsers->contains($sub->email)
+ !$ignoreUsers->filter(function (User $user) use ($sub) {
+ return $user->email === $sub->email;
+ })->count()
) {
Mail::to($sub->email)
->send(new TicketUpdate($event->ticket, $event->corpsMaj));
diff --git a/app/Mail/TicketUpdate.php b/app/Mail/TicketUpdate.php
index 886f1c5..33ed6e9 100644
--- a/app/Mail/TicketUpdate.php
+++ b/app/Mail/TicketUpdate.php
@@ -38,7 +38,7 @@ class TicketUpdate extends Mailable
public function build()
{
$ticket = $this->ticket;
- $corpsMaj = Utils::plainToHtml($this->corpsMaj);
+ $corpsMaj = \html_entity_decode(Utils::plainToHtml($this->corpsMaj));
return $this->subject("[SupportWeb][{$ticket->site->name}] Ticket n°$ticket->id")
->view('emails.ticket-update', compact('ticket', 'corpsMaj'));
}
diff --git a/app/Models/Message.php b/app/Models/Message.php
index 4d6b41f..93467ce 100644
--- a/app/Models/Message.php
+++ b/app/Models/Message.php
@@ -19,19 +19,32 @@ class Message extends Model
protected static function booted()
{
static::created(function (Message $message) {
+ /** @var \App\Models\Ticket $ticket */
$ticket = $message->ticket;
if ($message->user) {
$ticket->load('user');
- if ($ticket->user !== $message->user) {
+ /** @var \App\Models\User $messageUser */
+ $messageUser = $message->user;
+ // * Send mail to mentionned users
+ $usersNotified = $ticket->sendBeenMentionnedToUser($message);
+ // * If email has not been sen to ticket author yet.
+ if (!$usersNotified->contains($ticket->user) and $ticket->user->id !== $messageUser->id) {
+ // * Send mail to ticket author
event(new NotifyTicketCreator(
$ticket,
trans('Nouvelle réponse de :name :
:message sur votre ticket', [
- 'name' => $message->user->name,
+ 'name' => $messageUser->name,
'message' => $message->message
])
));
+ $usersNotified->push($ticket->user);
}
- $usersNotified = $ticket->sendBeenMentionnedToUser($message);
+ // ? Is message author is admin ?
+ if ($messageUser->isAdmin()) {
+ $ticket->subscriptions()->attach($messageUser);
+ \session()->flash('info', trans('Vous avez été inscrit.'));
+ }
+ // * Send mail to other subscribed users
event(new NotifySubscriptions(
$message->ticket,
trans('Nouvelle réponse de :name :
:message', [
@@ -40,13 +53,7 @@ class Message extends Model
]),
$usersNotified
));
- } else {
- event(new NotifyTicketCreator(
- $ticket,
- trans('Votre ticket : :message', [
- 'message' => $message->message
- ])
- ));
+ //
}
});
}
diff --git a/app/Models/Ticket.php b/app/Models/Ticket.php
index 2e359d5..c3878ac 100644
--- a/app/Models/Ticket.php
+++ b/app/Models/Ticket.php
@@ -5,6 +5,7 @@ namespace App\Models;
use App\Enums\Role;
use App\Enums\TicketStatus;
use App\Enums\TicketType;
+use App\Events\NotifyAdmin;
use App\Events\NotifySubscriptions;
use App\Events\TicketStatusChanged;
use App\Jobs\SendTicketMentionMail;
@@ -42,11 +43,20 @@ class Ticket extends Model
}
});
static::updating(function (Ticket $ticket) {
- $oldStatus = Ticket::where('id', $ticket->id)->first()->status;
- if (!$ticket->status->equals($oldStatus)) {
- event(new TicketStatusChanged($ticket, $oldStatus, auth()->user()));
+ if (!$ticket->original['status'] !== $ticket->status->value) {
+ event(new TicketStatusChanged(
+ $ticket,
+ TicketStatus::make($ticket->original['status']),
+ auth()->user()
+ ));
event(new NotifySubscriptions($ticket, sprintf(
- 'Le ticket à changé de status : %s',
+ '%s a modifié le statut en %s',
+ auth()->user()->name,
+ $ticket->status->label
+ )));
+ event(new NotifyAdmin($ticket, sprintf(
+ '%s a modifié le statut en %s',
+ auth()->user()->name,
$ticket->status->label
)));
}
@@ -94,7 +104,7 @@ class Ticket extends Model
* returns and array with to users notified
*
* @param Message $message
- * @return array[User]
+ * @return Collection
*/
public function sendBeenMentionnedToUser(Message $message): Collection
{
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index d9d8aef..5aa3010 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -3,6 +3,7 @@
namespace App\Providers;
use App\Events\FileCreated;
+use App\Events\NotifyAdmin;
use App\Events\NotifySubscriptions;
use App\Events\NotifyTicketCreator;
use App\Events\ProjectUpdated;
@@ -10,6 +11,7 @@ use App\Events\SiteUpdated;
use App\Events\TicketStatusChanged;
use App\Listeners\AddStatusMessages;
use App\Listeners\HandleLoggable;
+use App\Listeners\SendNotificationMailToAdmin;
use App\Listeners\SendNotificationMailToTicketCreator;
use App\Listeners\SendSubscriptionsNotificationsMail;
use Illuminate\Auth\Events\Registered;
@@ -29,6 +31,7 @@ class EventServiceProvider extends ServiceProvider
TicketStatusChanged::class => [AddStatusMessages::class],
NotifySubscriptions::class => [SendSubscriptionsNotificationsMail::class],
NotifyTicketCreator::class => [SendNotificationMailToTicketCreator::class],
+ NotifyAdmin::class => [SendNotificationMailToAdmin::class],
FileCreated::class => [HandleLoggable::class],
ProjectUpdated::class => [HandleLoggable::class],
SiteUpdated::class => [HandleLoggable::class]
diff --git a/config/mail.php b/config/mail.php
index 8df1fc5..1231c5d 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -92,7 +92,7 @@ return [
],
'contactsList' => [
- 'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'informatique.internet@ldc.fr')
+ 'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
],
/*