|
@@ -4,13 +4,11 @@ namespace App\Services\Notification\Abstracts;
|
|
|
|
|
|
use App\Models\Action;
|
|
|
use App\Models\Approval;
|
|
|
-use App\Models\Enums\ActionObjectType;
|
|
|
use App\Models\Enums\NotificationObjectType;
|
|
|
use App\Models\Enums\ObjectAction;
|
|
|
use App\Models\Notification;
|
|
|
use App\Models\NotificationRecord;
|
|
|
use App\Services\Notification\Contacts\ActionBrowserNotificationContacts;
|
|
|
-use App\Services\Notification\NotificationContent;
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
|
abstract class ActionBrowserNotificationAbstract implements ActionBrowserNotificationContacts
|
|
@@ -41,21 +39,26 @@ abstract class ActionBrowserNotificationAbstract implements ActionBrowserNotific
|
|
|
}
|
|
|
|
|
|
match ($this->objectAction) {
|
|
|
- ObjectAction::APPROVAL_REQUEST, ObjectAction::APPROVED_TO_NEXT_NODE => $this->notificationNextApprovalUsers($approval),
|
|
|
- ObjectAction::APPROVAL_APPROVED, ObjectAction::APPROVAL_REJECTED => $this->handleByObjectAction([$approval->create_by]),
|
|
|
+ ObjectAction::APPROVAL_REQUEST => $this->notificationNextApprovalUsers($approval),
|
|
|
+ ObjectAction::APPROVED_TO_NEXT_NODE => $this->handleByApprovedToNextNode($approval),
|
|
|
+ ObjectAction::APPROVAL_APPROVED, ObjectAction::APPROVAL_REJECTED => $this->handleByObjectAction([$approval->created_by]),
|
|
|
default => '',
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ protected function handleByApprovedToNextNode(Approval $approval)
|
|
|
+ {
|
|
|
+ $this->notificationNextApprovalUsers($approval);
|
|
|
+
|
|
|
+ $this->handleByObjectAction([$approval->created_by]);
|
|
|
+ }
|
|
|
+
|
|
|
protected function handleByObjectAction(array $userIDs)
|
|
|
{
|
|
|
- $this->storeNotification(
|
|
|
- new NotificationContent($this->objectAction->value),
|
|
|
- $userIDs,
|
|
|
- );
|
|
|
+ $this->storeNotification($userIDs);
|
|
|
}
|
|
|
|
|
|
- protected function storeNotification(NotificationContent $content, array $userIds)
|
|
|
+ protected function storeNotification(array $userIds, array $extraFields = [])
|
|
|
{
|
|
|
if (! $userIds) {
|
|
|
return;
|
|
@@ -64,7 +67,7 @@ abstract class ActionBrowserNotificationAbstract implements ActionBrowserNotific
|
|
|
$notification = Notification::query()->create([
|
|
|
'object_type' => NotificationObjectType::ACTION->value,
|
|
|
'object_id' => $this->action->id,
|
|
|
- 'content' => $content->toArray()
|
|
|
+ 'extra_fields' => $extraFields ?: null,
|
|
|
]);
|
|
|
|
|
|
foreach ($userIds as $userId) {
|
|
@@ -84,8 +87,8 @@ abstract class ActionBrowserNotificationAbstract implements ActionBrowserNotific
|
|
|
|
|
|
$userIds = $approvalFlow->nodes[$this->action->extra_fields['next']]['approval_users'] ?? [];
|
|
|
|
|
|
- $content = new NotificationContent("waitingForMyApproval");
|
|
|
-
|
|
|
- $this->storeNotification($content, $userIds);
|
|
|
+ $this->storeNotification($userIds, [
|
|
|
+ 'action' => 'waitingForMyApproval'
|
|
|
+ ]);
|
|
|
}
|
|
|
}
|