mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-25 05:34:06 -08:00
8648d53d25
A checkout acceptance gets generated for every item that needs to be checked out. This resource tracks the user user who can accept the item and their signature
152 lines
4.2 KiB
PHP
152 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace App\Notifications;
|
|
|
|
use App\Models\Accessory;
|
|
use App\Models\Setting;
|
|
use App\Models\SnipeModel;
|
|
use App\Models\User;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Notifications\Messages\MailMessage;
|
|
use Illuminate\Notifications\Messages\SlackMessage;
|
|
use Illuminate\Notifications\Notification;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class CheckoutAccessoryNotification extends Notification
|
|
{
|
|
use Queueable;
|
|
|
|
/**
|
|
* Create a new notification instance.
|
|
*/
|
|
public function __construct(Accessory $accessory, $checkedOutTo, User $checkedOutBy, $acceptance, $note)
|
|
{
|
|
|
|
$this->item = $accessory;
|
|
$this->admin = $checkedOutBy;
|
|
$this->note = $note;
|
|
$this->target = $checkedOutTo;
|
|
$this->acceptance = $acceptance;
|
|
|
|
$this->settings = Setting::getSettings();
|
|
|
|
}
|
|
|
|
/**
|
|
* Get the notification's delivery channels.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return array
|
|
*/
|
|
public function via($notifiable)
|
|
{
|
|
|
|
$notifyBy = [];
|
|
|
|
if (Setting::getSettings()->slack_endpoint!='') {
|
|
$notifyBy[] = 'slack';
|
|
}
|
|
|
|
|
|
/**
|
|
* Only send notifications to users that have email addresses
|
|
*/
|
|
if ($this->target instanceof User && $this->target->email != '') {
|
|
|
|
/**
|
|
* Send an email if the asset requires acceptance,
|
|
* so the user can accept or decline the asset
|
|
*/
|
|
if ($this->item->requireAcceptance()) {
|
|
$notifyBy[1] = 'mail';
|
|
}
|
|
|
|
/**
|
|
* Send an email if the item has a EULA, since the user should always receive it
|
|
*/
|
|
if ($this->item->getEula()) {
|
|
$notifyBy[1] = 'mail';
|
|
}
|
|
|
|
/**
|
|
* Send an email if an email should be sent at checkin/checkout
|
|
*/
|
|
if ($this->item->checkin_email()) {
|
|
$notifyBy[1] = 'mail';
|
|
}
|
|
|
|
}
|
|
|
|
return $notifyBy;
|
|
}
|
|
|
|
public function toSlack($notifiable)
|
|
{
|
|
|
|
|
|
$target = $this->target;
|
|
$admin = $this->admin;
|
|
$item = $this->item;
|
|
$note = $this->note;
|
|
$botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot' ;
|
|
|
|
$fields = [
|
|
'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>',
|
|
'By' => '<'.$admin->present()->viewUrl().'|'.$admin->present()->fullName().'>',
|
|
];
|
|
|
|
|
|
|
|
return (new SlackMessage)
|
|
->content(':arrow_up: :keyboard: Accessory Checked Out')
|
|
->from($botname)
|
|
->attachment(function ($attachment) use ($item, $note, $admin, $fields) {
|
|
$attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl())
|
|
->fields($fields)
|
|
->content($note);
|
|
});
|
|
}
|
|
/**
|
|
* Get the mail representation of the notification.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return \Illuminate\Notifications\Messages\MailMessage
|
|
*/
|
|
public function toMail($notifiable)
|
|
{
|
|
|
|
\Log::debug($this->item->getImageUrl());
|
|
$eula = $this->item->getEula();
|
|
$req_accept = $this->item->requireAcceptance();
|
|
|
|
$accept_url = is_null($this->acceptance) ? null : route('account.accept.item', $this->acceptance);
|
|
|
|
return (new MailMessage)->markdown('notifications.markdown.checkout-accessory',
|
|
[
|
|
'item' => $this->item,
|
|
'admin' => $this->admin,
|
|
'note' => $this->note,
|
|
'target' => $this->target,
|
|
'eula' => $eula,
|
|
'req_accept' => $req_accept,
|
|
'accept_url' => $accept_url,
|
|
])
|
|
->subject(trans('mail.Confirm_accessory_delivery'));
|
|
|
|
}
|
|
|
|
/**
|
|
* Get the array representation of the notification.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return array
|
|
*/
|
|
public function toArray($notifiable)
|
|
{
|
|
return [
|
|
//
|
|
];
|
|
}
|
|
}
|