diff --git a/src/app/action/controllers/PreProcessActionController.php b/src/app/action/controllers/PreProcessActionController.php index 4f963fc215445046094598f93b78b8d5a946cbc9..c9636936293e7748a86436f7e789f2de89ddca23 100644 --- a/src/app/action/controllers/PreProcessActionController.php +++ b/src/app/action/controllers/PreProcessActionController.php @@ -375,6 +375,33 @@ class PreProcessActionController $data = $request->getParsedBody(); + $data['resources'] = array_slice($data['resources'], 0, 500); + if (!ResController::hasRightByResId(['resId' => $data['resources'], 'userId' => $GLOBALS['userId']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $resources = ResModel::get([ + 'select' => ['res_id', 'locker_user_id', 'locker_time'], + 'where' => ['res_id in (?)'], + 'data' => [$data['resources']] + ]); + + $resourcesForProcess = []; + foreach ($resources as $resource) { + $lock = true; + if (empty($resource['locker_user_id'] || empty($resource['locker_time']))) { + $lock = false; + } elseif ($resource['locker_user_id'] == $currentUser['id']) { + $lock = false; + } elseif (strtotime($resource['locker_time']) < time()) { + $lock = false; + } + if (!$lock) { + $resourcesForProcess[] = $resource['res_id']; + } + } + $data['resources'] = $resourcesForProcess; + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); $errors = [];