using _0_Framework.Application; using AccountManagement.Application.Contracts.Task; using AccountManagement.Application.Contracts.Ticket; using Company.Domain.WorkshopAccountAgg; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; using WorkFlow.Application.Contracts.AdminWorkFlow; namespace ServiceHost.Areas.Admin.Controllers; public class CountController : AdminBaseController { private readonly IAuthHelper _authHelper; private readonly IWorkshopAccountRepository _workshopAccountRepository; private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; private readonly ITicketApplication _ticketApplication; private readonly ITaskApplication _taskApplication; private long _roleId; public CountController( IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository, IAdminWorkFlowApplication adminWorkFlowApplication, ITicketApplication ticketApplication, ITaskApplication taskApplication) { _authHelper = authHelper; _workshopAccountRepository = workshopAccountRepository; _ticketApplication = ticketApplication; _taskApplication = taskApplication; _adminWorkFlowApplication = adminWorkFlowApplication; _roleId = authHelper.CurrentAccountInfo().RoleId; } [HttpGet("task")] public async Task GetTaskCount() { var currentAccountId = _authHelper.CurrentAccountId(); int taskCount = await _taskApplication.RequestedAndOverdueTasksCount(currentAccountId); return Ok(new { success = true, data = taskCount }); } [HttpGet("ticket")] public IActionResult GetTicketCount() { int ticketCount = _ticketApplication.GetAdminTicketsCount(); return Ok(new { success = true, data = ticketCount }); } [HttpGet("workflow")] public async Task GetWorkFlowCount() { var currentAccountId = _authHelper.CurrentAccountId(); var accountWorkshops = _workshopAccountRepository.GetList(currentAccountId).Select(x => x.WorkshopId).ToList(); var permissions = _authHelper.GetPermissions(); int workFlowCount = await _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops, currentAccountId, _roleId, permissions); return Ok(new { success = true, data = workFlowCount }); } [HttpGet("checker")] public async Task GetCheckerCount() { int checkerCount = await _adminWorkFlowApplication.GetWorkFlowCountForChecker(); return Ok(new { success = true, data = checkerCount }); } }