|
@@ -5,20 +5,25 @@ namespace App\Services\Approval;
|
|
|
use App\Models\Approval;
|
|
|
use App\Models\Enums\ApprovalMode;
|
|
|
use App\Models\Enums\ApprovalObjectType;
|
|
|
+use App\Models\Enums\FileObjectType;
|
|
|
use App\Models\Enums\ObjectAction;
|
|
|
use App\Models\Enums\ObjectApprovalStatus;
|
|
|
use App\Repositories\ActionRepository;
|
|
|
+use App\Services\File\Upload\FileUploadHelper;
|
|
|
+use Illuminate\Http\UploadedFile;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
|
|
class ActionService
|
|
|
{
|
|
|
+ use FileUploadHelper;
|
|
|
+
|
|
|
protected ?Approval $approval = null;
|
|
|
|
|
|
protected array $actionExtraFields = [];
|
|
|
|
|
|
protected ?ObjectAction $objectAction = null;
|
|
|
|
|
|
- public function action(Approval $approval, int $status, string $comment = null): void
|
|
|
+ public function action(Approval $approval, int $status, string $comment = null, ?UploadedFile $uploadedFile = null): void
|
|
|
{
|
|
|
$this->approval = $approval;
|
|
|
|
|
@@ -26,6 +31,8 @@ class ActionService
|
|
|
'now' => $this->approval->node_level
|
|
|
];
|
|
|
|
|
|
+ $fileInfo = $uploadedFile ? $this->chunkUploadFileByCompany($uploadedFile, FileObjectType::ACTION->value) : [];
|
|
|
+
|
|
|
match($status) {
|
|
|
1 => $this->approved(),
|
|
|
default => $this->rejected(),
|
|
@@ -33,11 +40,13 @@ class ActionService
|
|
|
|
|
|
$this->actionExtraFields['approval_mode'] = $this->approval->approval_mode;
|
|
|
|
|
|
- $this->triggerAction($comment);
|
|
|
+ $action = $this->triggerAction($comment);
|
|
|
|
|
|
$this->changeApprovalObjectStatus();
|
|
|
|
|
|
$this->changeApprovalStatus();
|
|
|
+
|
|
|
+ $this->fileToDatabase($fileInfo, $action->id);
|
|
|
}
|
|
|
|
|
|
protected function changeApprovalStatus(): void
|
|
@@ -55,9 +64,9 @@ class ActionService
|
|
|
$object->save();
|
|
|
}
|
|
|
|
|
|
- protected function triggerAction (string $comment = null): void
|
|
|
+ protected function triggerAction (string $comment = null)
|
|
|
{
|
|
|
- ActionRepository::createByApproval(
|
|
|
+ return ActionRepository::createByApproval(
|
|
|
$this->approval,
|
|
|
$this->objectAction,
|
|
|
$comment,
|