using GB5Shared.DTO.Framework.Login; using QMSDAL.CustomCode.ChecklistAnalytics; using QMSDAL.DTO; namespace QMSBLL.ChecklistAnalytics { // Analytics BLL — pure read pass-throughs. // No caching (analytics data is volatile — see CacheKeyLevel.NOT_REQUIRED in endpoints). public class ChecklistAnalyticsBLL : IChecklistAnalyticsBLL { private readonly IChecklistAnalyticsDAL _AnalyticsDAL; public ChecklistAnalyticsBLL(IChecklistAnalyticsDAL analyticsDAL) { _AnalyticsDAL = analyticsDAL; } public async Task GetKpiAsync(LoginDTO login, CancellationToken ct = default) { try { return await _AnalyticsDAL.GetKpiAsync(login, ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task> GetTrendAsync( int days, LoginDTO login, CancellationToken ct = default) { try { return await _AnalyticsDAL.GetTrendAsync(days, login, ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task> GetTimingBreakdownAsync( LoginDTO login, CancellationToken ct = default) { try { return await _AnalyticsDAL.GetTimingBreakdownAsync(login, ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task> GetTopFailuresAsync( int days, LoginDTO login, CancellationToken ct = default) { try { return await _AnalyticsDAL.GetTopFailuresAsync(days, login, ct).ConfigureAwait(false); } catch (Exception) { throw; } } } }