Merge branch 'issue-6' into 'develop'

Issue 6

Closes #6

See merge request ldc-web/projets/support-web!17
This commit is contained in:
Vincent BRIDIER 2023-04-12 10:20:07 +00:00
commit 72268bd285
4 changed files with 77 additions and 63 deletions

View file

@ -27,6 +27,9 @@ class TicketStatusChanged
/** @var string */
public $message;
/** @var boolean */
public $is_private;
/**
* Create a new event instance.
*
@ -34,13 +37,20 @@ class TicketStatusChanged
* @param \App\Enums\TicketStatus $status
* @param \App\Models\User|null $user
* @param string|null $message
* @param boolean $is_private
* @return void
*/
public function __construct(Ticket $ticket, TicketStatus $status, User $user = null, string $message = null)
{
$this->ticket = $ticket;
$this->status = $status;
$this->user = $user;
$this->message = $message;
public function __construct(
Ticket $ticket,
TicketStatus $status,
User $user = null,
string $message = null,
bool $is_private = false
) {
$this->ticket = $ticket;
$this->status = $status;
$this->user = $user;
$this->message = $message;
$this->is_private = $is_private;
}
}

View file

@ -454,7 +454,7 @@ class TicketController extends Controller
/** @var \App\Enums\TicketStatus */
$oldStatus = $ticket->status;
event(new TicketStatusChanged($ticket, $oldStatus, null, $message));
event(new TicketStatusChanged($ticket, $oldStatus, null, $message, true));
event(new NotifySubscriptions($ticket, $message, collect([$ticket->user])));
/** @var \App\Models\User */

View file

@ -14,11 +14,16 @@ class AddStatusMessages
*
* @param \App\Events\TicketStatusChanged $event
* @return void
* @phpcs:disable Generic.Metrics.CyclomaticComplexity
*/
public function handle(TicketStatusChanged $event)
{
$message = new Message();
$message->ticket_id = $event->ticket->id;
$message->type = MessageType::public();
if ($event->is_private) {
$message->type = MessageType::private();
}
if ($event->message) {
$message->message = $event->message;
} elseif ($event->user) {
@ -92,7 +97,6 @@ class AddStatusMessages
);
break;
} //end switch
$message->type = MessageType::public();
$message->save();
}
}

View file

@ -151,66 +151,66 @@
@endcan
</h4>
@foreach ($messages as $message)
@if ($message->user_id === null)
<div class="offset-md-3 col-md-6 alert alert-info text-center text-dark">
{!! nl2br(clean($message->message)) !!} - <span class="fw-bold text-light">Le {{ \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i')}}</span>
<small class="fw-bold">({{ __('Message système') }})</small>
</div>
@else
@if (
$message->type->equals(MessageTypeEnum::public()) ||
(Auth::user()->can('createPrivateMessage', $ticket))
)
<div class="@if($message->user_id === Auth::user()->id)offset-md-4 alert-dark @else alert-light @endif @if($message->type->equals(MessageTypeEnum::private())) border border-danger border-2 @endif col-md-8 alert">
@if ($message->type->equals(MessageTypeEnum::private()))
<i class="fa-solid fa-lock"></i>&nbsp;&nbsp;
@endif
{!! ToolboxHelper::plainToHtml($message->message) !!}
@if ($message->file !== null)
<br><a @if(ToolboxHelper::isImageFile($message->file))data-fslightbox="gallery" @endif href="{{ asset($message->file) }}" target="_blank">Ouvrir la pièce jointe</a><br>
@endif<br><br>
<small class="text-muted fw-bold">
{!! __('Créé le :date par <b>:userName</b>', [
'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'),
'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé')
]) !!}
</small>
@if($message->user_id === Auth::user()->id)
@can('updateMessage', $ticket, $message)
<button type="button" class="btn btn-sm btn-primary float-end" data-bs-toggle="modal" data-bs-target="#updateMessageModal{{$message->id}}">
{{ __('Modifier le message') }}
</button>
<div class="modal fade" id="updateMessageModal{{$message->id}}" tabindex="-1" aria-labelledby="updateMessageModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form action="{{ route('ticket.message.update', ['ticket'=>$ticket, 'message'=>$message]) }}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
<input type="hidden" name="ticket_id" value="{{ $ticket->id }}">
<div class="modal-header">
<h5 class="modal-title" id="messageModalLabel">
{{ __('Modification du message n°:messageid', ['messageid' => $message->id]) }}
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{__('Fermer') }}"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col">
<textarea name="message" class="form-control" rows="10">{{ $message->message }}</textarea>
</div>
@if (
$message->type->equals(MessageTypeEnum::public()) ||
(Auth::user()->can('createPrivateMessage', $ticket))
)
@if ($message->user_id === null)
<div class="offset-md-3 col-md-6 alert alert-info text-center text-dark">
{!! nl2br(clean($message->message)) !!} - <span class="fw-bold text-light">Le {{ \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i')}}</span>
<small class="fw-bold">({{ __('Message système') }})</small>
</div>
@else
<div class="@if($message->user_id === Auth::user()->id)offset-md-4 alert-dark @else alert-light @endif @if($message->type->equals(MessageTypeEnum::private())) border border-danger border-2 @endif col-md-8 alert">
@if ($message->type->equals(MessageTypeEnum::private()))
<i class="fa-solid fa-lock"></i>&nbsp;&nbsp;
@endif
{!! ToolboxHelper::plainToHtml($message->message) !!}
@if ($message->file !== null)
<br><a @if(ToolboxHelper::isImageFile($message->file))data-fslightbox="gallery" @endif href="{{ asset($message->file) }}" target="_blank">Ouvrir la pièce jointe</a><br>
@endif<br><br>
<small class="text-muted fw-bold">
{!! __('Créé le :date par <b>:userName</b>', [
'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'),
'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé')
]) !!}
</small>
@if($message->user_id === Auth::user()->id)
@can('updateMessage', $ticket, $message)
<button type="button" class="btn btn-sm btn-primary float-end" data-bs-toggle="modal" data-bs-target="#updateMessageModal{{$message->id}}">
{{ __('Modifier le message') }}
</button>
<div class="modal fade" id="updateMessageModal{{$message->id}}" tabindex="-1" aria-labelledby="updateMessageModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form action="{{ route('ticket.message.update', ['ticket'=>$ticket, 'message'=>$message]) }}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
<input type="hidden" name="ticket_id" value="{{ $ticket->id }}">
<div class="modal-header">
<h5 class="modal-title" id="messageModalLabel">
{{ __('Modification du message n°:messageid', ['messageid' => $message->id]) }}
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{__('Fermer') }}"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col">
<textarea name="message" class="form-control" rows="10">{{ $message->message }}</textarea>
</div>
</div>
<div class="modal-footer">
<button type="reset" class="btn btn-sm btn-danger" data-bs-dismiss="modal">{{ __('Fermer') }}</button>
<button type="submit" class="btn btn-sm btn-success">{{ __('Envoyer') }}</button>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="reset" class="btn btn-sm btn-danger" data-bs-dismiss="modal">{{ __('Fermer') }}</button>
<button type="submit" class="btn btn-sm btn-success">{{ __('Envoyer') }}</button>
</div>
</form>
</div>
</div>
@endcan
@endif
</div>
@endcan
@endif
</div>
@endif
@endif
@endforeach