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

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

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

    private Long id;

    private TipoCanaleNotifica tipoCanale;

    private TipoEventoNotifica tipoEvento;

    private String messaggio;

    private Boolean inviata;

    private Instant inviataAt;

    private String errore;

    private Instant createdAt;

    private ConfermaDTO conferma;

    public Long getId() {
        return id;
    }

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

    public TipoCanaleNotifica getTipoCanale() {
        return tipoCanale;
    }

    public void setTipoCanale(TipoCanaleNotifica tipoCanale) {
        this.tipoCanale = tipoCanale;
    }

    public TipoEventoNotifica getTipoEvento() {
        return tipoEvento;
    }

    public void setTipoEvento(TipoEventoNotifica tipoEvento) {
        this.tipoEvento = tipoEvento;
    }

    public String getMessaggio() {
        return messaggio;
    }

    public void setMessaggio(String messaggio) {
        this.messaggio = messaggio;
    }

    public Boolean getInviata() {
        return inviata;
    }

    public void setInviata(Boolean inviata) {
        this.inviata = inviata;
    }

    public Instant getInviataAt() {
        return inviataAt;
    }

    public void setInviataAt(Instant inviataAt) {
        this.inviataAt = inviataAt;
    }

    public String getErrore() {
        return errore;
    }

    public void setErrore(String errore) {
        this.errore = errore;
    }

    public Instant getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Instant createdAt) {
        this.createdAt = createdAt;
    }

    public ConfermaDTO getConferma() {
        return conferma;
    }

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

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

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

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

    // prettier-ignore
    @Override
    public String toString() {
        return "NotificaDTO{" +
            "id=" + getId() +
            ", tipoCanale='" + getTipoCanale() + "'" +
            ", tipoEvento='" + getTipoEvento() + "'" +
            ", messaggio='" + getMessaggio() + "'" +
            ", inviata='" + getInviata() + "'" +
            ", inviataAt='" + getInviataAt() + "'" +
            ", errore='" + getErrore() + "'" +
            ", createdAt='" + getCreatedAt() + "'" +
            ", conferma=" + getConferma() +
            "}";
    }
}
