Skip to content

Commit c06e868

Browse files
committed
chore(refactor): Move logic of save multiple files to service
Signed-off-by: Vitor Mattos <[email protected]>
1 parent 513a06d commit c06e868

2 files changed

Lines changed: 42 additions & 16 deletions

File tree

lib/Controller/FileController.php

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -651,28 +651,14 @@ private function saveFiles(array $files, string $name, array $settings): DataRes
651651
throw new LibresignException($this->l10n->t('File or files parameter is required'));
652652
}
653653

654-
if (count($files) === 1) {
655-
$fileData = $files[0];
656-
$fileName = $name;
657-
$prepared = $this->prepareFileForSaving($fileData, $fileName, $settings);
658-
$savedFile = $this->requestSignatureService->save([
659-
'file' => ['fileNode' => $prepared['node']],
660-
'name' => $prepared['name'],
661-
'userManager' => $this->userSession->getUser(),
662-
'status' => FileEntity::STATUS_DRAFT,
663-
]);
664-
665-
return $this->formatFileResponse($savedFile, [$savedFile]);
666-
}
667-
668-
$result = $this->requestSignatureService->saveEnvelope([
654+
$result = $this->requestSignatureService->saveFiles([
669655
'files' => $files,
670656
'name' => $name,
671657
'userManager' => $this->userSession->getUser(),
672658
'settings' => $settings,
673659
]);
674660

675-
return $this->formatFileResponse($result['envelope'], $result['files']);
661+
return $this->formatFileResponse($result['file'], $result['children']);
676662
}
677663

678664
/**

lib/Service/RequestSignatureService.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use OCA\Libresign\Db\SignRequestMapper;
1818
use OCA\Libresign\Enum\SignatureFlow;
1919
use OCA\Libresign\Events\SignRequestCanceledEvent;
20+
use OCA\Libresign\Exception\LibresignException;
2021
use OCA\Libresign\Handler\DocMdpHandler;
2122
use OCA\Libresign\Helper\FileUploadHelper;
2223
use OCA\Libresign\Helper\ValidateHelper;
@@ -63,6 +64,45 @@ public function __construct(
6364
) {
6465
}
6566

67+
/**
68+
* Save files - creates single file or envelope based on files count
69+
*
70+
* @param array{files: array, name: string, settings: array, userManager: IUser} $data
71+
* @return array{file: FileEntity, children: FileEntity[]}
72+
*/
73+
public function saveFiles(array $data): array {
74+
if (empty($data['files'])) {
75+
throw new LibresignException('Files parameter is required');
76+
}
77+
78+
if (count($data['files']) === 1) {
79+
$fileData = $data['files'][0];
80+
$savedFile = $this->save([
81+
'file' => ['fileNode' => $fileData['node']],
82+
'name' => $fileData['name'],
83+
'userManager' => $data['userManager'],
84+
'status' => FileEntity::STATUS_DRAFT,
85+
]);
86+
87+
return [
88+
'file' => $savedFile,
89+
'children' => [$savedFile],
90+
];
91+
}
92+
93+
$result = $this->saveEnvelope([
94+
'files' => $data['files'],
95+
'name' => $data['name'],
96+
'userManager' => $data['userManager'],
97+
'settings' => $data['settings'],
98+
]);
99+
100+
return [
101+
'file' => $result['envelope'],
102+
'children' => $result['files'],
103+
];
104+
}
105+
66106
public function save(array $data): FileEntity {
67107
$file = $this->saveFile($data);
68108
$this->saveVisibleElements($data, $file);

0 commit comments

Comments
 (0)