package it.sw.pa.comune.artegna.service.dto;

import it.sw.pa.comune.artegna.domain.enumeration.GiornoSettimana;
import it.sw.pa.comune.artegna.domain.enumeration.TipoDisponibilita;
import java.io.Serializable;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Objects;

/**
 * A DTO for the {@link it.sw.pa.comune.artegna.domain.Disponibilita} entity.
 */
@SuppressWarnings("common-java:DuplicatedBlocks")
public class DisponibilitaDTO implements Serializable {

    private Long id;

    private GiornoSettimana giornoSettimana;

    private LocalDate dataSpecifica;

    private Instant oraInizio;

    private Instant oraFine;

    private String orarioInizio;

    private String orarioFine;

    private TipoDisponibilita tipo;

    private String note;

    private StrutturaDTO struttura;

    public Long getId() {
        return id;
    }

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

    public GiornoSettimana getGiornoSettimana() {
        return giornoSettimana;
    }

    public void setGiornoSettimana(GiornoSettimana giornoSettimana) {
        this.giornoSettimana = giornoSettimana;
    }

    public LocalDate getDataSpecifica() {
        return dataSpecifica;
    }

    public void setDataSpecifica(LocalDate dataSpecifica) {
        this.dataSpecifica = dataSpecifica;
    }

    public Instant getOraInizio() {
        return oraInizio;
    }

    public void setOraInizio(Instant oraInizio) {
        this.oraInizio = oraInizio;
    }

    public Instant getOraFine() {
        return oraFine;
    }

    public void setOraFine(Instant oraFine) {
        this.oraFine = oraFine;
    }

    public String getOrarioInizio() {
        return orarioInizio;
    }

    public void setOrarioInizio(String orarioInizio) {
        this.orarioInizio = orarioInizio;
    }

    public String getOrarioFine() {
        return orarioFine;
    }

    public void setOrarioFine(String orarioFine) {
        this.orarioFine = orarioFine;
    }

    public TipoDisponibilita getTipo() {
        return tipo;
    }

    public void setTipo(TipoDisponibilita tipo) {
        this.tipo = tipo;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public StrutturaDTO getStruttura() {
        return struttura;
    }

    public void setStruttura(StrutturaDTO struttura) {
        this.struttura = struttura;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof DisponibilitaDTO)) {
            return false;
        }

        DisponibilitaDTO disponibilitaDTO = (DisponibilitaDTO) o;
        if (this.id == null) {
            return false;
        }
        return Objects.equals(this.id, disponibilitaDTO.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(this.id);
    }

    // prettier-ignore
    @Override
    public String toString() {
        return "DisponibilitaDTO{" +
            "id=" + getId() +
            ", giornoSettimana='" + getGiornoSettimana() + "'" +
            ", dataSpecifica='" + getDataSpecifica() + "'" +
            ", oraInizio='" + getOraInizio() + "'" +
            ", oraFine='" + getOraFine() + "'" +
            ", orarioInizio='" + getOrarioInizio() + "'" +
            ", orarioFine='" + getOrarioFine() + "'" +
            ", tipo='" + getTipo() + "'" +
            ", note='" + getNote() + "'" +
            ", struttura=" + getStruttura() +
            "}";
    }
}
