Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.entity.cs;

import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;

/**
 * Entity to store daily agent performance insights from Knowlarity.
 * Data is updated on each scheduled scrape (every 2 hours) for the same date.
 * Historical data is preserved for past dates.
 */
@Entity
@Table(name = "cs.agent_daily_insight",
        uniqueConstraints = @UniqueConstraint(columnNames = {"agent_email", "insight_date"}))
public class AgentDailyInsight {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "agent_name")
    private String agentName;

    @Column(name = "agent_email")
    private String agentEmail;

    @Column(name = "agent_number")
    private String agentNumber;

    @Column(name = "agent_sip_id")
    private String agentSipId;

    @Column(name = "auth_id")
    private Integer authId;

    @Column(name = "total_logged_in_time")
    private String totalLoggedInTime;

    @Column(name = "logged_in_seconds")
    private Integer loggedInSeconds;

    @Column(name = "total_break_duration")
    private String totalBreakDuration;

    @Column(name = "break_seconds")
    private Integer breakSeconds;

    @Column(name = "available_time")
    private String availableTime;

    @Column(name = "available_seconds")
    private Integer availableSeconds;

    @Column(name = "total_talk_time")
    private String totalTalkTime;

    @Column(name = "talk_seconds")
    private Integer talkSeconds;

    @Column(name = "calls_answered")
    private Integer callsAnswered;

    @Column(name = "missed_calls")
    private Integer missedCalls;

    @Column(name = "total_calls")
    private Integer totalCalls;

    @Column(name = "insight_date")
    private LocalDate insightDate;

    @Column(name = "last_updated")
    private LocalDateTime lastUpdated;

    @Column(name = "create_timestamp")
    private LocalDateTime createTimestamp;

    public AgentDailyInsight() {
    }

    public AgentDailyInsight(String agentName, String agentEmail, LocalDate insightDate) {
        this.agentName = agentName;
        this.agentEmail = agentEmail;
        this.insightDate = insightDate;
        this.createTimestamp = LocalDateTime.now();
        this.lastUpdated = LocalDateTime.now();
    }

    // Getters and Setters

    public Long getId() {
        return id;
    }

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

    public String getAgentName() {
        return agentName;
    }

    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    public String getAgentEmail() {
        return agentEmail;
    }

    public void setAgentEmail(String agentEmail) {
        this.agentEmail = agentEmail;
    }

    public String getAgentNumber() {
        return agentNumber;
    }

    public void setAgentNumber(String agentNumber) {
        this.agentNumber = agentNumber;
    }

    public String getAgentSipId() {
        return agentSipId;
    }

    public void setAgentSipId(String agentSipId) {
        this.agentSipId = agentSipId;
    }

    public Integer getAuthId() {
        return authId;
    }

    public void setAuthId(Integer authId) {
        this.authId = authId;
    }

    public String getTotalLoggedInTime() {
        return totalLoggedInTime;
    }

    public void setTotalLoggedInTime(String totalLoggedInTime) {
        this.totalLoggedInTime = totalLoggedInTime;
    }

    public Integer getLoggedInSeconds() {
        return loggedInSeconds;
    }

    public void setLoggedInSeconds(Integer loggedInSeconds) {
        this.loggedInSeconds = loggedInSeconds;
    }

    public String getTotalBreakDuration() {
        return totalBreakDuration;
    }

    public void setTotalBreakDuration(String totalBreakDuration) {
        this.totalBreakDuration = totalBreakDuration;
    }

    public Integer getBreakSeconds() {
        return breakSeconds;
    }

    public void setBreakSeconds(Integer breakSeconds) {
        this.breakSeconds = breakSeconds;
    }

    public String getAvailableTime() {
        return availableTime;
    }

    public void setAvailableTime(String availableTime) {
        this.availableTime = availableTime;
    }

    public Integer getAvailableSeconds() {
        return availableSeconds;
    }

    public void setAvailableSeconds(Integer availableSeconds) {
        this.availableSeconds = availableSeconds;
    }

    public String getTotalTalkTime() {
        return totalTalkTime;
    }

    public void setTotalTalkTime(String totalTalkTime) {
        this.totalTalkTime = totalTalkTime;
    }

    public Integer getTalkSeconds() {
        return talkSeconds;
    }

    public void setTalkSeconds(Integer talkSeconds) {
        this.talkSeconds = talkSeconds;
    }

    public Integer getCallsAnswered() {
        return callsAnswered;
    }

    public void setCallsAnswered(Integer callsAnswered) {
        this.callsAnswered = callsAnswered;
    }

    public Integer getMissedCalls() {
        return missedCalls;
    }

    public void setMissedCalls(Integer missedCalls) {
        this.missedCalls = missedCalls;
    }

    public Integer getTotalCalls() {
        return totalCalls;
    }

    public void setTotalCalls(Integer totalCalls) {
        this.totalCalls = totalCalls;
    }

    public LocalDate getInsightDate() {
        return insightDate;
    }

    public void setInsightDate(LocalDate insightDate) {
        this.insightDate = insightDate;
    }

    public LocalDateTime getLastUpdated() {
        return lastUpdated;
    }

    public void setLastUpdated(LocalDateTime lastUpdated) {
        this.lastUpdated = lastUpdated;
    }

    public LocalDateTime getCreateTimestamp() {
        return createTimestamp;
    }

    public void setCreateTimestamp(LocalDateTime createTimestamp) {
        this.createTimestamp = createTimestamp;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        AgentDailyInsight that = (AgentDailyInsight) o;
        return Objects.equals(agentEmail, that.agentEmail) &&
                Objects.equals(insightDate, that.insightDate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(agentEmail, insightDate);
    }

    @Override
    public String toString() {
        return "AgentDailyInsight{" +
                "id=" + id +
                ", agentName='" + agentName + '\'' +
                ", agentEmail='" + agentEmail + '\'' +
                ", insightDate=" + insightDate +
                ", totalLoggedInTime='" + totalLoggedInTime + '\'' +
                ", totalBreakDuration='" + totalBreakDuration + '\'' +
                ", availableTime='" + availableTime + '\'' +
                ", totalTalkTime='" + totalTalkTime + '\'' +
                ", lastUpdated=" + lastUpdated +
                '}';
    }
}