package de.avatic.lcc.model.db.nodes;


import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;


public class Distance {


    private Integer id;

    @Digits(integer = 7, fraction = 4)
    @DecimalMin("-90.0000")
    @DecimalMax("90.0000")
    private BigDecimal fromGeoLat;

    @Digits(integer = 7, fraction = 4)
    @DecimalMin("-180.0000")
    @DecimalMax("180.0000")
    private BigDecimal fromGeoLng;

    @Digits(integer = 7, fraction = 4)
    @DecimalMin("-90.0000")
    @DecimalMax("90.0000")
    private BigDecimal toGeoLat;

    @Digits(integer = 7, fraction = 4)
    @DecimalMin("-180.0000")
    @DecimalMax("180.0000")
    private BigDecimal toGeoLng;

    @Digits(integer = 15, fraction = 2)
    @NotNull
    private BigDecimal distance;

    private LocalDateTime updatedAt;

    private DistanceMatrixState state;


    private Integer fromNodeId;

    private Integer toNodeId;

    private Integer fromUserNodeId;

    private Integer toUserNodeId;

    public Integer getFromNodeId() {
        return fromNodeId;
    }

    public void setFromNodeId(Integer fromNodeId) {
        this.fromNodeId = fromNodeId;
    }

    public Integer getToNodeId() {
        return toNodeId;
    }

    public void setToNodeId(Integer toNodeId) {
        this.toNodeId = toNodeId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public BigDecimal getFromGeoLat() {
        return fromGeoLat;
    }

    public void setFromGeoLat(BigDecimal fromGeoLat) {
        this.fromGeoLat = fromGeoLat;
    }

    public BigDecimal getFromGeoLng() {
        return fromGeoLng;
    }

    public void setFromGeoLng(BigDecimal fromGeoLng) {
        this.fromGeoLng = fromGeoLng;
    }

    public BigDecimal getToGeoLat() {
        return toGeoLat;
    }

    public void setToGeoLat(BigDecimal toGeoLat) {
        this.toGeoLat = toGeoLat;
    }

    public BigDecimal getToGeoLng() {
        return toGeoLng;
    }

    public void setToGeoLng(BigDecimal toGeoLng) {
        this.toGeoLng = toGeoLng;
    }

    public BigDecimal getDistance() {
        return distance;
    }

    public void setDistance(BigDecimal distance) {
        this.distance = distance;
    }

    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }

    public DistanceMatrixState getState() {
        return state;
    }

    public void setState(DistanceMatrixState state) {
        this.state = state;
    }

    public Integer getFromUserNodeId() {
        return fromUserNodeId;
    }

    public void setFromUserNodeId(Integer fromUserNodeId) {
        this.fromUserNodeId = fromUserNodeId;
    }

    public Integer getToUserNodeId() {
        return toUserNodeId;
    }

    public void setToUserNodeId(Integer toUserNodeId) {
        this.toUserNodeId = toUserNodeId;
    }
}
