private void createOffice()

in service/src/main/java/org/apache/fineract/cn/office/internal/command/handler/OfficeAggregate.java [226:257]


  private void createOffice(final Office office, final Office parentOffice) {
    if (this.officeRepository.existsByIdentifier(office.getIdentifier())) {
      this.logger.info("Office {} already exists.", office.getIdentifier());
      throw ServiceException.conflict("Office {0} already exists.", office.getIdentifier());
    }

    final String modificationUser = UserContextHolder.checkedGetUser();
    final Date modificationDate = Utils.utcNow();

    final OfficeEntity officeEntity = OfficeMapper.map(office);
    if (parentOffice != null) {
      final Optional<OfficeEntity> optionalParentOfficeEntity = this.officeRepository.findByIdentifier(parentOffice.getIdentifier());
      if (optionalParentOfficeEntity.isPresent()) {
        final OfficeEntity parentOfficeEntity = optionalParentOfficeEntity.get();
        officeEntity.setParentOfficeId(parentOfficeEntity.getId());
        parentOfficeEntity.setLastModifiedBy(modificationUser);
        parentOfficeEntity.setLastModifiedOn(modificationDate);
        this.officeRepository.save(parentOfficeEntity);
      }
    }

    officeEntity.setCreatedBy(modificationUser);
    officeEntity.setCreatedOn(modificationDate);

    final OfficeEntity savedOfficeEntity = this.officeRepository.save(officeEntity);

    if (office.getAddress() != null) {
      final AddressEntity addressEntity = AddressMapper.map(office.getAddress());
      addressEntity.setOffice(savedOfficeEntity);
      this.addressRepository.save(addressEntity);
    }
  }