ReservationDtoConverter.java

package io.extact.rms.client.api.adaptor.local.dto;

import io.extact.rms.application.domain.Reservation;
import io.extact.rms.client.api.dto.ReservationClientDto;

public class ReservationDtoConverter {

    public static ReservationClientDto toDto(Reservation reservation) {
        var dto = new ReservationClientDto();
        dto.setId(reservation.getId());
        dto.setStartDateTime(reservation.getStartDateTime());
        dto.setEndDateTime(reservation.getEndDateTime());
        dto.setNote(reservation.getNote());
        dto.setRentalItemId(reservation.getRentalItemId());
        dto.setUserAccountId(reservation.getUserAccountId());
        dto.setUserAccountDto(
                reservation.getUserAccount() != null
                    ? reservation.getUserAccount().transform(UserAccountDtoConverter::toDto)
                    : null);
        dto.setRentalItemDto(
                reservation.getRentalItem() != null
                    ? reservation.getRentalItem().transform(RentalItemDtoConverter::toDto)
                    : null);
        return dto;
    }

    public static Reservation toEntity(ReservationClientDto dto) {
        var reservation = new Reservation();
        reservation.setId(dto.getId());
        reservation.setStartDateTime(dto.getStartDateTime());
        reservation.setEndDateTime(dto.getEndDateTime());
        reservation.setNote(dto.getNote());
        reservation.setRentalItemId(dto.getRentalItemId());
        reservation.setUserAccountId(dto.getUserAccountId());
        reservation.setUserAccount(
                dto.getUserAccountDto() != null
                    ? dto.getUserAccountDto().to(UserAccountDtoConverter::toEntity)
                    : null);
        reservation.setRentalItem(
                dto.getRentalItemDto() != null
                    ? dto.getRentalItemDto().to(RentalItemDtoConverter::toEntity)
                    : null);
        return reservation;
    }
}