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() { $notifyBy = []; if (Setting::getSettings()->webhook_endpoint != '') { \Log::debug('use webhook'); $notifyBy[] = 'slack'; } /** * Only send checkin notifications to users if the category * has the corresponding checkbox checked. */ if ($this->item->checkin_email() && $this->target instanceof User && $this->target->email != '') { $notifyBy[] = 'mail'; } 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 toMsTeams() { $admin = $this->admin; $item = $this->item; $note = $this->note; $fields = [ trans('general.administrator') => '<'.$admin->present()->viewUrl().'|'.$admin->present()->fullName().'>', trans('general.status') => $item->assetstatus->name, trans('general.location') => ($item->location) ? $item->location->name : '', ]; $payload = json_encode( [ "@type"=> "MessageCard", "@context"=> "http://schema.org/extensions", "themeColor"=> "0076D7", "summary"=> trans('mail.Asset_Checkin_Notification'), "sections"=> [ "activityTitle"=> "Larry Bryant created a new task", "activitySubtitle"=> "On Project Tango", "activityImage"=> "https://adaptivecards.io/content/cats/3.png", "facts"=> [ ["name"=> "Assigned to", "value"=> "Unassigned" ] , ["name"=> "Due date", "value"=> "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)" ] , ["name"=> "Status", "value"=> "Not started" ] ], "markdown"=> true ]] ); } /** * Get the mail representation of the notification. * * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail() { $fields = []; // Check if the item has custom fields associated with it if (($this->item->model) && ($this->item->model->fieldset)) { $fields = $this->item->model->fieldset->fields; } $message = (new MailMessage)->markdown('notifications.markdown.checkin-asset', [ 'item' => $this->item, 'admin' => $this->admin, 'note' => $this->note, 'target' => $this->target, 'fields' => $fields, 'expected_checkin' => $this->expected_checkin, ]) ->subject(trans('mail.Asset_Checkin_Notification')); return $message; } }