1
0

map HsOfficeMembershipInsertResource via ModelMapper and Entity.setValidTo/From

This commit is contained in:
Michael Hoennig
2022-10-22 12:38:36 +02:00
parent b3b70aaaf4
commit 0b0f57c176
5 changed files with 53 additions and 23 deletions

View File

@ -1,12 +1,10 @@
package net.hostsharing.hsadminng.hs.office.membership;
import net.hostsharing.hsadminng.context.Context;
import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorEntity;
import net.hostsharing.hsadminng.hs.office.generated.api.v1.api.HsOfficeMembershipsApi;
import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeMembershipInsertResource;
import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeMembershipPatchResource;
import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeMembershipResource;
import net.hostsharing.hsadminng.hs.office.partner.HsOfficePartnerEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
@ -21,7 +19,6 @@ import java.util.function.BiConsumer;
import static net.hostsharing.hsadminng.mapper.Mapper.map;
import static net.hostsharing.hsadminng.mapper.Mapper.mapList;
import static net.hostsharing.hsadminng.mapper.PostgresDateRange.toPostgresDateRange;
@RestController
@ -62,7 +59,7 @@ public class HsOfficeMembershipController implements HsOfficeMembershipsApi {
context.define(currentUser, assumedRoles);
final var entityToSave = mapX(body, HsOfficeMembershipEntity.class);
final var entityToSave = map(body, HsOfficeMembershipEntity.class);
entityToSave.setUuid(UUID.randomUUID());
final var saved = membershipRepo.save(entityToSave);
@ -135,16 +132,4 @@ public class HsOfficeMembershipController implements HsOfficeMembershipsApi {
resource.setValidTo(entity.getValidity().upper().minusDays(1));
}
};
private HsOfficeMembershipEntity mapX(
final HsOfficeMembershipInsertResource resource,
final Class<HsOfficeMembershipEntity> entityClass) {
final var entity = new HsOfficeMembershipEntity();
entity.setPartner(em.getReference(HsOfficePartnerEntity.class, resource.getPartnerUuid()));
entity.setMainDebitor(em.getReference(HsOfficeDebitorEntity.class, resource.getMainDebitorUuid()));
entity.setMemberNumber(resource.getMemberNumber());
entity.setValidity(toPostgresDateRange(resource.getValidFrom(), resource.getValidTo()));
entity.setReasonForTermination(map(resource.getReasonForTermination(), HsOfficeReasonForTermination.class));
return entity;
}
}

View File

@ -4,11 +4,11 @@ import com.vladmihalcea.hibernate.type.basic.PostgreSQLEnumType;
import com.vladmihalcea.hibernate.type.range.PostgreSQLRangeType;
import com.vladmihalcea.hibernate.type.range.Range;
import lombok.*;
import net.hostsharing.hsadminng.stringify.Stringify;
import net.hostsharing.hsadminng.stringify.Stringifyable;
import net.hostsharing.hsadminng.errors.DisplayName;
import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorEntity;
import net.hostsharing.hsadminng.hs.office.partner.HsOfficePartnerEntity;
import net.hostsharing.hsadminng.stringify.Stringify;
import net.hostsharing.hsadminng.stringify.Stringifyable;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.Type;
@ -63,13 +63,17 @@ public class HsOfficeMembershipEntity implements Stringifyable {
private int memberNumber;
@Column(name = "validity", columnDefinition = "daterange")
private Range<LocalDate> validity;
private Range<LocalDate> validity = Range.infinite(LocalDate.class);
@Column(name = "reasonfortermination")
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
private HsOfficeReasonForTermination reasonForTermination;
public void setValidFrom(final LocalDate validFrom) {
validity = toPostgresDateRange(validFrom, getValidity().upper());
}
public void setValidTo(final LocalDate validTo) {
validity = toPostgresDateRange(getValidity().lower(), validTo);
}