diff --git a/app/Listeners/CheckoutableListener.php b/app/Listeners/CheckoutableListener.php index eb6b738094..6ed213e770 100644 --- a/app/Listeners/CheckoutableListener.php +++ b/app/Listeners/CheckoutableListener.php @@ -23,6 +23,7 @@ use GuzzleHttp\Exception\ClientException; use Illuminate\Support\Facades\Notification; use Exception; use Illuminate\Support\Facades\Log; +use Osama\LaravelTeamsNotification\TeamsNotification; class CheckoutableListener { @@ -48,16 +49,16 @@ class CheckoutableListener // Send email notifications try { - foreach ($notifiables as $notifiable) { - if ($notifiable instanceof User && $notifiable->email != '') { - if (! $event->checkedOutTo->locale){ - Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance)); - } - else { - Notification::send($notifiable, $this->getCheckoutNotification($event, $acceptance)); - } - } - } +// foreach ($notifiables as $notifiable) { +// if ($notifiable instanceof User && $notifiable->email != '') { +// if (! $event->checkedOutTo->locale){ +// Notification::locale(Setting::getSettings()->locale)->send($notifiable, $this->getCheckoutNotification($event, $acceptance)); +// } +// else { +// Notification::send($notifiable, $this->getCheckoutNotification($event, $acceptance)); +// } +// } +// } // Send Webhook notification if ($this->shouldSendWebhookNotification()) { @@ -65,7 +66,15 @@ class CheckoutableListener if (Setting::getSettings()->webhook_selected === 'slack' || Setting::getSettings()->webhook_selected === 'general') { Notification::route('slack', Setting::getSettings()->webhook_endpoint) ->notify($this->getCheckoutNotification($event, $acceptance)); - } else { + } + // Handling Microsoft Teams notification + else if (Setting::getSettings()->webhook_selected === 'microsoft') { + + $message = $this->getCheckoutNotification($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) ->notify($this->getCheckoutNotification($event, $acceptance)); } diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index b479e00335..518d9d98b2 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -21,6 +21,7 @@ use NotificationChannels\GoogleChat\Widgets\KeyValue; use NotificationChannels\MicrosoftTeams\MicrosoftTeamsChannel; use NotificationChannels\MicrosoftTeams\MicrosoftTeamsMessage; use Illuminate\Support\Facades\Log; +use Osama\LaravelTeamsNotification\Logging\TeamsLoggingChannel; use Osama\LaravelTeamsNotification\TeamsNotification; class CheckoutAssetNotification extends Notification @@ -147,15 +148,24 @@ class CheckoutAssetNotification extends Notification $item = $this->item; $note = $this->note; - return MicrosoftTeamsMessage::create() - ->to($this->settings->webhook_endpoint) - ->type('success') - ->title(trans('mail.Asset_Checkout_Notification')) - ->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 ?: ''); + $notification = new TeamsNotification($this->settings->webhook_channel); + $message = trans('mail.Asset_Checkout_Notification'); + $details = [ + trans('mail.assigned_to') => $target->present()->name, + htmlspecialchars_decode($item->present()->name) => '', + trans('mail.Asset_Checkout_Notification'). ' by' => $admin->present()->fullName(), + trans('mail.notes') => $note ?: '', + ]; + 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 ?: ''); }