package de.avatic.lcc.dto.report;

import com.fasterxml.jackson.annotation.JsonProperty;
import de.avatic.lcc.dto.generic.ContainerType;
import de.avatic.lcc.dto.generic.NodeDTO;
import de.avatic.lcc.model.db.utils.DimensionUnit;
import de.avatic.lcc.model.db.utils.WeightUnit;

import java.util.List;

public class ReportDestinationDTO {

    private Integer id;

    private NodeDTO destination;
    private List<ReportSectionDTO> sections;

    /* general */

    @JsonProperty("annual_quantity")
    private Integer annualQuantity;

    @JsonProperty("hs_code")
    private String hsCode;

    @JsonProperty("tariff_rate")
    private Number tariffRate;

    @JsonProperty("oversea_share")
    private Double overseaShare;

    @JsonProperty("air_freight_share")
    private Double airFreightShare;

    @JsonProperty("transport_time")
    private Double transportTime;

    @JsonProperty("safety_stock")
    private Integer safetyStock;

    /* packaging */

    private Double width;

    private Double height;

    private Double length;

    private Double weight;

    @JsonProperty("dimension_unit")
    private DimensionUnit dimensionUnit;

    @JsonProperty("weight_unit")
    private WeightUnit weightUnit;

    @JsonProperty("hu_unit_count")
    private Integer huUnitCount;

    private Integer layer;

    /* container */

    @JsonProperty("unit_count")
    private Number unitCount;

    private Number utilization;

    @JsonProperty("container_type")
    private ContainerType type;

    @JsonProperty("weight_exceeded")
    private Boolean weightExceeded;

    @JsonProperty("container_rate")
    private Number rate;

    private Boolean mixed;


    public Integer getId() {
        return id;
    }

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

    public NodeDTO getDestination() {
        return destination;
    }

    public void setDestination(NodeDTO destination) {
        this.destination = destination;
    }

    public List<ReportSectionDTO> getSections() {
        return sections;
    }

    public void setSections(List<ReportSectionDTO> sections) {
        this.sections = sections;
    }

    public Integer getAnnualQuantity() {
        return annualQuantity;
    }

    public void setAnnualQuantity(Integer annualQuantity) {
        this.annualQuantity = annualQuantity;
    }

    public String getHsCode() {
        return hsCode;
    }

    public void setHsCode(String hsCode) {
        this.hsCode = hsCode;
    }

    public Number getTariffRate() {
        return tariffRate;
    }

    public void setTariffRate(Number tariffRate) {
        this.tariffRate = tariffRate;
    }

    public Double getOverseaShare() {
        return overseaShare;
    }

    public void setOverseaShare(Double overseaShare) {
        this.overseaShare = overseaShare;
    }

    public Double getAirFreightShare() {
        return airFreightShare;
    }

    public void setAirFreightShare(Double airFreightShare) {
        this.airFreightShare = airFreightShare;
    }

    public Double getTransportTime() {
        return transportTime;
    }

    public void setTransportTime(Double transportTime) {
        this.transportTime = transportTime;
    }

    public Integer getSafetyStock() {
        return safetyStock;
    }

    public void setSafetyStock(Integer safetyStock) {
        this.safetyStock = safetyStock;
    }

    public Double getWidth() {
        return width;
    }

    public void setWidth(Double width) {
        this.width = width;
    }

    public Double getHeight() {
        return height;
    }

    public void setHeight(Double height) {
        this.height = height;
    }

    public Double getLength() {
        return length;
    }

    public void setLength(Double length) {
        this.length = length;
    }

    public Double getWeight() {
        return weight;
    }

    public void setWeight(Double weight) {
        this.weight = weight;
    }

    public DimensionUnit getDimensionUnit() {
        return dimensionUnit;
    }

    public void setDimensionUnit(DimensionUnit dimensionUnit) {
        this.dimensionUnit = dimensionUnit;
    }

    public WeightUnit getWeightUnit() {
        return weightUnit;
    }

    public void setWeightUnit(WeightUnit weightUnit) {
        this.weightUnit = weightUnit;
    }

    public Integer getHuUnitCount() {
        return huUnitCount;
    }

    public void setHuUnitCount(Integer huUnitCount) {
        this.huUnitCount = huUnitCount;
    }

    public Integer getLayer() {
        return layer;
    }

    public void setLayer(Integer layer) {
        this.layer = layer;
    }

    public Number getUnitCount() {
        return unitCount;
    }

    public void setUnitCount(Number unitCount) {
        this.unitCount = unitCount;
    }

    public Number getUtilization() {
        return utilization;
    }

    public void setUtilization(Number utilization) {
        this.utilization = utilization;
    }

    public ContainerType getType() {
        return type;
    }

    public void setType(ContainerType type) {
        this.type = type;
    }

    public Boolean getWeightExceeded() {
        return weightExceeded;
    }

    public void setWeightExceeded(Boolean weightExceeded) {
        this.weightExceeded = weightExceeded;
    }

    public Number getRate() {
        return rate;
    }

    public void setRate(Number rate) {
        this.rate = rate;
    }

    public Boolean getMixed() {
        return mixed;
    }

    public void setMixed(Boolean mixed) {
        this.mixed = mixed;
    }
}
