Skip to content

Commit 2be8cb4

Browse files
committed
1 parent 0605c4d commit 2be8cb4

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

GaelO2/app/GaelO/UseCases/ModifyVisitDate/ModifyVisitDate.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\GaelO\Constants\Constants;
66
use App\GaelO\Exceptions\AbstractGaelOException;
7+
use App\GaelO\Exceptions\GaelOBadRequestException;
78
use App\GaelO\Exceptions\GaelOForbiddenException;
89
use App\GaelO\Interfaces\Repositories\TrackerRepositoryInterface;
910
use App\GaelO\Interfaces\Repositories\VisitRepositoryInterface;
@@ -32,11 +33,16 @@ public function execute(ModifyVisitDateRequest $modifyVisitDateRequest, ModifyVi
3233
$visitId = $modifyVisitDateRequest->visitId;
3334
$currentUserId = $modifyVisitDateRequest->currentUserId;
3435
$newVisitDate = $modifyVisitDateRequest->visitDate;
36+
$reason = $modifyVisitDateRequest->reason ?? null;
37+
38+
if (!$reason || empty($reason)) {
39+
throw new GaelOBadRequestException('Reason must be specified');
40+
}
3541

3642
$visitContext = $this->visitRepositoryInterface->getVisitContext($visitId);
3743
$studyName = $visitContext['patient']['study_name'];
3844

39-
if($modifyVisitDateRequest->studyName !== $studyName){
45+
if ($modifyVisitDateRequest->studyName !== $studyName) {
4046
throw new GaelOForbiddenException("should be called from original study");
4147
}
4248

GaelO2/app/GaelO/UseCases/ModifyVisitDate/ModifyVisitDateRequest.php

+1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ class ModifyVisitDateRequest
88
public string $studyName;
99
public int $visitId;
1010
public string $visitDate;
11+
public string $reason;
1112
}

GaelO2/tests/Feature/TestVisits/ModifyVisitDateTest.php

+21-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public function testModifyVisitDate()
2727
AuthorizationTools::addRoleToUser($currentUserId, Constants::ROLE_SUPERVISOR, $this->studyName);
2828

2929
$payload = [
30-
'visitDate' => now()
30+
'visitDate' => now(),
31+
'reason' => 'changeDate'
3132
];
3233

3334
$response = $this->put('/api/visits/'.$this->visit->id.'/visit-date?studyName='.$this->studyName, $payload);
@@ -36,13 +37,29 @@ public function testModifyVisitDate()
3637

3738
}
3839

40+
public function testModifyVisitDateShouldFailMissingReason()
41+
{
42+
$currentUserId = AuthorizationTools::actAsAdmin(false);
43+
AuthorizationTools::addRoleToUser($currentUserId, Constants::ROLE_SUPERVISOR, $this->studyName);
44+
45+
$payload = [
46+
'visitDate' => now(),
47+
];
48+
49+
$response = $this->put('/api/visits/'.$this->visit->id.'/visit-date?studyName='.$this->studyName, $payload);
50+
51+
$response->assertStatus(400);
52+
53+
}
54+
3955
public function testModifyVisitDateShouldFailWrongStudy()
4056
{
4157
$currentUserId = AuthorizationTools::actAsAdmin(false);
4258
AuthorizationTools::addRoleToUser($currentUserId, Constants::ROLE_SUPERVISOR, $this->studyName);
4359

4460
$payload = [
45-
'visitDate' => now()
61+
'visitDate' => now(),
62+
'reason' => 'changeDate'
4663
];
4764

4865
$response = $this->put('/api/visits/'.$this->visit->id.'/visit-date?studyName='.$this->studyName. 'wrong', $payload);
@@ -57,7 +74,8 @@ public function testModifyVisitDateShouldFailNoRole()
5774
AuthorizationTools::addRoleToUser($currentUserId, Constants::ROLE_INVESTIGATOR, $this->studyName);
5875

5976
$payload = [
60-
'visitDate' => now()
77+
'visitDate' => now(),
78+
'reason' => 'changeDate'
6179
];
6280

6381
$response = $this->put('/api/visits/'.$this->visit->id.'/visit-date?studyName='.$this->studyName, $payload);

0 commit comments

Comments
 (0)