Merge branch 'issue-6' into 'develop'
Issue 6 Closes #6 See merge request ldc-web/projets/support-web!17
This commit is contained in:
commit
72268bd285
4 changed files with 77 additions and 63 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
@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>
|
||||
@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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue