Skip to content
Snippets Groups Projects
Commit 95dfcf4c authored by Guillaume Heurtier's avatar Guillaume Heurtier
Browse files

FEAT #13049 TIME 0:30 added preprocess close with fields

parent 38b7b9f2
No related branches found
No related tags found
No related merge requests found
...@@ -413,6 +413,7 @@ $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/ac ...@@ -413,6 +413,7 @@ $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/ac
$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkGiveParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkGiveParallelOpinion'); $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkGiveParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkGiveParallelOpinion');
$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkRejectVisa', \Action\controllers\PreProcessActionController::class . ':checkRejectVisa'); $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkRejectVisa', \Action\controllers\PreProcessActionController::class . ':checkRejectVisa');
$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkInterruptResetVisa', \Action\controllers\PreProcessActionController::class . ':checkInterruptResetVisa'); $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkInterruptResetVisa', \Action\controllers\PreProcessActionController::class . ':checkInterruptResetVisa');
$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkCloseWithFieldsAction', \Action\controllers\PreProcessActionController::class . ':checkCloseWithFieldsAction');
//Search //Search
$app->get('/search', \Search\controllers\SearchController::class . ':get'); $app->get('/search', \Search\controllers\SearchController::class . ':get');
......
...@@ -13,18 +13,21 @@ ...@@ -13,18 +13,21 @@
namespace Action\controllers; namespace Action\controllers;
use AcknowledgementReceipt\models\AcknowledgementReceiptModel; use AcknowledgementReceipt\models\AcknowledgementReceiptModel;
use Action\models\ActionModel;
use Attachment\models\AttachmentModel; use Attachment\models\AttachmentModel;
use Basket\models\BasketModel; use Basket\models\BasketModel;
use Basket\models\GroupBasketRedirectModel; use Basket\models\GroupBasketRedirectModel;
use Contact\controllers\ContactController; use Contact\controllers\ContactController;
use Contact\models\ContactModel; use Contact\models\ContactModel;
use Convert\controllers\ConvertPdfController; use Convert\controllers\ConvertPdfController;
use CustomField\models\CustomFieldModel;
use Docserver\models\DocserverModel; use Docserver\models\DocserverModel;
use Doctype\models\DoctypeModel; use Doctype\models\DoctypeModel;
use Entity\models\EntityModel; use Entity\models\EntityModel;
use Entity\models\ListInstanceModel; use Entity\models\ListInstanceModel;
use ExternalSignatoryBook\controllers\MaarchParapheurController; use ExternalSignatoryBook\controllers\MaarchParapheurController;
use Group\models\GroupModel; use Group\models\GroupModel;
use IndexingModel\models\IndexingModelFieldModel;
use Note\models\NoteModel; use Note\models\NoteModel;
use Parameter\models\ParameterModel; use Parameter\models\ParameterModel;
use Resource\controllers\ResController; use Resource\controllers\ResController;
...@@ -1340,6 +1343,84 @@ class PreProcessActionController ...@@ -1340,6 +1343,84 @@ class PreProcessActionController
return $response->withJson(['isDestinationChanging' => $changeDestination]); return $response->withJson(['isDestinationChanging' => $changeDestination]);
} }
public static function checkCloseWithFieldsAction(Request $request, Response $response, array $args)
{
$body = $request->getParsedBody();
if (!Validator::arrayType()->notEmpty()->validate($body['resources'])) {
return $response->withStatus(400)->withJson(['errors' => 'Body resources is empty or not an array']);
}
$errors = ResourceListController::listControl(['groupId' => $args['groupId'], 'userId' => $args['userId'], 'basketId' => $args['basketId'], 'currentUserId' => $GLOBALS['id']]);
if (!empty($errors['errors'])) {
return $response->withStatus($errors['code'])->withJson(['errors' => $errors['errors']]);
}
$body['resources'] = array_slice($body['resources'], 0, 500);
if (!ResController::hasRightByResId(['resId' => $body['resources'], 'userId' => $GLOBALS['id']])) {
return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
}
$body['resources'] = PreProcessActionController::getNonLockedResources(['resources' => $body['resources'], 'userId' => $GLOBALS['id']]);
$action = ActionModel::getById(['id' => $args['actionId'], 'select' => ['required_fields']]);
if (empty($action)) {
return $response->withStatus(400)->withJson(['errors' => 'Action does not exist']);
}
$actionRequiredFields = json_decode($action['required_fields']);
$canClose = [];
$emptyFields = [];
foreach ($body['resources'] as $resId) {
if (!empty($actionRequiredFields)) {
$resource = ResModel::getById(['resId' => $resId, 'select' => ['model_id', 'custom_fields', 'alt_identifier']]);
$model = $resource['model_id'];
$resourceCustomFields = json_decode($resource['custom_fields'], true);
$modelFields = IndexingModelFieldModel::get([
'select' => ['identifier'],
'where' => ['model_id = ?', "identifier LIKE 'indexingCustomField_%'"],
'data' => [$model]
]);
$modelFields = array_column($modelFields, 'identifier');
$emptyList = [];
foreach ($actionRequiredFields as $actionRequiredField) {
$idCustom = explode("_", $actionRequiredField)[1];
if (in_array($actionRequiredField, $modelFields) && empty($resourceCustomFields[$idCustom])) {
$emptyList[] = $idCustom;
}
}
if (!empty($emptyList)) {
$fieldsList = [];
$customs = CustomFieldModel::get([
'select' => ['label'],
'where' => ['id in (?)'],
'data' => [$emptyList]
]);
foreach ($customs as $custom) {
$fieldsList[] = $custom['label'];
}
$emptyFields[] = [
'chrono' => $resource['alt_identifier'],
'fields' => !empty($fieldsList) ? implode(", ", $fieldsList) : ''
];
} else {
$canClose[] = $resId;
}
} else {
$canClose[] = $resId;
}
}
return $response->withJson(['emptyFields' => $emptyFields, 'canClose' => $canClose]);
}
private static function getNonLockedResources(array $args) private static function getNonLockedResources(array $args)
{ {
ValidatorModel::notEmpty($args, ['resources', 'userId']); ValidatorModel::notEmpty($args, ['resources', 'userId']);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment