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

[REFACTORING] set action

parent ccc31547
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ $app->get('/documents', \Document\controllers\DocumentController::class . ':get'
$app->get('/documents/{id}', \Document\controllers\DocumentController::class . ':getById');
$app->get('/documents/{id}/status', \Document\controllers\DocumentController::class . ':getStatusById');
$app->get('/documents/{id}/handwrittenDocument', \Document\controllers\DocumentController::class . ':getHandwrittenDocumentById');
$app->put('/documents/{id}/action', \Document\controllers\DocumentController::class . ':makeAction');
$app->put('/documents/{id}/actions/{actionId}', \Document\controllers\DocumentController::class . ':setAction');
//Password Rules
$app->get('/passwordRules', \SrcCore\controllers\PasswordController::class . ':get');
......
......@@ -191,69 +191,62 @@ class DocumentController
return $response->withJson(['documentId' => $id]);
}
public function makeAction(Request $request, Response $response, array $args)
public function setAction(Request $request, Response $response, array $args)
{
$data = $request->getParams();
ValidatorModel::notEmpty($data, ['action_id']);
ValidatorModel::intVal($data, ['action_id']);
/*if (!empty($data['signatures'])) {
foreach ($data['signatures'] as $signature) {
foreach (['fullPath', 'width', 'positionX', 'positionY', 'page'] as $value) {
if (empty($signature[$value])) {
return $response->withStatus(400)->withJson(['errors' => $value . ' is empty']);
}
}
}
}*/
if (!DocumentController::hasRightById(['id' => $args['id'], 'email' => $GLOBALS['email']])) {
return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
}
$action = ActionModel::getById(['select' => ['next_status_id', 'label'], 'id' => $data['action_id']]);
$action = ActionModel::getById(['select' => ['next_status_id'], 'id' => $args['actionId']]);
if (empty($action)) {
return $response->withStatus(403)->withJson(['errors' => 'Action does not exist']);
}
$adr = AdrModel::getDocumentsAdr([
'select' => ['path', 'filename'],
'where' => ['main_document_id = ?', 'type = ?'],
'data' => [$args['id'], 'DOC']
]);
if (empty($adr)) {
return $response->withStatus(400)->withJson(['errors' => 'Document does not exist in database']);
return $response->withStatus(400)->withJson(['errors' => 'Action does not exist']);
}
$docserver = DocserverModel::getByType(['type' => 'DOC', 'select' => ['path']]);
if (empty($docserver['path']) || !file_exists($docserver['path'])) {
return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']);
}
$pathToDocument = $docserver['path'] . $adr[0]['path'] . $adr[0]['filename'];
if (!file_exists($pathToDocument)) {
return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']);
}
$data = $request->getParams();
if (!empty($data['signatures'])) {
foreach ($data['signatures'] as $signature) {
foreach (['encodedImage', 'width', 'positionX', 'positionY', 'page', 'type'] as $value) {
if (!isset($signature[$value])) {
return $response->withStatus(400)->withJson(['errors' => $value . ' is empty']);
}
}
}
$tmpPath = CoreConfigModel::getTmpPath();
$tmpFilename = $tmpPath . $GLOBALS['email'] . '_' . rand() . '_' . $adr[0]['filename'];
copy($pathToDocument, $tmpFilename);
$adr = AdrModel::getDocumentsAdr([
'select' => ['path', 'filename'],
'where' => ['main_document_id = ?', 'type = ?'],
'data' => [$args['id'], 'DOC']
]);
if (empty($adr)) {
return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']);
}
$pdf = new Fpdi('P');
$nbPages = $pdf->setSourceFile($tmpFilename);
$pdf->setPrintHeader(false);
$docserver = DocserverModel::getByType(['type' => 'DOC', 'select' => ['path']]);
if (empty($docserver['path']) || !file_exists($docserver['path'])) {
return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']);
}
$pathToDocument = $docserver['path'] . $adr[0]['path'] . $adr[0]['filename'];
if (!file_exists($pathToDocument)) {
return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']);
}
for ($i = 1; $i <= $nbPages; $i++) {
$page = $pdf->importPage($i);
$size = $pdf->getTemplateSize($page);
$pdf->AddPage($size['orientation'], $size);
$pdf->useImportedPage($page);
$pdf->SetAutoPageBreak(false, 0);
$pdf->SetMargins(0, 0, 0);
$pdf->SetAutoPageBreak(false, 0);
if (!empty($data['signatures'])) {
$tmpPath = CoreConfigModel::getTmpPath();
$tmpFilename = $tmpPath . $GLOBALS['email'] . '_' . rand() . '_' . $adr[0]['filename'];
copy($pathToDocument, $tmpFilename);
$pdf = new Fpdi('P');
$nbPages = $pdf->setSourceFile($tmpFilename);
$pdf->setPrintHeader(false);
for ($i = 1; $i <= $nbPages; $i++) {
$page = $pdf->importPage($i);
$size = $pdf->getTemplateSize($page);
$pdf->AddPage($size['orientation'], $size);
$pdf->useImportedPage($page);
$pdf->SetAutoPageBreak(false, 0);
$pdf->SetMargins(0, 0, 0);
$pdf->SetAutoPageBreak(false, 0);
foreach ($data['signatures'] as $signature) {
if ($signature['page'] == $i) {
if ($signature['positionX'] == 0 && $signature['positionY'] == 0) {
......@@ -266,51 +259,44 @@ class DocumentController
$signPosY = ($signature['positionY'] * $size['height']) / 100;
}
if ($signature['type'] == 'SVG') {
$data = str_replace('data:image/svg+xml;base64,', '', $signature['fullPath']);
$image = base64_decode($data);
$image = str_replace('data:image/svg+xml;base64,', '', $signature['encodedImage']);
$image = base64_decode($image);
if ($image === false) {
return $response->withStatus(400)->withJson(['errors' => 'base64_decode failed']);
}
$imageTmpPath = $tmpPath . $GLOBALS['email'] . '_' . rand() . '_writing.svg';
file_put_contents($imageTmpPath, $image);
$pdf->ImageSVG($imageTmpPath, $signPosX, $signPosY, $signWidth);
} else {
$data = $signature['fullPath'];
$image = base64_decode($data);
$image = base64_decode($signature['encodedImage']);
if ($image === false) {
return $response->withStatus(400)->withJson(['errors' => 'base64_decode failed']);
}
$imageTmpPath = $tmpPath . $GLOBALS['email'] . '_' . rand() . '_writing.png';
file_put_contents($imageTmpPath, $image);
$pdf->Image($imageTmpPath, $signPosX, $signPosY, $signWidth);
}
}
}
}
$fileContent = $pdf->Output('', 'S');
$storeInfos = DocserverController::storeResourceOnDocServer([
'encodedFile' => base64_encode($fileContent),
'format' => 'pdf',
'docserverType' => 'HANDWRITTEN'
]);
AdrModel::createDocumentAdr([
'documentId' => $args['id'],
'type' => 'HANDWRITTEN',
'path' => $storeInfos['path'],
'filename' => $storeInfos['filename'],
'fingerprint' => $storeInfos['fingerprint']
]);
}
$fileContent = $pdf->Output('', 'S');
$storeInfos = DocserverController::storeResourceOnDocServer([
'encodedFile' => base64_encode($fileContent),
'format' => 'pdf',
'docserverType' => 'HANDWRITTEN'
]);
AdrModel::createDocumentAdr([
'documentId' => $args['id'],
'type' => 'HANDWRITTEN',
'path' => $storeInfos['path'],
'filename' => $storeInfos['filename'],
'fingerprint' => $storeInfos['fingerprint']
]);
DocumentModel::update([
'set' => ['status' => $action['next_status_id']],
......@@ -322,7 +308,7 @@ class DocumentController
'tableName' => 'main_documents',
'recordId' => $args['id'],
'eventType' => 'UP',
'info' => 'actionDone' . ' : ' . $action['label']
'info' => "actionDone : {$args['actionId']}"
]);
return $response->withJson(['success' => 'success']);
......
......@@ -292,7 +292,6 @@ export class DocumentComponent implements OnInit {
}
this.signaturesService.notesContent[this.signaturesService.currentPage].push(
{
// 'fullPath': this.signaturePad.toDataURL('image/npg'),
'fullPath': this.signaturePad.toDataURL('image/svg+xml'),
'positionX': (this.signaturePadPosX * 100) / this.annotationPadOptions.canvasWidth,
'positionY': (this.signaturePadPosY * 100) / this.annotationPadOptions.canvasHeight,
......@@ -300,7 +299,6 @@ export class DocumentComponent implements OnInit {
'width': 768,
}
);
console.log();
this.signaturePad.clear();
this.scale = 1;
this.signaturesService.annotationMode = false;
......@@ -466,13 +464,12 @@ export class WarnModalComponent {
this.signaturesService.signaturesContent[index].forEach((signature: any) => {
signatures.push(
{
'fullPath': signature.encodedSignature,
'height': 'auto',
'width': (this.signaturesService.signWidth * 100) / signature.pdfAreaX,
'positionX': (signature.positionX * 100) / signature.pdfAreaX,
'positionY': (signature.positionY * 100) / signature.pdfAreaY,
'type': 'PNG',
'page': index,
'encodedImage' : signature.encodedSignature,
'width' : (this.signaturesService.signWidth * 100) / signature.pdfAreaX,
'positionX' : (signature.positionX * 100) / signature.pdfAreaX,
'positionY' : (signature.positionY * 100) / signature.pdfAreaY,
'type' : 'PNG',
'page' : index
}
);
});
......@@ -481,19 +478,18 @@ export class WarnModalComponent {
this.signaturesService.notesContent[index].forEach((note: any) => {
signatures.push(
{
'fullPath': note.fullPath,
'height': note.height,
'width': note.width,
'positionX': note.positionX,
'positionY': note.positionY,
'type': 'SVG',
'page': index,
'encodedImage' : note.fullPath,
'width' : note.width,
'positionX' : note.positionX,
'positionY' : note.positionY,
'type' : 'SVG',
'page' : index
}
);
});
}
}
this.http.put('../rest/documents/' + this.signaturesService.mainDocumentId + '/action', {'action_id': this.signaturesService.currentAction, 'signatures': signatures})
this.http.put('../rest/documents/' + this.signaturesService.mainDocumentId + '/actions/' + this.signaturesService.currentAction, {'signatures': signatures})
.subscribe(() => {
this.signaturesService.documentsList.splice(this.signaturesService.indexDocumentsList, 1);
this.signaturesService.documentsListCount--;
......@@ -523,13 +519,12 @@ export class ConfirmModalComponent {
this.signaturesService.signaturesContent[index].forEach((signature: any) => {
signatures.push(
{
'fullPath': signature.encodedSignature,
'height': 'auto',
'width': (this.signaturesService.signWidth * 100) / signature.pdfAreaX,
'positionX': (signature.positionX * 100) / signature.pdfAreaX,
'positionY': (signature.positionY * 100) / signature.pdfAreaY,
'type': 'PNG',
'page': index,
'encodedImage' : signature.encodedSignature,
'width' : (this.signaturesService.signWidth * 100) / signature.pdfAreaX,
'positionX' : (signature.positionX * 100) / signature.pdfAreaX,
'positionY' : (signature.positionY * 100) / signature.pdfAreaY,
'type' : 'PNG',
'page' : index,
}
);
});
......@@ -538,19 +533,18 @@ export class ConfirmModalComponent {
this.signaturesService.notesContent[index].forEach((note: any) => {
signatures.push(
{
'fullPath': note.fullPath,
'height': note.height,
'width': note.width,
'positionX': note.positionX,
'positionY': note.positionY,
'type': 'SVG',
'page': index,
'encodedImage' : note.fullPath,
'width' : note.width,
'positionX' : note.positionX,
'positionY' : note.positionY,
'type' : 'SVG',
'page' : index,
}
);
});
}
}
this.http.put('../rest/documents/' + this.signaturesService.mainDocumentId + '/action', {'action_id': this.signaturesService.currentAction, 'signatures': signatures})
this.http.put('../rest/documents/' + this.signaturesService.mainDocumentId + '/actions/' + this.signaturesService.currentAction, {'signatures': signatures})
.subscribe(() => {
this.dialogRef.close('sucess');
this.signaturesService.documentsList.splice(this.signaturesService.indexDocumentsList, 1);
......
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