Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

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

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;

/**
 * Audit log of call-recording opens (SOP §15/§17). The LMS dashboard states that recordings are
 * "gated by role + reporting hierarchy; every open is logged" — this table is the log half of that
 * claim, and {@code /lms/recording/{leadCallId}} is the gate half.
 *
 * <p>Denied attempts are recorded too ({@code granted = false} with a {@code denied_reason}): an
 * agent repeatedly probing for recordings outside their scope is exactly what an audit review wants
 * to see, and a log that only kept successes would hide it.
 */
@Entity
@Table(name = "user.lead_recording_access")
public class LeadRecordingAccess {

    @Id
    @Column(name = "id", unique = true, updatable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "lead_call_id")
    private int leadCallId;

    @Column(name = "lead_id")
    private int leadId;

    /** Who tried to open it. */
    @Column(name = "auth_id")
    private int authId;

    /** Which matrix row let them in: OWN | REPORTS | STATE | ALL — null when denied. */
    @Column(name = "access_basis")
    private String accessBasis;

    @Column(name = "granted")
    private boolean granted;

    @Column(name = "denied_reason")
    private String deniedReason;

    @Column(name = "ip_address")
    private String ipAddress;

    @Column(name = "created_timestamp")
    private LocalDateTime createdTimestamp;

    public int getId() {
        return id;
    }

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

    public int getLeadCallId() {
        return leadCallId;
    }

    public void setLeadCallId(int leadCallId) {
        this.leadCallId = leadCallId;
    }

    public int getLeadId() {
        return leadId;
    }

    public void setLeadId(int leadId) {
        this.leadId = leadId;
    }

    public int getAuthId() {
        return authId;
    }

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

    public String getAccessBasis() {
        return accessBasis;
    }

    public void setAccessBasis(String accessBasis) {
        this.accessBasis = accessBasis;
    }

    public boolean isGranted() {
        return granted;
    }

    public void setGranted(boolean granted) {
        this.granted = granted;
    }

    public String getDeniedReason() {
        return deniedReason;
    }

    public void setDeniedReason(String deniedReason) {
        this.deniedReason = deniedReason;
    }

    public String getIpAddress() {
        return ipAddress;
    }

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

    public LocalDateTime getCreatedTimestamp() {
        return createdTimestamp;
    }

    public void setCreatedTimestamp(LocalDateTime createdTimestamp) {
        this.createdTimestamp = createdTimestamp;
    }
}