Skip to content
Snippets Groups Projects
Commit fe0705da authored by Damien's avatar Damien
Browse files

FEAT #6134 Save signatory

parent 939e214b
No related branches found
No related tags found
No related merge requests found
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*
*/
/**
* @brief Listinstance Model
* @author dev@maarch.org
* @ingroup listinstance
*/
namespace Core\Models;
class ListinstanceModel extends ListinstanceModelAbstract
{
}
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*
*/
/**
* @brief Listinstance Model Abstract
* @author dev@maarch.org
* @ingroup listinstance
*/
namespace Core\Models;
class ListinstanceModelAbstract
{
public static function setSignatory(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['resId', 'signatory', 'userId']);
ValidatorModel::intVal($aArgs, ['resId']);
ValidatorModel::stringType($aArgs, ['signatory', 'userId']);
DatabaseModel::update([
'table' => 'listinstance',
'set' => [
'signatory' => $aArgs['signatory']
],
'where' => ['res_id = ?', 'item_id = ?', 'difflist_type = ?'],
'data' => [$aArgs['resId'], $aArgs['userId'], 'VISA_CIRCUIT'],
]);
return true;
}
}
......@@ -17,7 +17,7 @@ class AttachmentsModelAbstract
{
public static function getById(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::notEmpty($aArgs, ['id', 'isVersion']);
ValidatorModel::intVal($aArgs, ['id']);
ValidatorModel::stringType($aArgs, ['isVersion']);
......@@ -150,7 +150,7 @@ class AttachmentsModelAbstract
DatabaseModel::update([
'table' => $aArgs['table'],
'set' => ['status' => 'A_TRA'],
'set' => ['status' => 'A_TRA', 'signatory_user_serial_id' => NULL],
'where' => ['res_id = ?'],
'data' => [$aArgs['resId']]
]);
......@@ -167,7 +167,7 @@ class AttachmentsModelAbstract
public static function setInSignatureBook(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::notEmpty($aArgs, ['id', 'isVersion']);
ValidatorModel::intVal($aArgs, ['id']);
ValidatorModel::stringType($aArgs, ['isVersion']);
ValidatorModel::boolType($aArgs, ['inSignatureBook']);
......@@ -194,4 +194,37 @@ class AttachmentsModelAbstract
return true;
}
public static function hasAttachmentsSignedForUserById(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id', 'user_serial_id', 'isVersion']);
ValidatorModel::intVal($aArgs, ['id', 'user_serial_id']);
ValidatorModel::stringType($aArgs, ['isVersion']);
if ($aArgs['isVersion'] == 'true') {
$table = 'res_version_attachments';
} else {
$table = 'res_attachments';
}
$attachment = DatabaseModel::select([
'select' => ['res_id_master'],
'table' => [$table],
'where' => ['res_id = ?'],
'data' => [$aArgs['id']],
]);
$attachments = DatabaseModel::select([
'select' => ['res_id_master'],
'table' => ['res_view_attachments'],
'where' => ['res_id_master = ?', 'signatory_user_serial_id = ?'],
'data' => [$attachment[0]['res_id_master'], $aArgs['user_serial_id']],
]);
if (empty($attachments)) {
return false;
}
return true;
}
}
......@@ -16,6 +16,7 @@ namespace Visa\Controllers;
use Apps\Models\ActionModel;
use Apps\Models\ContactModel;
use Attachments\Models\AttachmentsModel;
use Core\Models\ListinstanceModel;
use Core\Models\ResModel;
use Core\Models\UserModel;
use Core\Models\LangModel;
......@@ -93,6 +94,13 @@ class VisaController
{
AttachmentsModel::unsignAttachment(['table' => $aArgs['collId'], 'resId' => $aArgs['resId']]);
$isVersion = ($aArgs['collId'] == 'res_attachments' ? 'false' : 'true');
$user = UserModel::getById(['userId' => $_SESSION['user']['UserId'], 'select' => ['id']]);
if (!AttachmentsModel::hasAttachmentsSignedForUserById(['id' => $aArgs['resId'], 'isVersion' => $isVersion, 'user_serial_id' => $user['id']])) {
$attachment = AttachmentsModel::getById(['id' => $aArgs['resId'], 'isVersion' => $isVersion, 'select' => ['res_id_master']]);
ListinstanceModel::setSignatory(['resId' => $attachment['res_id_master'], 'signatory' => 'false', 'userId' => $_SESSION['user']['UserId']]);
}
return $response->withJson(['success' => 'success']);
}
......
......@@ -52,12 +52,13 @@ if (empty($docserver)) {
} else {
require_once "core/class/class_request.php";
$db = new Database();
if ($_SESSION['visa']['repSignRel'] > 1) {
$signatoryUser = \Core\Models\UserModel::getById(['userId' => $_SESSION['user']['UserId'], 'select' => ['id']]);
if ($_SESSION['visa']['repSignRel'] > 1) {
//$target_table = 'res_version_attachments';
$db->query("UPDATE res_version_attachments set status = 'SIGN' WHERE res_id = ?",[$_SESSION['visa']['repSignId']]);
$db->query("UPDATE res_version_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?",[$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
} else {
//$target_table = 'res_attachments';
$db->query("UPDATE res_attachments set status = 'SIGN' WHERE res_id = ?",[$_SESSION['visa']['repSignId']]);
$db->query("UPDATE res_attachments set status = 'SIGN', signatory_user_serial_id = ? WHERE res_id = ?",[$signatoryUser['id'], $_SESSION['visa']['repSignId']]);
}
unset($_SESSION['visa']['repSignRel']);
if (isset($_SESSION['visa']['repSignId'])) unset($_SESSION['visa']['repSignId']);
......
......@@ -107,8 +107,9 @@ if (!empty($_REQUEST['id']) && !empty($_REQUEST['collId'])) {
$fileExtension = "pdf";
include 'modules/visa/save_attach_res_from_cm.php';
echo "{\"status\": 0, \"new_id\": $id}";
$db->query('UPDATE listinstance set signatory = TRUE WHERE listinstance_id = (SELECT listinstance_id WHERE res_id = ? AND item_id = ? AND difflist_type = ? AND process_date is null ORDER BY listinstance_id LIMIT 1)', [$objectResIdMaster, $_SESSION['user']['UserId'], 'VISA_CIRCUIT']);
echo "{\"status\": 0, \"new_id\": $id}";
exit;
}
} else {
......
......@@ -123,11 +123,17 @@ WITH (OIDS=FALSE);
ALTER TABLE entities DROP COLUMN IF EXISTS entity_full_name;
ALTER TABLE entities ADD entity_full_name text;
/*IN SIGNATURE BOOK*/
/*SIGNATURE BOOK*/
ALTER TABLE res_attachments DROP COLUMN IF EXISTS in_signature_book;
ALTER TABLE res_attachments ADD in_signature_book boolean default false;
ALTER TABLE res_version_attachments DROP COLUMN IF EXISTS in_signature_book;
ALTER TABLE res_version_attachments ADD in_signature_book boolean default false;
ALTER TABLE res_attachments DROP COLUMN IF EXISTS signatory_user_serial_id;
ALTER TABLE res_attachments ADD signatory_user_serial_id int;
ALTER TABLE res_version_attachments DROP COLUMN IF EXISTS signatory_user_serial_id;
ALTER TABLE res_version_attachments ADD signatory_user_serial_id int;
ALTER TABLE listinstance DROP COLUMN IF EXISTS signatory;
ALTER TABLE listinstance ADD signatory boolean default false;
DROP VIEW IF EXISTS res_view_attachments;
CREATE VIEW res_view_attachments AS
SELECT '0' as res_id, res_id as res_id_version, title, subject, description, publisher, contributor, type_id, format, typist,
......@@ -136,7 +142,7 @@ CREATE VIEW res_view_attachments AS
filename, offset_doc, logical_adr, fingerprint, filesize, is_paper, page_count,
scan_date, scan_user, scan_location, scan_wkstation, scan_batch, burn_batch, scan_postmark,
envelop_id, status, destination, approver, validation_date, effective_date, work_batch, origin, is_ingoing, priority, initiator, dest_user,
coll_id, dest_contact_id, dest_address_id, updated_by, is_multicontacts, is_multi_docservers, res_id_master, attachment_type, attachment_id_master, in_signature_book
coll_id, dest_contact_id, dest_address_id, updated_by, is_multicontacts, is_multi_docservers, res_id_master, attachment_type, attachment_id_master, in_signature_book, signatory_user_serial_id
FROM res_version_attachments
UNION ALL
SELECT res_id, '0' as res_id_version, title, subject, description, publisher, contributor, type_id, format, typist,
......@@ -145,5 +151,5 @@ CREATE VIEW res_view_attachments AS
filename, offset_doc, logical_adr, fingerprint, filesize, is_paper, page_count,
scan_date, scan_user, scan_location, scan_wkstation, scan_batch, burn_batch, scan_postmark,
envelop_id, status, destination, approver, validation_date, effective_date, work_batch, origin, is_ingoing, priority, initiator, dest_user,
coll_id, dest_contact_id, dest_address_id, updated_by, is_multicontacts, is_multi_docservers, res_id_master, attachment_type, '0', in_signature_book
coll_id, dest_contact_id, dest_address_id, updated_by, is_multicontacts, is_multi_docservers, res_id_master, attachment_type, '0', in_signature_book, signatory_user_serial_id
FROM res_attachments;
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