Skip to content

Commit 8eefc57

Browse files
authored
Merge pull request #6104 from LibreSign/backport/6103/stable31
[stable31] fix: respect draft status in sign requests
2 parents 3cd1cb0 + 161c0f6 commit 8eefc57

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

lib/Service/FileService.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,7 @@ private function associateAllAndFormat(IUser $user, array $files, array $signers
835835
'signed' => null,
836836
'signRequestId' => $signer->getId(),
837837
'signingOrder' => $signer->getSigningOrder(),
838+
'status' => $signer->getStatus(),
838839
'me' => array_reduce($identifyMethodsOfSigner, function (bool $carry, IdentifyMethod $identifyMethod) use ($user): bool {
839840
if ($identifyMethod->getIdentifierKey() === IdentifyMethodService::IDENTIFY_ACCOUNT) {
840841
if ($user->getUID() === $identifyMethod->getIdentifierValue()) {

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)