package de.rwth.idsg.bikeman.app.dto; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import de.rwth.idsg.bikeman.domain.util.CustomLocalDateTimeSerializer; import lombok.Data; import lombok.Getter; import lombok.ToString; import org.joda.time.LocalDateTime; import java.math.BigDecimal; @Getter @ToString(includeFieldNames = true) @JsonInclude(JsonInclude.Include.NON_NULL) public class ViewTransactionDTO { private Long transactionId; private TransactionStationDTO fromStation; private TransactionStationDTO toStation; @JsonSerialize(using = CustomLocalDateTimeSerializer.class) private LocalDateTime startDateTime; @JsonSerialize(using = CustomLocalDateTimeSerializer.class) private LocalDateTime endDateTime; private Long distance; private BigDecimal fees; @Data class TransactionStationDTO { private final Long stationId; private final String name; } public ViewTransactionDTO (Long transactionId, LocalDateTime startDateTime, LocalDateTime endDateTime, BigDecimal fees, Long fromStationId, String fromStationName, Long toStationId, String toStationName) { this.transactionId = transactionId; this.startDateTime = startDateTime; this.endDateTime = endDateTime; this.fees = fees; this.fromStation = new TransactionStationDTO(fromStationId, fromStationName); this.toStation = new TransactionStationDTO(toStationId, toStationName); this.distance = 1300l; } public ViewTransactionDTO (Long transactionId, LocalDateTime startDateTime, Long fromStationId, String fromStationName) { this.transactionId = transactionId; this.startDateTime = startDateTime; this.fromStation = new TransactionStationDTO(fromStationId, fromStationName); this.distance = null; } }