target = $checkedOutTo; $this->item = $asset; $this->admin = $checkedInBy; $this->note = $note; $this->settings = Setting::getSettings(); $this->expected_checkin = ''; if ($this->item->expected_checkin) { $this->expected_checkin = Helper::getFormattedDateObject($this->item->expected_checkin, 'date', false); } } /** * Get the notification's delivery channels. * * @return array */ public function via() { if (Setting::getSettings()->webhook_selected == 'google' && Setting::getSettings()->webhook_endpoint) { $notifyBy[] = GoogleChatChannel::class; } if (Setting::getSettings()->webhook_selected == 'microsoft' && Setting::getSettings()->webhook_endpoint) { $notifyBy[] = MicrosoftTeamsChannel::class; } if (Setting::getSettings()->webhook_selected == 'slack' || Setting::getSettings()->webhook_selected == 'general' ) { Log::debug('use webhook'); $notifyBy[] = SlackWebhookChannel::class; } return $notifyBy; } public function toSlack() { $admin = $this->admin; $item = $this->item; $note = $this->note; $botname = ($this->settings->webhook_botname != '') ? $this->settings->webhook_botname : 'Snipe-Bot'; $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ trans('general.administrator') => '<'.$admin->present()->viewUrl().'|'.$admin->present()->fullName().'>', trans('general.status') => $item->assetstatus->name, trans('general.location') => ($item->location) ? $item->location->name : '', ]; return (new SlackMessage) ->content(':arrow_down: :computer: '.trans('mail.Asset_Checkin_Notification')) ->from($botname) ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) ->content($note); }); } public function toMicrosoftTeams() { $admin = $this->admin; $item = $this->item; $note = $this->note; if(!Str::contains(Setting::getSettings()->webhook_endpoint, 'workflows')) { return MicrosoftTeamsMessage::create() ->to($this->settings->webhook_endpoint) ->type('success') ->title(trans('mail.Asset_Checkin_Notification')) ->addStartGroupToSection('activityText') ->fact(htmlspecialchars_decode($item->present()->name), '', 'activityText') ->fact(trans('mail.checked_into'), $item->location->name ? $item->location->name : '') ->fact(trans('mail.Asset_Checkin_Notification') . " by ", $admin->present()->fullName()) ->fact(trans('admin/hardware/form.status'), $item->assetstatus->name) ->fact(trans('mail.notes'), $note ?: ''); } $message = trans('mail.Asset_Checkin_Notification'); $details = [ trans('mail.asset') => htmlspecialchars_decode($item->present()->name), trans('mail.checked_into') => $item->location->name ? $item->location->name : '', trans('mail.Asset_Checkin_Notification')." by " => $admin->present()->fullName(), trans('admin/hardware/form.status') => $item->assetstatus->name, trans('mail.notes') => $note ?: '', ]; return array($message, $details); } public function toGoogleChat() { $target = $this->target; $item = $this->item; $note = $this->note; return GoogleChatMessage::create() ->to($this->settings->webhook_endpoint) ->card( Card::create() ->header( ''.trans('mail.Asset_Checkin_Notification').'' ?: '', htmlspecialchars_decode($item->present()->name) ?: '', ) ->section( Section::create( KeyValue::create( trans('mail.checked_into') ?: '', $item->location->name ? $item->location->name : '', trans('admin/hardware/form.status').": ".$item->assetstatus->name, ) ->onClick(route('hardware.show', $item->id)) ) ) ); } }