LevelcodeLicenseAPP/Forms/FrmDashboard.cs
2026-03-25 16:26:11 -03:00

131 lines
4.2 KiB
C#

using LevelCode.License.Business;
using LevelCode.License.DataAccess;
using Levelcode_licence.Business;
using Levelcode_licence.DataAccess;
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace LevelCode.License.Forms
{
public partial class FrmDashboard : Form
{
public FrmDashboard()
{
InitializeComponent();
CarregarDashboard();
}
private void CarregarDashboard()
{
using (var db = new DbConexao())
{
var service = new DashboardService(new DashboardDAL(db));
// Cards
flpCards.Controls.Clear();
flpCards.Controls.Add(CriarCard("📄 Total Licenças", service.TotalLicencas(), Color.FromArgb(52, 152, 219)));
flpCards.Controls.Add(CriarCard("✅ Ativas", service.LicencasAtivas(), Color.FromArgb(46, 204, 113)));
flpCards.Controls.Add(CriarCard("❌ Inativas", service.LicencasInativas(), Color.FromArgb(231, 76, 60)));
flpCards.Controls.Add(CriarCard("🖥 Máquinas Ativas", service.MaquinasAtivas(), Color.FromArgb(155, 89, 182)));
flpCards.Controls.Add(CriarCard("⚠ No Limite", service.LicencasNoLimite(), Color.FromArgb(241, 196, 15)));
CriarGraficoLicencas(service.LicencasAtivas(), service.LicencasInativas());
CriarGraficoMaquinas(service);
}
}
// =========================
// CARD
// =========================
private Panel CriarCard(string titulo, int valor, Color cor)
{
Panel card = new Panel
{
Width = 160,
Height = 90,
BackColor = cor,
Margin = new Padding(10)
};
Label lblTitulo = new Label
{
Text = titulo,
ForeColor = Color.White,
Font = new Font("Segoe UI", 9),
Location = new Point(10, 10),
AutoSize = true
};
Label lblValor = new Label
{
Text = valor.ToString(),
ForeColor = Color.White,
Font = new Font("Segoe UI", 22, FontStyle.Bold),
Location = new Point(10, 35),
AutoSize = true
};
card.Controls.Add(lblTitulo);
card.Controls.Add(lblValor);
return card;
}
// =========================
// GRÁFICO PIZZA
// =========================
private void CriarGraficoLicencas(int ativas, int inativas)
{
chartLicencas.Series.Clear();
chartLicencas.ChartAreas.Clear();
chartLicencas.Legends.Clear();
chartLicencas.ChartAreas.Add(new ChartArea());
Series serie = new Series
{
ChartType = SeriesChartType.Pie,
IsValueShownAsLabel = true,
Font = new Font("Segoe UI", 9, FontStyle.Bold)
};
serie.Points.AddXY("Ativas", ativas);
serie.Points.AddXY("Inativas", inativas);
chartLicencas.Series.Add(serie);
chartLicencas.Legends.Add(new Legend());
}
// =========================
// GRÁFICO BARRAS
// =========================
private void CriarGraficoMaquinas(DashboardService service)
{
chartMaquinas.Series.Clear();
chartMaquinas.ChartAreas.Clear();
ChartArea area = new ChartArea();
area.AxisX.Interval = 1;
area.AxisX.LabelStyle.Angle = -30;
chartMaquinas.ChartAreas.Add(area);
Series serie = new Series
{
ChartType = SeriesChartType.Column,
IsValueShownAsLabel = true,
Font = new Font("Segoe UI", 8)
};
// 🔧 Exemplo simples (pode evoluir depois)
serie.Points.AddXY("Cliente A", 2);
serie.Points.AddXY("Cliente B", 1);
serie.Points.AddXY("Cliente C", 3);
chartMaquinas.Series.Add(serie);
}
}
}