131 lines
4.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|