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

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

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

    private Long id;

    private Instant oraInizio;

    private Instant oraFine;

    private StatoPrenotazione stato;

    private String motivoEvento;

    private Integer numeroPartecipanti;

    private String noteUtente;

    private ConfermaDTO conferma;

    private UtenteAppDTO utente;

    private StrutturaDTO struttura;

    public Long getId() {
        return id;
    }

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

    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 StatoPrenotazione getStato() {
        return stato;
    }

    public void setStato(StatoPrenotazione stato) {
        this.stato = stato;
    }

    public String getMotivoEvento() {
        return motivoEvento;
    }

    public void setMotivoEvento(String motivoEvento) {
        this.motivoEvento = motivoEvento;
    }

    public Integer getNumeroPartecipanti() {
        return numeroPartecipanti;
    }

    public void setNumeroPartecipanti(Integer numeroPartecipanti) {
        this.numeroPartecipanti = numeroPartecipanti;
    }

    public String getNoteUtente() {
        return noteUtente;
    }

    public void setNoteUtente(String noteUtente) {
        this.noteUtente = noteUtente;
    }

    public ConfermaDTO getConferma() {
        return conferma;
    }

    public void setConferma(ConfermaDTO conferma) {
        this.conferma = conferma;
    }

    public UtenteAppDTO getUtente() {
        return utente;
    }

    public void setUtente(UtenteAppDTO utente) {
        this.utente = utente;
    }

    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 PrenotazioneDTO)) {
            return false;
        }

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

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

    // prettier-ignore
    @Override
    public String toString() {
        return "PrenotazioneDTO{" +
            "id=" + getId() +
            ", oraInizio='" + getOraInizio() + "'" +
            ", oraFine='" + getOraFine() + "'" +
            ", stato='" + getStato() + "'" +
            ", motivoEvento='" + getMotivoEvento() + "'" +
            ", numeroPartecipanti=" + getNumeroPartecipanti() +
            ", noteUtente='" + getNoteUtente() + "'" +
            ", conferma=" + getConferma() +
            ", utente=" + getUtente() +
            ", struttura=" + getStruttura() +
            "}";
    }
}
