Pull request #215: Update
Merge in RED/persistence-service from update to master * commit 'f55db3eaf4670349b78f7ffda2e62039eb9ca8a3': Dossier Status Self name Dossier Status dossier count color color Dossier Status fixes
This commit is contained in:
commit
664b1978e5
@ -17,5 +17,7 @@ public class CreateOrUpdateDossierStatusRequest {
|
||||
|
||||
private String description;
|
||||
|
||||
private String color;
|
||||
|
||||
private String dossierTemplateId;
|
||||
}
|
||||
|
||||
@ -20,6 +20,8 @@ public class DossierStatusInfo {
|
||||
private String id;
|
||||
private String name;
|
||||
private String description;
|
||||
private String color;
|
||||
private String dossierTemplateId;
|
||||
private Long dossierCount;
|
||||
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ public interface DossierStatusResource {
|
||||
String DOSSIER_STATUS_PATH = "/dossier-status";
|
||||
|
||||
String DOSSIER_TEMPLATE_PATH = "/dossier-template";
|
||||
|
||||
String DOSSIER_TEMPLATE_ID = "dossierTemplateId";
|
||||
String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}";
|
||||
|
||||
@ -26,11 +27,6 @@ public interface DossierStatusResource {
|
||||
@PostMapping(value = DOSSIER_STATUS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
DossierStatusInfo createOrUpdateDossierStatus(@RequestBody CreateOrUpdateDossierStatusRequest dossierStatusRequest);
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = DOSSIER_STATUS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<DossierStatusInfo> getAllDossierStatus();
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
|
||||
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.hibernate.annotations.Formula;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
@ -26,6 +27,9 @@ public class DossierStatusEntity {
|
||||
@Column
|
||||
private String description;
|
||||
|
||||
@Column
|
||||
private String color;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "dossier_template_id")
|
||||
private DossierTemplateEntity dossierTemplate;
|
||||
@ -35,4 +39,5 @@ public class DossierStatusEntity {
|
||||
|
||||
@OneToMany(mappedBy = "dossierStatus")
|
||||
private List<DossierEntity> dossiers = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -29,14 +30,15 @@ public class DossierStatusPersistenceService {
|
||||
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
|
||||
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
|
||||
if (dossierStatus.isPresent()) {
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId());
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),
|
||||
createOrUpdateDossierStatusRequest.getDossierStatusId());
|
||||
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get());
|
||||
return dossierStatus.get();
|
||||
} else {
|
||||
throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
|
||||
}
|
||||
} else {
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId());
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),null);
|
||||
DossierStatusEntity dossierStatus = new DossierStatusEntity();
|
||||
dossierStatus.setId(UUID.randomUUID().toString());
|
||||
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
|
||||
@ -48,12 +50,14 @@ public class DossierStatusPersistenceService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<DossierStatusEntity> getAllDossierStatus() {
|
||||
return dossierStatusRepository.findAll();
|
||||
|
||||
public List<DossierStatusInfo> getAllDossierStatusForTemplate(String dossierTemplateId) {
|
||||
var x = dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
|
||||
return x;
|
||||
}
|
||||
|
||||
public List<DossierStatusEntity> getAllDossierStatusForTemplate(String dossierTemplateId) {
|
||||
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
|
||||
public DossierStatusInfo getDossierStatusInfo(String dossierStatusId) {
|
||||
return dossierStatusRepository.findProjectionById(dossierStatusId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, dossierStatusId)));
|
||||
}
|
||||
|
||||
public DossierStatusEntity getDossierStatus(String dossierStatusId) {
|
||||
@ -63,6 +67,9 @@ public class DossierStatusPersistenceService {
|
||||
@Transactional
|
||||
public void deleteDossierStatus(String dossierStatusId, String replaceDossierStatusId) {
|
||||
|
||||
if (dossierStatusId.equalsIgnoreCase(replaceDossierStatusId)) {
|
||||
throw new BadRequestException("Cannot replace with self");
|
||||
}
|
||||
|
||||
dossierStatusRepository.findById(dossierStatusId).ifPresent(toDeleteDossierStatus -> {
|
||||
|
||||
@ -82,9 +89,9 @@ public class DossierStatusPersistenceService {
|
||||
dossierStatusRepository.deleteById(dossierStatusId);
|
||||
}
|
||||
|
||||
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId) {
|
||||
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {
|
||||
getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> {
|
||||
if (existing.getName().equals(dossierStatusName)) {
|
||||
if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) {
|
||||
throw new ConflictException("DossierStatus name must be unique within the same dossier template");
|
||||
}
|
||||
});
|
||||
|
||||
@ -1,13 +1,20 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
|
||||
|
||||
@Query("select s from DossierStatusEntity s where s.dossierTemplateId = :dossierTemplateId")
|
||||
List<DossierStatusEntity> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId = :dossierTemplateId group by s")
|
||||
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
|
||||
|
||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId")
|
||||
Optional<DossierStatusInfo> findProjectionById(String dossierStatusId);
|
||||
}
|
||||
|
||||
@ -27,11 +27,6 @@ public class DossierStatusController implements DossierStatusResource {
|
||||
return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DossierStatusInfo> getAllDossierStatus() {
|
||||
|
||||
return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
|
||||
@ -41,7 +36,7 @@ public class DossierStatusController implements DossierStatusResource {
|
||||
@Override
|
||||
public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) {
|
||||
|
||||
return convert(dossierStatusPersistenceService.getDossierStatus(dossierStatusId), DossierStatusInfo.class);
|
||||
return dossierStatusPersistenceService.getDossierStatusInfo(dossierStatusId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -13,8 +13,11 @@ databaseChangeLog:
|
||||
name: id
|
||||
type: VARCHAR(255)
|
||||
- column:
|
||||
name: description
|
||||
name: color
|
||||
type: VARCHAR(255)
|
||||
- column:
|
||||
name: description
|
||||
type: VARCHAR(20)
|
||||
- column:
|
||||
name: dossier_template_id
|
||||
type: VARCHAR(255)
|
||||
|
||||
@ -31,7 +31,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
||||
public void testDossierStatus() {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
var allDossierStatus = dossierStatusClient.getAllDossierStatus();
|
||||
var allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
||||
|
||||
assertThat(allDossierStatus.size()).isZero();
|
||||
|
||||
@ -43,7 +43,12 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
||||
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
||||
assertThat(loadedDossierStatus).isNotNull();
|
||||
|
||||
allDossierStatus = dossierStatusClient.getAllDossierStatus();
|
||||
crudsr.setDossierStatusId(loadedDossierStatus.getId());
|
||||
crudsr.setDescription("New Description");
|
||||
var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
||||
assertThat(updatedStatus).isNotNull();
|
||||
|
||||
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
||||
assertThat(allDossierStatus.size()).isEqualTo(1);
|
||||
|
||||
var testDossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "1", allDossierStatus.iterator().next());
|
||||
@ -56,6 +61,12 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
||||
cru.setDossierTemplateId(testDossier.getDossierTemplateId());
|
||||
cru.setDossierStatusId(null);
|
||||
|
||||
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
||||
assertThat(allDossierStatus.size()).isEqualTo(1);
|
||||
|
||||
assertThat(allDossierStatus.iterator().next().getDossierCount()).isEqualTo(1);
|
||||
|
||||
|
||||
var updated = dossierClient.updateDossier(cru, testDossier.getId());
|
||||
assertThat(updated.getDossierStatusId()).isNull();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user