Skip to content

Commit

Permalink
Added an event msg dispatch for updated district contact.
Browse files Browse the repository at this point in the history
  • Loading branch information
chris.ditcher authored and chris.ditcher committed May 10, 2024
1 parent f44dbf2 commit d922044
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -165,10 +165,12 @@ public DistrictContact getDistrictContact(UUID districtId, UUID contactId) {
}

@Override
public DistrictContact createDistrictContact(UUID districtId, DistrictContact contact) {
public DistrictContact createDistrictContact(UUID districtId, DistrictContact contact) throws JsonProcessingException {
validatePayload(() -> this.districtContactPayloadValidator.validateCreatePayload(contact));
RequestUtil.setAuditColumnsForCreate(contact);
return districtContactMapper.toStructure(districtService.createDistrictContact(contact, districtId));
var pair = districtService.createDistrictContact(contact, districtId);
publisher.dispatchChoreographyEvent(pair.getRight());
return districtContactMapper.toStructure(pair.getLeft());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ CompletableFuture<Page<DistrictContact>> findAllContacts(@RequestParam(name = "p
@Tag(name = "District Contact Entity", description = "Endpoints for district contact entity.")
@Schema(name = "DistrictContact", implementation = DistrictContact.class)
@ResponseStatus(CREATED)
DistrictContact createDistrictContact(@PathVariable UUID districtId, @Validated @RequestBody DistrictContact contact);
DistrictContact createDistrictContact(@PathVariable UUID districtId, @Validated @RequestBody DistrictContact contact) throws JsonProcessingException;

@PutMapping("/{districtId}/contact/{contactId}")
@PreAuthorize("hasAuthority('SCOPE_WRITE_DISTRICT_CONTACT')")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ca.bc.gov.educ.api.institute.mapper.v1.DistrictContactMapper;
import ca.bc.gov.educ.api.institute.mapper.v1.DistrictMapper;
import ca.bc.gov.educ.api.institute.mapper.v1.NoteMapper;
import ca.bc.gov.educ.api.institute.mapper.v1.SchoolContactMapper;
import ca.bc.gov.educ.api.institute.model.v1.*;
import ca.bc.gov.educ.api.institute.repository.v1.*;
import ca.bc.gov.educ.api.institute.struct.v1.District;
Expand All @@ -28,10 +29,8 @@
import java.util.Optional;
import java.util.UUID;

import static ca.bc.gov.educ.api.institute.constants.v1.EventOutcome.DISTRICT_CREATED;
import static ca.bc.gov.educ.api.institute.constants.v1.EventOutcome.DISTRICT_UPDATED;
import static ca.bc.gov.educ.api.institute.constants.v1.EventType.CREATE_DISTRICT;
import static ca.bc.gov.educ.api.institute.constants.v1.EventType.UPDATE_DISTRICT;
import static ca.bc.gov.educ.api.institute.constants.v1.EventOutcome.*;
import static ca.bc.gov.educ.api.institute.constants.v1.EventType.*;

@Service
public class DistrictService {
Expand Down Expand Up @@ -152,15 +151,21 @@ public Optional<DistrictContactEntity> getDistrictContact(UUID districtId, UUID
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public DistrictContactEntity createDistrictContact(DistrictContact contact, UUID districtId) {
public Pair<DistrictContactEntity, InstituteEvent> createDistrictContact(DistrictContact contact, UUID districtId) throws JsonProcessingException {
var contactEntity = DistrictContactMapper.mapper.toModel(contact);
Optional<DistrictEntity> curDistrictEntityOptional = districtRepository.findById(districtId);

if (curDistrictEntityOptional.isPresent()) {
contactEntity.setDistrictEntity(curDistrictEntityOptional.get());
TransformUtil.uppercaseFields(contactEntity);
districtContactRepository.save(contactEntity);
return contactEntity;
final InstituteEvent instituteEvent = EventUtil.createInstituteEvent(
contact.getCreateUser(), contact.getUpdateUser(),
JsonUtil.getJsonStringFromObject(DistrictContactMapper.mapper.toStructure(contactEntity)),
CREATE_CONTACT, CONTACT_CREATED
);
instituteEventRepository.save(instituteEvent);
return Pair.of(contactEntity, instituteEvent);
} else {
throw new EntityNotFoundException(DistrictEntity.class, DISTRICT_ID_ATTR, String.valueOf(districtId));
}
Expand Down

0 comments on commit d922044

Please sign in to comment.