Skip to content

Commit

Permalink
Updated code to add both digital and paper juror_response_aud entries…
Browse files Browse the repository at this point in the history
… on ProcessingStatus change (#566)
  • Loading branch information
Ben-Edwards-cgi authored Jul 3, 2024
1 parent 833b993 commit b4bf108
Show file tree
Hide file tree
Showing 36 changed files with 303 additions and 503 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -278,10 +278,10 @@ checkstyle {
}

pmdTest {
maxFailures = 312
maxFailures = 304
}
pmdMain {
maxFailures = 815
maxFailures = 799
}
pmd {
maxFailures = 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import uk.gov.hmcts.juror.api.moj.domain.IJurorStatus;
import uk.gov.hmcts.juror.api.moj.domain.JurorPool;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.DigitalResponse;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditMod;
import uk.gov.hmcts.juror.api.moj.repository.DisqualifiedCodeRepository;
import uk.gov.hmcts.juror.api.moj.repository.JurorPoolRepository;
import uk.gov.hmcts.juror.api.moj.repository.JurorStatusRepository;
Expand Down Expand Up @@ -93,8 +92,7 @@ public boolean disqualifyJuror(String jurorId, DisqualifyCodeDto disqualifyCodeD
savedResponse.setVersion(disqualifyCodeDto.getVersion());

//update response
final ProcessingStatus oldProcessingStatus = savedResponse.getProcessingStatus();
savedResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedResponse.setProcessingStatus(jurorResponseAuditRepository, ProcessingStatus.CLOSED);

// JDB-2685: if no staff assigned, assign current login
if (null == savedResponse.getStaff()) {
Expand All @@ -113,14 +111,6 @@ public boolean disqualifyJuror(String jurorId, DisqualifyCodeDto disqualifyCodeD
throw new DisqualifyException.OptimisticLockingFailure(jurorId);
}

//audit response status change
jurorResponseAuditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorId)
.login(login)
.oldProcessingStatus(oldProcessingStatus)
.newProcessingStatus(savedResponse.getProcessingStatus())
.build());

// update juror pool entry
JurorPool jurorDetails = detailsRepository.findByJurorJurorNumber(savedResponse.getJurorNumber());
jurorDetails.getJuror().setResponded(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import uk.gov.hmcts.juror.api.moj.domain.JurorHistory;
import uk.gov.hmcts.juror.api.moj.domain.JurorPool;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.DigitalResponse;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditMod;
import uk.gov.hmcts.juror.api.moj.enumeration.ExcusalCodeEnum;
import uk.gov.hmcts.juror.api.moj.enumeration.HistoryCodeMod;
import uk.gov.hmcts.juror.api.moj.repository.JurorHistoryRepository;
Expand Down Expand Up @@ -100,8 +99,7 @@ public boolean excuseJuror(String jurorId, ExcusalCodeDto excusalCodeDto, String
savedResponse.setVersion(excusalCodeDto.getVersion());

//update response
final ProcessingStatus oldProcessingStatus = savedResponse.getProcessingStatus();
savedResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedResponse.setProcessingStatus(jurorResponseAuditRepository, ProcessingStatus.CLOSED);

// JDB-2685: if no staff assigned, assign current login
if (null == savedResponse.getStaff()) {
Expand All @@ -120,14 +118,6 @@ public boolean excuseJuror(String jurorId, ExcusalCodeDto excusalCodeDto, String
throw new ExcusalException.OptimisticLockingFailure(jurorId, e);
}

//audit response status change
jurorResponseAuditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorId)
.login(login)
.oldProcessingStatus(oldProcessingStatus)
.newProcessingStatus(savedResponse.getProcessingStatus())
.build());

// update juror pool entry
JurorPool poolDetails = detailsRepository.findByJurorJurorNumber(savedResponse.getJurorNumber());
poolDetails.getJuror().setResponded(true);
Expand Down Expand Up @@ -201,8 +191,7 @@ public boolean rejectExcusalRequest(String jurorId, ExcusalCodeDto excusalCodeDt
savedResponse.setVersion(excusalCodeDto.getVersion());

//update response
final ProcessingStatus oldProcessingStatus = savedResponse.getProcessingStatus();
savedResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedResponse.setProcessingStatus(jurorResponseAuditRepository, ProcessingStatus.CLOSED);

// JDB-2685: if no staff assigned, assign current login
if (null == savedResponse.getStaff()) {
Expand All @@ -221,14 +210,6 @@ public boolean rejectExcusalRequest(String jurorId, ExcusalCodeDto excusalCodeDt
throw new ExcusalException.OptimisticLockingFailure(jurorId, e);
}

//audit response status change
jurorResponseAuditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorId)
.login(login)
.oldProcessingStatus(oldProcessingStatus)
.newProcessingStatus(savedResponse.getProcessingStatus())
.build());

// update juror pool entry
JurorPool poolDetails = detailsRepository.findByJurorJurorNumber(savedResponse.getJurorNumber());
poolDetails.getJuror().setResponded(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import uk.gov.hmcts.juror.api.moj.domain.JurorPool;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.DigitalResponse;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorReasonableAdjustment;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditMod;
import uk.gov.hmcts.juror.api.moj.enumeration.HistoryCodeMod;
import uk.gov.hmcts.juror.api.moj.repository.JurorHistoryRepository;
import uk.gov.hmcts.juror.api.moj.repository.JurorPoolRepository;
Expand Down Expand Up @@ -54,6 +53,7 @@ public class ResponseStatusUpdateServiceImpl implements ResponseStatusUpdateServ
private final AssignOnUpdateService assignOnUpdateService;
private final JurorReasonableAdjustmentRepository specialNeedsRepository;
private final WelshCourtLocationRepository welshCourtLocationRepository;
private final JurorResponseAuditRepositoryMod jurorResponseAuditRepositoryMod;


/**
Expand All @@ -80,10 +80,8 @@ public void updateJurorResponseStatus(final String jurorNumber, final Processing
log.debug("Version: DB={}, UI={}", jurorResponse.getVersion(), version);
jurorResponse.setVersion(version);

final ProcessingStatus auditProcessingStatus = jurorResponse.getProcessingStatus();

//update response PROCESSING status
jurorResponse.setProcessingStatus(status);
jurorResponse.setProcessingStatus(jurorResponseAuditRepositoryMod, status);

// JDB-2685: if no staff assigned, assign current login
if (null == jurorResponse.getStaff()) {
Expand Down Expand Up @@ -125,17 +123,6 @@ public void updateJurorResponseStatus(final String jurorNumber, final Processing
}
log.info("Updated juror '{}' processing status to '{}'", jurorNumber, jurorResponse.getProcessingStatus());

//audit response status change
JurorResponseAuditMod responseAudit = auditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorResponse.getJurorNumber())
.login(auditorUsername)
.oldProcessingStatus(auditProcessingStatus)
.newProcessingStatus(jurorResponse.getProcessingStatus())
.build());

if (log.isTraceEnabled()) {
log.trace("Audit entry: {}", responseAudit);
}
} else {
log.error("No juror response found for juror number {}", jurorNumber);
throw new JurorResponseNotFoundException("No juror response found");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import uk.gov.hmcts.juror.api.moj.domain.User;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.DigitalResponse;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorReasonableAdjustment;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditMod;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseCjsEmployment;
import uk.gov.hmcts.juror.api.moj.repository.ContactCodeRepository;
import uk.gov.hmcts.juror.api.moj.repository.ContactLogRepository;
Expand Down Expand Up @@ -104,7 +103,6 @@ public class ResponseUpdateServiceImpl implements ResponseUpdateService {
private final JurorResponseAuditRepositoryMod responseAuditRepository;
private final JurorHistoryService jurorHistoryService;


@Override
@Transactional(readOnly = true)
public JurorNoteDto notesByJurorNumber(final String jurorId) {
Expand Down Expand Up @@ -424,55 +422,28 @@ public void updateResponseStatus(String jurorId, ProcessingStatus status, Intege

final DigitalResponse domain = responseRepository.findByJurorNumber(jurorId);
final JurorPool juror = jurorRepository.findByJurorJurorNumber(jurorId);
DigitalResponse savedResponse = null;

if (jurorId != null) {

savedResponse = responseRepository.findByJurorNumber(jurorId);
}

applyOptimisticLocking(domain, version);

if (juror != null) {
//update response if pool status = 2,5, 6 & 7
if (poolStatus.contains(juror.getStatus().getStatus())) {
domain.setProcessingStatus(ProcessingStatus.CLOSED);
domain.setProcessingStatus(responseAuditRepository, ProcessingStatus.CLOSED);
domain.setProcessingComplete(Boolean.TRUE);
} else if (juror.getStatus().getStatus() == IJurorStatus.ADDITIONAL_INFO) {

if (status.equals(ProcessingStatus.AWAITING_COURT_REPLY)) {
domain.setProcessingStatus(ProcessingStatus.AWAITING_COURT_REPLY);

domain.setProcessingStatus(responseAuditRepository, ProcessingStatus.AWAITING_COURT_REPLY);
} else if (status.equals(ProcessingStatus.AWAITING_CONTACT)) {
domain.setProcessingStatus(ProcessingStatus.AWAITING_CONTACT);
domain.setProcessingStatus(responseAuditRepository, ProcessingStatus.AWAITING_CONTACT);

} else if (status.equals(ProcessingStatus.AWAITING_TRANSLATION)) {
domain.setProcessingStatus(ProcessingStatus.AWAITING_TRANSLATION);
domain.setProcessingStatus(responseAuditRepository, ProcessingStatus.AWAITING_TRANSLATION);
}
}

log.trace("updating juror '{}' processing status to '{}'", jurorId, status.getDescription());
responseRepository.save(domain);
log.trace("Updated juror '{}' processing status to '{}'", jurorId, status.getDescription());

if (savedResponse != null) {
//audit response status change
responseAuditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorId)
.login(login)
.oldProcessingStatus(savedResponse.getProcessingStatus())
.newProcessingStatus(status)
.build());
log.debug("response audit updated old processing status {}, new processing status {} for juror {}",
jurorId, savedResponse.getProcessingStatus().getDescription(),
domain.getProcessingStatus().getDescription()
);
} else {
log.error("SavedResponse is null");
}

}

}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package uk.gov.hmcts.juror.api.juror.domain;

import lombok.Getter;

/**
* Enum of values of a juror response "processing status".
*/
@Getter
public enum ProcessingStatus {
TODO("To Do"),

Expand All @@ -20,7 +23,4 @@ public enum ProcessingStatus {
this.description = description;
}

public String getDescription() {
return description;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import uk.gov.hmcts.juror.api.moj.domain.JurorPool;
import uk.gov.hmcts.juror.api.moj.domain.User;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.DigitalResponse;
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditMod;
import uk.gov.hmcts.juror.api.moj.enumeration.HistoryCodeMod;
import uk.gov.hmcts.juror.api.moj.repository.JurorHistoryRepository;
import uk.gov.hmcts.juror.api.moj.repository.JurorPoolRepository;
Expand Down Expand Up @@ -266,22 +265,14 @@ public void processAcceptance(
"Response must be in summoned state to qualify for straight-through");
}

savedDigitalResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedDigitalResponse.setProcessingStatus(jurorResponseAuditRepositoryMod, ProcessingStatus.CLOSED);

savedDigitalResponse.setStaff(staffMember(AUTO_USER));
savedDigitalResponse.setStaffAssignmentDate(LocalDate.now());

// save the response
mergeService.mergeResponse(savedDigitalResponse, AUTO_USER);

//audit response status change
jurorResponseAuditRepositoryMod.save(JurorResponseAuditMod.builder()
.jurorNumber(savedDigitalResponse.getJurorNumber())
.login(AUTO_USER)
.oldProcessingStatus(ProcessingStatus.TODO)
.newProcessingStatus(savedDigitalResponse.getProcessingStatus())
.build());

// update juror entry
// final Pool updatedDetails = detailsRepository.findByJurorNumber(savedDigitalResponse.getJurorNumber());
final JurorPool updatedJurorDetails =
Expand Down Expand Up @@ -363,21 +354,13 @@ public void processDeceasedExcusal(
}

//update response
savedDigitalResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedDigitalResponse.setProcessingStatus(jurorResponseAuditRepositoryMod, ProcessingStatus.CLOSED);
savedDigitalResponse.setStaff(staffMember(AUTO_USER));
savedDigitalResponse.setStaffAssignmentDate(LocalDate.now());

// save the response
mergeService.mergeResponse(savedDigitalResponse, AUTO_USER);

//audit response status change
jurorResponseAuditRepositoryMod.save(JurorResponseAuditMod.builder()
.jurorNumber(savedDigitalResponse.getJurorNumber())
.login(AUTO_USER)
.oldProcessingStatus(ProcessingStatus.TODO)
.newProcessingStatus(savedDigitalResponse.getProcessingStatus())
.build());

// update Juror
jurorDetails.getJuror().setResponded(true);
jurorDetails.getJuror().setExcusalDate(LocalDate.now());
Expand Down Expand Up @@ -464,21 +447,13 @@ public void processAgeExcusal(
}

//update response
savedDigitalResponse.setProcessingStatus(ProcessingStatus.CLOSED);
savedDigitalResponse.setProcessingStatus(jurorResponseAuditRepositoryMod, ProcessingStatus.CLOSED);
savedDigitalResponse.setStaff(staffMember(AUTO_USER));
savedDigitalResponse.setStaffAssignmentDate(LocalDate.now());

// save the response
mergeService.mergeResponse(savedDigitalResponse, AUTO_USER);

//audit response status change
jurorResponseAuditRepositoryMod.save(JurorResponseAuditMod.builder()
.jurorNumber(savedDigitalResponse.getJurorNumber())
.login(AUTO_USER)
.oldProcessingStatus(ProcessingStatus.TODO)
.newProcessingStatus(savedDigitalResponse.getProcessingStatus())
.build());

// update Juror
jurorDetails.getJuror().setResponded(true);
jurorDetails.getJuror().setDisqualifyDate(LocalDate.now());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import jakarta.persistence.Version;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
Expand All @@ -25,6 +26,8 @@
import uk.gov.hmcts.juror.api.moj.domain.ContactLog;
import uk.gov.hmcts.juror.api.moj.domain.Juror;
import uk.gov.hmcts.juror.api.moj.domain.User;
import uk.gov.hmcts.juror.api.moj.repository.jurorresponse.JurorResponseAuditRepositoryMod;
import uk.gov.hmcts.juror.api.moj.utils.SecurityUtil;
import uk.gov.hmcts.juror.api.validation.LocalDateOfBirth;
import uk.gov.hmcts.juror.api.validation.ValidationConstants;

Expand Down Expand Up @@ -80,6 +83,7 @@ public class AbstractJurorResponse extends Address implements Serializable {

@Column(name = "processing_status")
@Enumerated(EnumType.STRING)
@Setter(AccessLevel.NONE)
private ProcessingStatus processingStatus = ProcessingStatus.TODO;

@LocalDateOfBirth
Expand Down Expand Up @@ -200,4 +204,21 @@ protected AbstractJurorResponse() {
public boolean isClosed() {
return getProcessingStatus().equals(ProcessingStatus.CLOSED);
}

public void setProcessingStatus(JurorResponseAuditRepositoryMod jurorResponseAuditRepository,
ProcessingStatus processingStatus) {
String username;
if (SecurityUtil.hasBureauJwtPayload()) {
username = SecurityUtil.getActiveLogin();
} else {
username = SecurityUtil.AUTO_USER;
}
jurorResponseAuditRepository.save(JurorResponseAuditMod.builder()
.jurorNumber(jurorNumber)
.login(username)
.oldProcessingStatus(this.processingStatus)
.newProcessingStatus(processingStatus)
.build());
this.processingStatus = processingStatus;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
import uk.gov.hmcts.juror.api.moj.domain.jurorresponse.JurorResponseAuditModKey;

@Repository
public interface JurorResponseAuditRepositoryMod extends CrudRepository<JurorResponseAuditMod,
JurorResponseAuditModKey> {
public interface JurorResponseAuditRepositoryMod
extends CrudRepository<JurorResponseAuditMod, JurorResponseAuditModKey> {
}
Loading

0 comments on commit b4bf108

Please sign in to comment.