55 lines
1.8 KiB
PHP
55 lines
1.8 KiB
PHP
<?php
|
||
|
||
namespace App\Modules\Inventory\Notifications;
|
||
|
||
use Illuminate\Bus\Queueable;
|
||
use Illuminate\Notifications\Notification;
|
||
use App\Modules\Inventory\Models\StoreRequisition;
|
||
|
||
class StoreRequisitionNotification extends Notification
|
||
{
|
||
use Queueable;
|
||
|
||
protected StoreRequisition $requisition;
|
||
protected string $action;
|
||
protected string $actorName;
|
||
|
||
/**
|
||
* 建立通知實例
|
||
*
|
||
* @param StoreRequisition $requisition 叫貨單
|
||
* @param string $action 操作類型:submitted / approved / rejected
|
||
* @param string $actorName 操作者名稱
|
||
*/
|
||
public function __construct(StoreRequisition $requisition, string $action, string $actorName)
|
||
{
|
||
$this->requisition = $requisition;
|
||
$this->action = $action;
|
||
$this->actorName = $actorName;
|
||
}
|
||
|
||
public function via(object $notifiable): array
|
||
{
|
||
return ['database'];
|
||
}
|
||
|
||
public function toArray(object $notifiable): array
|
||
{
|
||
$messages = [
|
||
'submitted' => "{$this->actorName} 提交了叫貨申請:{$this->requisition->doc_no}",
|
||
'approved' => "{$this->actorName} 核准了叫貨申請:{$this->requisition->doc_no}",
|
||
'rejected' => "{$this->actorName} 駁回了叫貨申請:{$this->requisition->doc_no}",
|
||
];
|
||
|
||
return [
|
||
'type' => 'store_requisition',
|
||
'action' => $this->action,
|
||
'store_requisition_id' => $this->requisition->id,
|
||
'doc_no' => $this->requisition->doc_no,
|
||
'actor_name' => $this->actorName,
|
||
'message' => $messages[$this->action] ?? "{$this->actorName} 操作了叫貨申請:{$this->requisition->doc_no}",
|
||
'link' => route('store-requisitions.show', $this->requisition->id),
|
||
];
|
||
}
|
||
}
|