Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIV-14295 test PR #5094

Closed
wants to merge 71 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
85f7d51
CIV-14233 Added validate discontinue event
kalachandrasekar1 Jun 27, 2024
2f56119
Merge branch 'master' into feat/CIV-14233
kalachandrasekar1 Jun 27, 2024
b65aaa4
Merge branch 'master' into feat/CIV-14233
kalachandrasekar1 Jun 27, 2024
b32a15c
Merge branch 'master' into feat/CIV-14233
kalachandrasekar1 Jun 28, 2024
30446bc
CIV-14146: Added midEvent and validations
sjamihmcts Jul 1, 2024
e47af85
Merge branch 'master' into feat/CIV-14233
Azam-Hmcts Jul 1, 2024
70922fe
CIV-14128:Updated midEvent and caseData fields
sjamihmcts Jul 1, 2024
c78c588
CIV-14128: Added more unit tests
sjamihmcts Jul 2, 2024
1af507f
Merge branch 'master' into feat/CIV-14146_Service
sjamihmcts Jul 2, 2024
a1bda00
CIV-14128: Fix checkstyle errors
sjamihmcts Jul 2, 2024
cad29fa
CIV-14146: Fix checkstyle errors
sjamihmcts Jul 2, 2024
3b28b37
CIV-14146: Remove this field as this is not needed for now
sjamihmcts Jul 2, 2024
6a78d3a
CIV-14146: Organized imports
sjamihmcts Jul 2, 2024
2fde3a5
Merge branch 'master' into feat/CIV-14146_Service
sjamihmcts Jul 2, 2024
ec45a4e
CIV-14146: Updated tests
sjamihmcts Jul 2, 2024
c1d55ff
Merge remote-tracking branch 'origin/feat/CIV-14146_Service' into fea…
sjamihmcts Jul 2, 2024
c8adde8
Merge remote-tracking branch 'origin/feat/CIV-14233' into feat/CIV-14236
hmcts-version1-ignacio Jul 2, 2024
e3ca5bb
Merge branch 'master' into feat/CIV-14146_Service
sjamihmcts Jul 2, 2024
7c84502
Merge remote-tracking branch 'origin/feat/CIV-14146_Service' into fea…
hmcts-version1-ignacio Jul 3, 2024
482f73c
CIV-14236 update handler
hmcts-version1-ignacio Jul 3, 2024
7511555
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 4, 2024
a70d6a0
Merge branch 'master' into feat/CIV-14146_Service
Azam-Hmcts Jul 4, 2024
ae91573
Merge branch 'master' into feat/CIV-14146_Service
Azam-Hmcts Jul 4, 2024
41f01a3
Merge branch 'master' into feat/CIV-14146_Service
Azam-Hmcts Jul 4, 2024
f4ae47d
CIV-14194 initial commit
kalachandrasekar1 Jul 4, 2024
dc0b57d
Merge branch 'master' into feat/CIV-14194
kalachandrasekar1 Jul 5, 2024
6d3ff3e
CIV-14194 test cases added
kalachandrasekar1 Jul 5, 2024
c763b5c
CIV-14236 update handler and classes
hmcts-version1-ignacio Jul 5, 2024
3596e21
Merge branch 'master' into feat/CIV-14194
kalachandrasekar1 Jul 8, 2024
851320f
CIV-14194 removed extra space
kalachandrasekar1 Jul 8, 2024
8177964
CIV-14194 testcase updated
kalachandrasekar1 Jul 8, 2024
c3e94ff
CIV-14236 update handler and classes
hmcts-version1-ignacio Jul 8, 2024
51496b5
Merge branch 'master' into feat/CIV-14194
kalachandrasekar1 Jul 9, 2024
824d449
CIV-14236 Add unit tests
hmcts-version1-ignacio Jul 9, 2024
18ad29d
CIV-14236 Add unit tests
hmcts-version1-ignacio Jul 9, 2024
2abd9b9
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 9, 2024
5b604ef
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 9, 2024
97492b5
CIV-14236 Fix merging issue
hmcts-version1-ignacio Jul 9, 2024
0b5d5f9
Merge remote-tracking branch 'origin/feat/CIV-14194' into feat/CIV-14236
hmcts-version1-ignacio Jul 10, 2024
ccc87b6
CIV-14236 Fix merging issues
hmcts-version1-ignacio Jul 10, 2024
2e4fbd6
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 10, 2024
8e98954
CIV-14236 Fix merging issues
hmcts-version1-ignacio Jul 10, 2024
4d7e983
CIV-14236 Add extra condition for negative scenario
hmcts-version1-ignacio Jul 10, 2024
fd1dc88
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 10, 2024
1ee216a
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 10, 2024
682c509
Merge branch 'master' into feat/CIV-14236
Azam-Hmcts Jul 10, 2024
36f0a26
Merge branch 'master' into feat/CIV-14236
hmcts-version1-ignacio Jul 11, 2024
b7cb328
Merge branch 'master' into feat/CIV-14295
hmcts-version1-ignacio Jul 11, 2024
f0691d3
Merge branch 'master' into feat/CIV-14295
hmcts-version1-ignacio Jul 11, 2024
359f284
CIV-14295 Add new notification
hmcts-version1-ignacio Jul 12, 2024
b6fa721
CIV-14295 Add new notification
hmcts-version1-ignacio Jul 12, 2024
2db45ff
CIV-14295 ValidateDiscontinuance handler unit tests
hmcts-version1-ignacio Jul 15, 2024
1aa1c1d
CIV-14295 ValidateDiscontinuance handler unit tests
hmcts-version1-ignacio Jul 15, 2024
30ab61a
CIV-14295 ValidateDiscontinuance handler unit tests
hmcts-version1-ignacio Jul 15, 2024
3876ecb
CIV-14295 ValidateDiscontinuance handler unit tests
hmcts-version1-ignacio Jul 15, 2024
b8dcd01
Merge branch 'master' into feat/CIV-14295
hmcts-version1-ignacio Jul 15, 2024
d85b458
CIV-14295 Add new Update Visibility handler
hmcts-version1-ignacio Jul 16, 2024
bd64d4c
CIV-14295 Update unit tests
hmcts-version1-ignacio Jul 16, 2024
2b1ddb9
Merge branch 'master' into feat/CIV-14295
hmcts-version1-ignacio Jul 16, 2024
676ce3a
CIV-14295 Update unit tests
hmcts-version1-ignacio Jul 16, 2024
93819b4
CIV-14295 Test pr
hmcts-version1-ignacio Jul 16, 2024
d081524
Merge branch 'master' into feat/CIV-14295-test
hmcts-version1-ignacio Jul 16, 2024
8a6b16f
CIV-14295 Test pr
hmcts-version1-ignacio Jul 16, 2024
fd8792f
Merge remote-tracking branch 'origin/feat/CIV-14295-test' into feat/C…
hmcts-version1-ignacio Jul 16, 2024
b21bfc2
Merge branch 'master' into feat/CIV-14295-test
hmcts-version1-ignacio Jul 16, 2024
e9a6e78
Merge branch 'master' into feat/CIV-14295-test
Azam-Hmcts Jul 16, 2024
df3428d
Merge branch 'master' into feat/CIV-14295-test
Azam-Hmcts Jul 18, 2024
19e31dd
Merge branch 'master' into feat/CIV-14295-test
Azam-Hmcts Jul 18, 2024
ac3409f
Update Jenkinsfile_CNP
Azam-Hmcts Jul 18, 2024
ce670a6
Update Jenkinsfile_CNP
Azam-Hmcts Jul 19, 2024
b46f508
Merge branch 'master' into feat/CIV-14295-test
Azam-Hmcts Jul 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,9 @@ public enum CaseEvent {
CREATE_DASHBOARD_NOTIFICATION_DECISION_RECONSIDERATION_CLAIMANT1(CAMUNDA),
CREATE_DASHBOARD_NOTIFICATION_DECISION_RECONSIDERATION_DEFENDANT1(CAMUNDA),
NOTIFY_CLAIMANT_UPLOADED_DOCUMENT_ORDER_NOTICE(CAMUNDA),
NOTIFY_DEFENDANT_UPLOADED_DOCUMENT_ORDER_NOTICE(CAMUNDA);
NOTIFY_DEFENDANT_UPLOADED_DOCUMENT_ORDER_NOTICE(CAMUNDA),
NOTIFY_VALIDATION_DICONTINUANCE_FAILURE_CLAIMANT(CAMUNDA),
UPDATE_VISIBILITY_NOTICE_OF_DISCONTINUANCE(CAMUNDA);

private final UserType userType;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package uk.gov.hmcts.reform.civil.handler.callback.camunda.notification;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.reform.ccd.client.model.AboutToStartOrSubmitCallbackResponse;
import uk.gov.hmcts.reform.ccd.client.model.CallbackResponse;
import uk.gov.hmcts.reform.civil.callback.Callback;
import uk.gov.hmcts.reform.civil.callback.CallbackHandler;
import uk.gov.hmcts.reform.civil.callback.CallbackParams;
import uk.gov.hmcts.reform.civil.callback.CaseEvent;
import uk.gov.hmcts.reform.civil.model.CaseData;
import uk.gov.hmcts.reform.civil.notify.NotificationService;
import uk.gov.hmcts.reform.civil.notify.NotificationsProperties;
import uk.gov.hmcts.reform.civil.service.OrganisationService;

import java.util.List;
import java.util.Map;

import static uk.gov.hmcts.reform.civil.callback.CallbackType.ABOUT_TO_SUBMIT;
import static uk.gov.hmcts.reform.civil.callback.CaseEvent.NOTIFY_VALIDATION_DICONTINUANCE_FAILURE_CLAIMANT;
import static uk.gov.hmcts.reform.civil.utils.NotificationUtils.getApplicantLegalOrganizationName;

@Service
@RequiredArgsConstructor
public class NotifyClaimantLrValidationDiscontinuanceFailureHandler extends CallbackHandler
implements NotificationData {

private static final List<CaseEvent> EVENTS = List.of(NOTIFY_VALIDATION_DICONTINUANCE_FAILURE_CLAIMANT);
public static final String TASK_ID = "NotifyValidationFailureClaimant";
private static final String REFERENCE_TEMPLATE =
"claimant-notify-validation-failure-%s";

private final NotificationService notificationService;
private final NotificationsProperties notificationsProperties;
private final OrganisationService organisationService;

@Override
protected Map<String, Callback> callbacks() {
return Map.of(
callbackKey(ABOUT_TO_SUBMIT),
this::notifyClaimantValidationFailure
);
}

@Override
public String camundaActivityId(CallbackParams callbackParams) {
return TASK_ID;
}

@Override
public List<CaseEvent> handledEvents() {
return EVENTS;
}

private CallbackResponse notifyClaimantValidationFailure(CallbackParams callbackParams) {
CaseData caseData = callbackParams.getCaseData();

if (!caseData.isApplicantLiP()) {
notificationService.sendMail(
caseData.getApplicantSolicitor1UserDetails().getEmail(),
getTemplate(),
addProperties(caseData),
getReferenceTemplate(caseData)
);
}

return AboutToStartOrSubmitCallbackResponse.builder().build();
}

@Override
public Map<String, String> addProperties(CaseData caseData) {
return Map.of(
CLAIM_REFERENCE_NUMBER, caseData.getLegacyCaseReference(),
LEGAL_ORG_NAME, getApplicantLegalOrganizationName(caseData, organisationService)
);
}

private String getTemplate() {
return notificationsProperties.getNotifyClaimantLrValidationDiscontinuanceFailureTemplate();
}

private String getReferenceTemplate(CaseData caseData) {
return String.format(REFERENCE_TEMPLATE, caseData.getLegacyCaseReference());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package uk.gov.hmcts.reform.civil.handler.callback.camunda.notification;

import lombok.RequiredArgsConstructor;
import org.camunda.bpm.engine.RuntimeService;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.reform.ccd.client.model.AboutToStartOrSubmitCallbackResponse;
import uk.gov.hmcts.reform.ccd.client.model.CallbackResponse;
import uk.gov.hmcts.reform.civil.callback.Callback;
import uk.gov.hmcts.reform.civil.callback.CallbackHandler;
import uk.gov.hmcts.reform.civil.callback.CallbackParams;
import uk.gov.hmcts.reform.civil.callback.CaseEvent;
import uk.gov.hmcts.reform.civil.enums.settlediscontinue.ConfirmOrderGivesPermission;
import uk.gov.hmcts.reform.civil.model.CaseData;

import java.util.List;
import java.util.Map;

import static uk.gov.hmcts.reform.civil.callback.CallbackType.ABOUT_TO_SUBMIT;
import static uk.gov.hmcts.reform.civil.callback.CaseEvent.UPDATE_VISIBILITY_NOTICE_OF_DISCONTINUANCE;

@Service
@RequiredArgsConstructor
public class UpdateVisibilityNoticeOfDiscontinuanceHandler extends CallbackHandler {

private static final List<CaseEvent> EVENTS = List.of(UPDATE_VISIBILITY_NOTICE_OF_DISCONTINUANCE);
public static final String TASK_ID = "UpdateVisibilityNoticeOfDiscontinuance";

private final RuntimeService runTimeService;

@Override
protected Map<String, Callback> callbacks() {
return Map.of(
callbackKey(ABOUT_TO_SUBMIT),
this::updateVisibilityNoticeDiscontinuance
);
}

@Override
public String camundaActivityId(CallbackParams callbackParams) {
return TASK_ID;
}

@Override
public List<CaseEvent> handledEvents() {
return EVENTS;
}

private CallbackResponse updateVisibilityNoticeDiscontinuance(CallbackParams callbackParams) {
CaseData caseData = callbackParams.getCaseData();
//TODO add update visibility implementation here
updateCamundaVars(caseData);
return AboutToStartOrSubmitCallbackResponse.builder().build();
}

private void updateCamundaVars(CaseData caseData) {
runTimeService.setVariable(
caseData.getBusinessProcess().getProcessInstanceId(),
"discontinuanceValidationSuccess",
ConfirmOrderGivesPermission.YES.equals(caseData.getConfirmOrderGivesPermission())
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import uk.gov.hmcts.reform.civil.enums.settlediscontinue.DiscontinuanceTypeList;
import uk.gov.hmcts.reform.civil.enums.settlediscontinue.SettleDiscontinueYesOrNoList;
import uk.gov.hmcts.reform.civil.helpers.settlediscontinue.DiscontinueClaimHelper;
import uk.gov.hmcts.reform.civil.model.BusinessProcess;
import uk.gov.hmcts.reform.civil.model.CaseData;

import java.util.List;
Expand Down Expand Up @@ -84,6 +85,8 @@ private CallbackResponse submitChanges(CallbackParams callbackParams) {
}
}

caseDataBuilder.businessProcess(BusinessProcess.ready(VALIDATE_DISCONTINUE_CLAIM_CLAIMANT));

return aboutToStartOrSubmitCallbackResponseBuilder.data(caseDataBuilder.build().toMap(objectMapper)).build();
}

Expand All @@ -107,4 +110,5 @@ private static String getHeader(CaseData caseData) {
public List<CaseEvent> handledEvents() {
return EVENTS;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -616,4 +616,7 @@ public class NotificationsProperties {
@NotEmpty
private String notifyLiPOrderTranslatedTemplate;

@NotEmpty
private String notifyClaimantLrValidationDiscontinuanceFailureTemplate;

}
4 changes: 3 additions & 1 deletion src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,8 @@ notifications:
notifyDefendantLIPJudgmentByAdmissionTemplate: "734f9bb6-2e13-4364-8c25-b90a611b91a5"
notifyLiPOrderTranslatedTemplate: "d81749f7-cef5-4159-8d99-146eb572a690"

notifyClaimantLrValidationDiscontinuanceFailureTemplate: "25398d9e-bb5f-4778-b76f-625c355f7c06"

sendgrid:
api-key: ${SENDGRID_API_KEY:false}

Expand Down Expand Up @@ -745,7 +747,7 @@ idam:
id: civil-service
redirect_uri: https://localhost:3000/oauth2/callback
secret: ${CIVIL_CLIENT_SECRET:OOOOOOOOOOOOOOOO}

caseFlags:
logging:
enabled: ${CASE_FLAGS_LOGGING_ENABLED:false}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package uk.gov.hmcts.reform.civil.handler.callback.camunda.notification;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest;
import uk.gov.hmcts.reform.civil.callback.CallbackParams;
import uk.gov.hmcts.reform.civil.callback.CaseEvent;
import uk.gov.hmcts.reform.civil.enums.YesOrNo;
import uk.gov.hmcts.reform.civil.handler.callback.BaseCallbackHandlerTest;
import uk.gov.hmcts.reform.civil.model.CaseData;
import uk.gov.hmcts.reform.civil.notify.NotificationService;
import uk.gov.hmcts.reform.civil.notify.NotificationsProperties;
import uk.gov.hmcts.reform.civil.prd.model.Organisation;
import uk.gov.hmcts.reform.civil.sampledata.CaseDataBuilder;
import uk.gov.hmcts.reform.civil.service.OrganisationService;
import java.util.Map;
import java.util.Optional;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static uk.gov.hmcts.reform.civil.callback.CallbackType.ABOUT_TO_SUBMIT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.notification.NotificationData.CLAIM_REFERENCE_NUMBER;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.notification.NotificationData.LEGAL_ORG_NAME;

@SpringBootTest(classes = {
NotifyClaimantLrValidationDiscontinuanceFailureHandler.class,
NotificationsProperties.class,
JacksonAutoConfiguration.class
})
class NotifyClaimantLrValidationDiscontinuanceFailureHandlerTest extends BaseCallbackHandlerTest {

public static final String TEMPLATE_ID = "template-id";

private static final String REFERENCE_NUMBER = "8372942374";

@MockBean
private NotificationService notificationService;

@MockBean
private NotificationsProperties notificationsProperties;

@MockBean
private OrganisationService organisationService;

@Autowired
private NotifyClaimantLrValidationDiscontinuanceFailureHandler handler;

@Nested
class AboutToSubmitCallback {

@BeforeEach
void setup() {
when(notificationsProperties.getNotifyClaimantLrValidationDiscontinuanceFailureTemplate()).thenReturn(
TEMPLATE_ID);
}

@Test
void shouldNotifyClaimantLrValidationDiscontinuanceFailure_whenInvoked() {

CaseData caseData = CaseDataBuilder.builder()
.legacyCaseReference(REFERENCE_NUMBER)
.atStateClaimDraft()
.applicant1Represented(YesOrNo.YES)
.build();

CallbackParams params = CallbackParams.builder()
.caseData(caseData)
.type(ABOUT_TO_SUBMIT)
.request(CallbackRequest.builder()
.eventId(CaseEvent.NOTIFY_VALIDATION_DICONTINUANCE_FAILURE_CLAIMANT.name())
.build())
.build();

handler.handle(params);

verify(notificationService, times(1)).sendMail(
"[email protected]",
TEMPLATE_ID,
getNotificationDataMap(caseData),
"claimant-notify-validation-failure-8372942374"
);
}
}

public Map<String, String> getNotificationDataMap(CaseData caseData) {
return Map.of(
CLAIM_REFERENCE_NUMBER, caseData.getLegacyCaseReference(),
LEGAL_ORG_NAME, getApplicantLegalOrganizationName(caseData)
);
}

public String getApplicantLegalOrganizationName(CaseData caseData) {
String id = caseData.getApplicant1OrganisationPolicy().getOrganisation().getOrganisationID();
Optional<Organisation> organisation = organisationService.findOrganisationById(id);
return organisation.isPresent() ? organisation.get().getName() :
caseData.getApplicantSolicitor1ClaimStatementOfTruth().getName();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package uk.gov.hmcts.reform.civil.handler.callback.camunda.notification;

import org.camunda.bpm.engine.RuntimeService;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest;
import uk.gov.hmcts.reform.civil.callback.CallbackParams;
import uk.gov.hmcts.reform.civil.callback.CaseEvent;
import uk.gov.hmcts.reform.civil.enums.settlediscontinue.ConfirmOrderGivesPermission;
import uk.gov.hmcts.reform.civil.handler.callback.BaseCallbackHandlerTest;
import uk.gov.hmcts.reform.civil.model.BusinessProcess;
import uk.gov.hmcts.reform.civil.model.CaseData;
import uk.gov.hmcts.reform.civil.sampledata.CaseDataBuilder;
import static org.mockito.Mockito.verify;
import static uk.gov.hmcts.reform.civil.callback.CallbackType.ABOUT_TO_SUBMIT;

@SpringBootTest(classes = {
UpdateVisibilityNoticeOfDiscontinuanceHandler.class,
JacksonAutoConfiguration.class
})
class UpdateVisibilityNoticeOfDiscontinuanceHandlerTest extends BaseCallbackHandlerTest {

@MockBean
private RuntimeService runTimeService;

@Autowired
private UpdateVisibilityNoticeOfDiscontinuanceHandler handler;

private static final String processId = "process-id";

@Nested
class AboutToSubmitCallback {

@ParameterizedTest
@ValueSource(booleans = {true, false})
void shouldUpdateCamundaVariables_whenInvoked(Boolean toggleState) {
//Given
CaseData caseData = CaseDataBuilder.builder()
.businessProcess(BusinessProcess.builder().processInstanceId(processId).build()).build();
caseData.setConfirmOrderGivesPermission(
toggleState ? ConfirmOrderGivesPermission.YES : ConfirmOrderGivesPermission.NO);

CallbackParams params = CallbackParams.builder()
.caseData(caseData)
.type(ABOUT_TO_SUBMIT)
.request(CallbackRequest.builder()
.eventId(CaseEvent.UPDATE_VISIBILITY_NOTICE_OF_DISCONTINUANCE.name())
.build())
.build();
//When
handler.handle(params);
//Then
verify(runTimeService).setVariable(processId, "discontinuanceValidationSuccess", toggleState);
}
}

}
Loading
Loading