Merge branch 'develop' into trunk
This commit is contained in:
commit
d720056828
8 changed files with 96 additions and 18 deletions
32
app/Events/NotifyAdmin.php
Normal file
32
app/Events/NotifyAdmin.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace App\Events;
|
||||
|
||||
use App\Models\Ticket;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class NotifyAdmin
|
||||
{
|
||||
use Dispatchable;
|
||||
use InteractsWithSockets;
|
||||
use SerializesModels;
|
||||
|
||||
/** @var Ticket */
|
||||
public $ticket;
|
||||
|
||||
/** @var string */
|
||||
public $corpsMaj;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Ticket $ticket, string $corpsMaj)
|
||||
{
|
||||
$this->ticket = $ticket;
|
||||
$this->corpsMaj = $corpsMaj;
|
||||
}
|
||||
}
|
||||
23
app/Listeners/SendNotificationMailToAdmin.php
Normal file
23
app/Listeners/SendNotificationMailToAdmin.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\NotifyAdmin;
|
||||
use App\Mail\TicketUpdate;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
class SendNotificationMailToAdmin
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param NotifyTicketCreator $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle(NotifyAdmin $event)
|
||||
{
|
||||
$ticket = $event->ticket;
|
||||
Mail::to(config('mail.MAIL_ADMIN'))
|
||||
->send(new TicketUpdate($ticket, $event->corpsMaj));
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 :<br> :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 :<br> :message', [
|
||||
|
|
@ -40,13 +53,7 @@ class Message extends Model
|
|||
]),
|
||||
$usersNotified
|
||||
));
|
||||
} else {
|
||||
event(new NotifyTicketCreator(
|
||||
$ticket,
|
||||
trans('Votre ticket : :message', [
|
||||
'message' => $message->message
|
||||
])
|
||||
));
|
||||
//
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
'<b>%s</b> a modifié le statut en <b>%s</b>',
|
||||
auth()->user()->name,
|
||||
$ticket->status->label
|
||||
)));
|
||||
event(new NotifyAdmin($ticket, sprintf(
|
||||
'<b>%s</b> a modifié le statut en <b>%s</b>',
|
||||
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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ return [
|
|||
],
|
||||
|
||||
'contactsList' => [
|
||||
'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'informatique.internet@ldc.fr')
|
||||
'serviceweb' => env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')
|
||||
],
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue