Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions audit_management/audit_management/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from frappe import _

@frappe.whitelist()
def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None, item_stages=None, time_filter=None):
def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None, item_stages=None, time_filter=None, query_type=None):
user = frappe.session.user
roles = frappe.get_roles(user)

Expand All @@ -28,6 +28,12 @@ def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None,
if isinstance(risk, str): risk_list = [r.strip() for r in risk.split(',') if r.strip()]
elif isinstance(risk, list): risk_list = risk

# Handle multiple query types
query_type_list = []
if query_type:
if isinstance(query_type, str): query_type_list = [q.strip() for q in query_type.split(',') if q.strip()]
elif isinstance(query_type, list): query_type_list = query_type

# Handle item stages (from child table)
item_stage_list = []
if item_stages:
Expand Down Expand Up @@ -96,6 +102,9 @@ def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None,
if risk_list:
if "Normal" in risk_list: p_filters["risk"] = ["in", risk_list + [None, ""]]
else: p_filters["risk"] = ["in", risk_list]

if query_type_list:
p_filters["query_type"] = ["in", query_type_list]

pending_for_me_list = frappe.get_all(
"My Audits",
Expand Down Expand Up @@ -129,6 +138,10 @@ def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None,
if allowed_divisions: filters["emp_division"] = ["in", allowed_divisions]
else: filters["emp_division"] = "None"

# Apply Global query_type filter
if query_type_list:
filters["query_type"] = ["in", query_type_list]

# Calculate Counters for Manager/Member
total_pending = frappe.db.count("My Audits", {**filters, "status": "Pending"})
closed_count = frappe.db.count("My Audits", {**filters, "status": "Closed"})
Expand All @@ -142,7 +155,7 @@ def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None,
responded_count_manager = 0
not_responded_count_manager = 0
stage_counts = {}
time_counts = {"Today": 0, "Yesterday": 0, "Last Week": 0}
time_counts = {"Today": 0, "Yesterday": 0, "Last Week": 0, "All Time": 0}

if manager_parents_names:
resp_sql = "SELECT COUNT(DISTINCT parent) FROM `tabAudit Items` WHERE status = 'Responded' AND parent IN %s"
Expand All @@ -164,6 +177,7 @@ def get_dashboard_stats(pending_start=0, recent_start=0, status=None, risk=None,
time_counts["Today"] = frappe.db.sql(f"SELECT COUNT(DISTINCT parent) FROM `tabAudit Items` WHERE status = %s AND parent IN %s AND DATE({field}) = CURDATE()", (child_status, tuple(manager_parents_names)))[0][0] or 0
time_counts["Yesterday"] = frappe.db.sql(f"SELECT COUNT(DISTINCT parent) FROM `tabAudit Items` WHERE status = %s AND parent IN %s AND DATE({field}) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)", (child_status, tuple(manager_parents_names)))[0][0] or 0
time_counts["Last Week"] = frappe.db.sql(f"SELECT COUNT(DISTINCT parent) FROM `tabAudit Items` WHERE status = %s AND parent IN %s AND DATE({field}) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)", (child_status, tuple(manager_parents_names)))[0][0] or 0
time_counts["All Time"] = responded_count_manager if child_status == 'Responded' else not_responded_count_manager

recent_list = []
has_more_recent = False
Expand Down
Loading
Loading