adds check in and checkout message for assets

This commit is contained in:
Godfrey M 2024-10-24 14:39:40 -07:00
parent 18da80e6de
commit e27ff13377
3 changed files with 40 additions and 45 deletions

View file

@ -49,16 +49,16 @@ class CheckoutableListener
// Send email notifications // Send email notifications
try { try {
// foreach ($notifiables as $notifiable) { foreach ($notifiables as $notifiable) {
// if ($notifiable instanceof User && $notifiable->email != '') { if ($notifiable instanceof User && $notifiable->email != '') {
// if (! $event->checkedOutTo->locale){ if (! $event->checkedOutTo->locale){
// Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance)); Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance));
// } }
// else { else {
// Notification::send($notifiable, $this->getCheckoutNotification($event, $acceptance)); Notification::send($notifiable, $this->getCheckoutNotification($event, $acceptance));
// } }
// } }
// } }
// Send Webhook notification // Send Webhook notification
if ($this->shouldSendWebhookNotification()) { if ($this->shouldSendWebhookNotification()) {
@ -116,23 +116,30 @@ class CheckoutableListener
$notifiables = $this->getNotifiables($event); $notifiables = $this->getNotifiables($event);
// Send email notifications // Send email notifications
try { try {
foreach ($notifiables as $notifiable) { // foreach ($notifiables as $notifiable) {
if ($notifiable instanceof User && $notifiable->email != '') { // if ($notifiable instanceof User && $notifiable->email != '') {
if (! $event->checkedOutTo->locale){ // if (! $event->checkedOutTo->locale){
Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance)); // Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance));
} // }
else { // else {
Notification::send($notifiable, $this->getCheckinNotification($event)); // Notification::send($notifiable, $this->getCheckinNotification($event));
} // }
} // }
} // }
// Send Webhook notification // Send Webhook notification
if ($this->shouldSendWebhookNotification()) { if ($this->shouldSendWebhookNotification()) {
// Slack doesn't include the URL in its messaging format, so this is needed to hit the endpoint // Slack doesn't include the URL in its messaging format, so this is needed to hit the endpoint
if (Setting::getSettings()->webhook_selected === 'slack' || Setting::getSettings()->webhook_selected === 'general') { if (Setting::getSettings()->webhook_selected === 'slack' || Setting::getSettings()->webhook_selected === 'general') {
Notification::route('slack', Setting::getSettings()->webhook_endpoint) Notification::route('slack', Setting::getSettings()->webhook_endpoint)
->notify($this->getCheckinNotification($event)); ->notify($this->getCheckinNotification($event));
} else { } // Handling Microsoft Teams notification
else if (Setting::getSettings()->webhook_selected === 'microsoft') {
$message = $this->getCheckinNotification($event)->toMicrosoftTeams();
$notification = new TeamsNotification(Setting::getSettings()->webhook_endpoint);
$notification->success()->sendMessage($message[0], $message[1]); // Send the message to Microsoft Teams
}
else {
Notification::route(Setting::getSettings()->webhook_selected, Setting::getSettings()->webhook_endpoint) Notification::route(Setting::getSettings()->webhook_selected, Setting::getSettings()->webhook_endpoint)
->notify($this->getCheckinNotification($event)); ->notify($this->getCheckinNotification($event));
} }

View file

@ -106,16 +106,16 @@ class CheckinAssetNotification extends Notification
$item = $this->item; $item = $this->item;
$note = $this->note; $note = $this->note;
return MicrosoftTeamsMessage::create() $message = trans('mail.Asset_Checkin_Notification');
->to($this->settings->webhook_endpoint) $details = [
->type('success') trans('mail.asset') => htmlspecialchars_decode($item->present()->name),
->title(trans('mail.Asset_Checkin_Notification')) trans('mail.checked_into') => $item->location->name ? $item->location->name : '',
->addStartGroupToSection('activityText') trans('mail.Asset_Checkin_Notification')." by " => $admin->present()->fullName(),
->fact(htmlspecialchars_decode($item->present()->name), '', 'activityText') trans('admin/hardware/form.status') => $item->assetstatus->name,
->fact(trans('mail.checked_into'), $item->location->name ? $item->location->name : '') trans('mail.notes') => $note ?: '',
->fact(trans('mail.Asset_Checkin_Notification')." by ", $admin->present()->fullName()) ];
->fact(trans('admin/hardware/form.status'), $item->assetstatus->name)
->fact(trans('mail.notes'), $note ?: ''); return array($message, $details);
} }
public function toGoogleChat() public function toGoogleChat()
{ {

View file

@ -141,33 +141,21 @@ class CheckoutAssetNotification extends Notification
->content($note); ->content($note);
}); });
} }
public function toMicrosoftTeams() public function toMicrosoftTeams() : array
{ {
$target = $this->target; $target = $this->target;
$admin = $this->admin; $admin = $this->admin;
$item = $this->item; $item = $this->item;
$note = $this->note; $note = $this->note;
$notification = new TeamsNotification($this->settings->webhook_channel);
$message = trans('mail.Asset_Checkout_Notification'); $message = trans('mail.Asset_Checkout_Notification');
$details = [ $details = [
trans('mail.assigned_to') => $target->present()->name, trans('mail.assigned_to') => $target->present()->name,
htmlspecialchars_decode($item->present()->name) => '', trans('mail.asset') => htmlspecialchars_decode($item->present()->name),
trans('mail.Asset_Checkout_Notification'). ' by' => $admin->present()->fullName(), trans('mail.Asset_Checkout_Notification'). ' by' => $admin->present()->fullName(),
trans('mail.notes') => $note ?: '', trans('mail.notes') => $note ?: '',
]; ];
return array($message, $details); return array($message, $details);
// return MicrosoftTeamsMessage::create()
// ->to($this->settings->webhook_endpoint)
// ->type('success')
// ->title()
// ->addStartGroupToSection('activityText')
// ->fact(trans('mail.assigned_to'), $target->present()->name)
// ->fact(htmlspecialchars_decode($item->present()->name), '', 'activityText')
// ->fact(trans('mail.Asset_Checkout_Notification') . " by ", $admin->present()->fullName())
// ->fact(trans('mail.notes'), $note ?: '');
} }
public function toGoogleChat() public function toGoogleChat()
{ {