@page "/dashboardpanel" @inject IModalService modalService @inject TicketsService ticketService

Panel de control



Datos

@code { private List Items = new List() { new Dashboard.DashboardItem { Title="Tickets", Description="Tickets totales", Value="0", Icon="fa fa-box-archive fa-fw fa-2x", MainColor="dark-gray", OnClickParam="Todos" }, new Dashboard.DashboardItem { Title="Pendientes", Description="Tickets pendientes", Value="0", Icon="fa fa-clock fa-fw fa-2x", MainColor="red", OnClickParam="Pendiente" }, new Dashboard.DashboardItem { Title="En proceso", Description="Tickets en proceso", Value="0", Icon="fa fa-wrench fa-fw fa-2x", MainColor="purple", OnClickParam="En proceso" //Url="/DashboardDetail/En%20Proceso" }, new Dashboard.DashboardItem { Title="Completados", Description="Tickets completados", Value="0", Icon="fa fa-check-square fa-fw fa-2x", MainColor="green", OnClickParam="Completado" } }; private Task HandleModalDetalle(string? grupo) { var parameters = new ModalParameters() .Add(nameof(DashboardDetail.Group), grupo); var options = new ModalOptions { Size = ModalSize.ExtraLarge, HideCloseButton = true, HideHeader = true }; modalService.Show(string.Empty, parameters, options); return Task.CompletedTask; } private IEnumerable? summaryResult; List columnas = new List { "Estado", "Cantidad" }; List> datos = new List>(); protected async override Task OnInitializedAsync() { summaryResult = await ticketService.GetSummary(); if (summaryResult is not null) { // Asignar el valor calculado al elemento "Total" Items[0].Value = summaryResult.Sum(r => r.Cantidad).ToString() ?? "0"; Items[0].OnClickAction = grupo => HandleModalDetalle(Items[0].OnClickParam); Items[1].OnClickAction = grupo => HandleModalDetalle(Items[1].OnClickParam); Items[2].OnClickAction = grupo => HandleModalDetalle(Items[2].OnClickParam); Items[3].OnClickAction = grupo => HandleModalDetalle(Items[3].OnClickParam); Items[1].Value = summaryResult.FirstOrDefault(r => r.Estado == "Pendiente")?.Cantidad.ToString() ?? "0"; Items[2].Value = summaryResult.FirstOrDefault(r => r.Estado == "En Proceso")?.Cantidad.ToString() ?? "0"; Items[3].Value = summaryResult.FirstOrDefault(r => r.Estado == "Completado")?.Cantidad.ToString() ?? "0"; datos = ObtenerDatos(summaryResult); } } List> ObtenerDatos(IEnumerable summary) { var datos = new List>(); foreach (var item in summary) { var fila = new Dictionary(); fila.Add(columnas[0], item.Estado); fila.Add(columnas[1], item.Cantidad.ToString() ?? "0" ); datos.Add(fila); } return datos; } List botones = new List { new PhTable.ButtonOptions{ Caption="Editar", ElementClass="btn btn-primary"} }; private void NuevoTicket() { var options = new ModalOptions() { Size = ModalSize.ExtraLarge, HideCloseButton = true }; modalService.Show("Nuevo Ticket", options); } }