|
@@ -7,6 +7,7 @@ use App\Http\Requests\API\ApprovalFlow\CreateOrUpdateRequest;
|
|
|
use App\Http\Resources\API\ApprovalFlowDetailResource;
|
|
|
use App\Http\Resources\API\ApprovalFlowResource;
|
|
|
use App\Models\ApprovalFlow;
|
|
|
+use App\Models\Enums\ApprovalFlowType;
|
|
|
use App\Models\User;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
@@ -24,9 +25,22 @@ class ApprovalFlowController extends Controller
|
|
|
{
|
|
|
$nodes = $this->getApprovalNodes($request);
|
|
|
|
|
|
+ $limitObject = $request->get("object_type") && $request->get("object_id") && in_array($request->get("type"), [ApprovalFlowType::TASK->value]);
|
|
|
+
|
|
|
+ $exists = ApprovalFlow::query()->where("type", $request->type)
|
|
|
+ ->when(
|
|
|
+ $limitObject,
|
|
|
+ fn ($query) => $query->where([
|
|
|
+ 'object_type' => $request->object_type,
|
|
|
+ 'object_id' => $request->object_id,
|
|
|
+ ])
|
|
|
+ )
|
|
|
+ ->count();
|
|
|
+ throw_validation_if($exists, "Please do not add repeatedly.");
|
|
|
+
|
|
|
$approvalFlow = new ApprovalFlow();
|
|
|
$approvalFlow->mergeFillable([
|
|
|
- 'company_id'
|
|
|
+ 'company_id', 'type'
|
|
|
]);
|
|
|
|
|
|
$approvalFlow->fill([
|
|
@@ -83,11 +97,12 @@ class ApprovalFlowController extends Controller
|
|
|
if ($nodeIsChange) {
|
|
|
$newApprovalFlow = new ApprovalFlow();
|
|
|
$newApprovalFlow->mergeFillable([
|
|
|
- 'company_id'
|
|
|
+ 'company_id', 'type',
|
|
|
]);
|
|
|
|
|
|
$newApprovalFlow->fill([
|
|
|
'name' => $request->name,
|
|
|
+ 'type' => $approvalFlow->type,
|
|
|
'object_type' => $approvalFlow->object_type,
|
|
|
'object_id' => $approvalFlow->object_id,
|
|
|
'company_id' => Auth::user()->company_id,
|
|
@@ -97,13 +112,15 @@ class ApprovalFlowController extends Controller
|
|
|
$newApprovalFlow->save();
|
|
|
|
|
|
$approvalFlow->delete();
|
|
|
+
|
|
|
+ return new ApprovalFlowDetailResource($newApprovalFlow);
|
|
|
} else {
|
|
|
$approvalFlow->name = $request->name;
|
|
|
$approvalFlow->nodes = $nodes;
|
|
|
$approvalFlow->save();
|
|
|
}
|
|
|
|
|
|
- return $this->noContent();
|
|
|
+ return new ApprovalFlowDetailResource($approvalFlow);
|
|
|
}
|
|
|
|
|
|
public function show(string $id)
|