Skip to content

Commit 25bce29

Browse files
committed
feat: respect draft status when creating sign requests
When file status is draft, new sign requests should also start as draft regardless of signing order. This prevents automatic notifications and keeps requests in draft mode until file is ready. Signed-off-by: Vitor Mattos <[email protected]>
1 parent 45554e7 commit 25bce29

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

lib/Service/RequestSignatureService.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ private function associateToSigners(array $data, int $fileId): array {
203203
$this->deleteIdentifyMethodIfNotExits($data['users'], $fileId);
204204

205205
$this->sequentialSigningService->resetOrderCounter();
206+
$fileStatus = $data['status'] ?? null;
206207

207208
foreach ($data['users'] as $user) {
208209
$userProvidedOrder = isset($user['signingOrder']) ? (int)$user['signingOrder'] : null;
@@ -216,19 +217,21 @@ private function associateToSigners(array $data, int $fileId): array {
216217
],
217218
displayName: $user['displayName'] ?? '',
218219
description: $user['description'] ?? '',
219-
notify: empty($user['notify']) && $this->isStatusAbleToNotify($data['status'] ?? null),
220+
notify: empty($user['notify']) && $this->isStatusAbleToNotify($fileStatus),
220221
fileId: $fileId,
221222
signingOrder: $signingOrder,
223+
fileStatus: $fileStatus,
222224
);
223225
}
224226
} else {
225227
$return[] = $this->associateToSigner(
226228
identifyMethods: $user['identify'],
227229
displayName: $user['displayName'] ?? '',
228230
description: $user['description'] ?? '',
229-
notify: empty($user['notify']) && $this->isStatusAbleToNotify($data['status'] ?? null),
231+
notify: empty($user['notify']) && $this->isStatusAbleToNotify($fileStatus),
230232
fileId: $fileId,
231233
signingOrder: $signingOrder,
234+
fileStatus: $fileStatus,
232235
);
233236
}
234237
}
@@ -250,6 +253,7 @@ private function associateToSigner(
250253
bool $notify,
251254
int $fileId,
252255
int $signingOrder = 0,
256+
?int $fileStatus = null,
253257
): SignRequestEntity {
254258
$identifyMethodsIncances = $this->identifyMethod->getByUserData($identifyMethods);
255259
if (empty($identifyMethodsIncances)) {
@@ -268,7 +272,7 @@ private function associateToSigner(
268272
$currentStatus = $signRequest->getStatusEnum();
269273

270274
if ($isNewSignRequest || $currentStatus === \OCA\Libresign\Enum\SignRequestStatus::DRAFT) {
271-
$initialStatus = $this->determineInitialStatus($signingOrder);
275+
$initialStatus = $this->determineInitialStatus($signingOrder, $fileStatus);
272276
$signRequest->setStatusEnum($initialStatus);
273277
}
274278

@@ -284,7 +288,11 @@ private function associateToSigner(
284288
return $signRequest;
285289
}
286290

287-
private function determineInitialStatus(int $signingOrder): \OCA\Libresign\Enum\SignRequestStatus {
291+
private function determineInitialStatus(int $signingOrder, ?int $fileStatus = null): \OCA\Libresign\Enum\SignRequestStatus {
292+
if ($fileStatus === FileEntity::STATUS_DRAFT) {
293+
return \OCA\Libresign\Enum\SignRequestStatus::DRAFT;
294+
}
295+
288296
if (!$this->sequentialSigningService->isOrderedNumericFlow()) {
289297
return \OCA\Libresign\Enum\SignRequestStatus::ABLE_TO_SIGN;
290298
}

0 commit comments

Comments
 (0)