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

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

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

    private Long id;

    private TipoEntita entitaTipo;

    private Long entitaId;

    private AzioneAudit azione;

    private String dettagli;

    private String ipAddress;

    private Instant createdAt;

    private UtenteAppDTO utente;

    public Long getId() {
        return id;
    }

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

    public TipoEntita getEntitaTipo() {
        return entitaTipo;
    }

    public void setEntitaTipo(TipoEntita entitaTipo) {
        this.entitaTipo = entitaTipo;
    }

    public Long getEntitaId() {
        return entitaId;
    }

    public void setEntitaId(Long entitaId) {
        this.entitaId = entitaId;
    }

    public AzioneAudit getAzione() {
        return azione;
    }

    public void setAzione(AzioneAudit azione) {
        this.azione = azione;
    }

    public String getDettagli() {
        return dettagli;
    }

    public void setDettagli(String dettagli) {
        this.dettagli = dettagli;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    public Instant getCreatedAt() {
        return createdAt;
    }

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

    public UtenteAppDTO getUtente() {
        return utente;
    }

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

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

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

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

    // prettier-ignore
    @Override
    public String toString() {
        return "AuditLogDTO{" +
            "id=" + getId() +
            ", entitaTipo='" + getEntitaTipo() + "'" +
            ", entitaId=" + getEntitaId() +
            ", azione='" + getAzione() + "'" +
            ", dettagli='" + getDettagli() + "'" +
            ", ipAddress='" + getIpAddress() + "'" +
            ", createdAt='" + getCreatedAt() + "'" +
            ", utente=" + getUtente() +
            "}";
    }
}
