LevelOS-Core/Dashboards/Dashmain/MainForm.cs
2026-04-17 21:09:19 -03:00

147 lines
6.2 KiB
C#

using CCH;
using CustomMessageBox;
using DAL;
using System;
using System.Drawing;
using System.Windows.Forms;
using TLL;
namespace UI
{
public class MainForm : Form
{
private readonly SidebarControl _sidebar;
private readonly DashboardPanel _dashboard;
private readonly ClienteCadastroPanel _pClientes;
private readonly EmpresaCadastroPanel _pEmpresa;
private readonly EmpresaConfiguracoesPanel _pEmpresaConfig;
private readonly AgendaCadastroPanel _pAgendaCadastro;
private readonly AgendaConsultaPanel _pAgendaConsulta;
private readonly FuncionariosCadastroPanel _pfuncionariosCadastro ;
private readonly Panel _pOrdens;
private readonly Panel _pProdutos;
private readonly Panel _pEstoque;
private readonly Panel _pFinanceiro;
public MainForm()
{
Text = "LevelOS — Sistema ERP";
this.WindowState = FormWindowState.Maximized;
this.MinimumSize = new Size(1100, 750);
this.BackColor = Color.FromArgb(248, 250, 252);
_sidebar = new SidebarControl { Dock = DockStyle.Left };
_sidebar.NavItemClicked += OnNavItemClicked;
_dashboard = new DashboardPanel { Dock = DockStyle.Fill };
_pClientes = new ClienteCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pEmpresa = new EmpresaCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pEmpresaConfig = new EmpresaConfiguracoesPanel { Dock = DockStyle.Fill, Visible = false };
_pAgendaCadastro = new AgendaCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pAgendaConsulta = new AgendaConsultaPanel { Dock = DockStyle.Fill, Visible = false };
_pfuncionariosCadastro = new FuncionariosCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pOrdens = PlaceholderPanel("Ordens de Serviço", Color.FromArgb(22, 163, 74));
_pProdutos = PlaceholderPanel("Catálogo de Produtos", Color.FromArgb(217, 119, 6));
_pEstoque = PlaceholderPanel("Controle de Estoque", Color.FromArgb(234, 88, 12));
_pFinanceiro = PlaceholderPanel("Fluxo Financeiro", Color.FromArgb(124, 58, 237));
var mainContainer = new Panel { Dock = DockStyle.Fill };
mainContainer.Controls.Add(_pFinanceiro);
mainContainer.Controls.Add(_pAgendaCadastro);
mainContainer.Controls.Add(_pAgendaConsulta);
mainContainer.Controls.Add(_pEstoque);
mainContainer.Controls.Add(_pProdutos);
mainContainer.Controls.Add(_pOrdens);
mainContainer.Controls.Add(_pEmpresa);
mainContainer.Controls.Add(_pEmpresaConfig);
mainContainer.Controls.Add(_pClientes);
mainContainer.Controls.Add(_dashboard);
mainContainer.Controls.Add(_pfuncionariosCadastro);
Controls.Add(mainContainer);
Controls.Add(_sidebar);
ShowPanel(_dashboard);
}
private void OnNavItemClicked(object? sender, int index)
{
/* Índices:
0 = Dashboard
2 = Ordens de Serviço
4 = Produtos
5 = Estoque
9 = Financeiro
99 = Submenu → Clientes
98 = Submenu → Empresa
*/
switch (index)
{
case 0: ShowPanel(_dashboard); break;
case 2: ShowPanel(_pOrdens); break;
case 4: ShowPanel(_pProdutos); break;
case 5: ShowPanel(_pEstoque); break;
case 9: ShowPanel(_pFinanceiro); break;
case 99: ShowPanel(_pClientes); break;
case 103: ShowPanel(_pfuncionariosCadastro); break;
case 106: ShowPanel(_pEmpresa); break;
case 202: ShowPanel(_pEmpresaConfig); break;
case 300: ShowPanel(_pAgendaCadastro); break;
case 301: ShowPanel(_pAgendaConsulta); break;
}
}
private void ShowPanel(Control panelToShow)
{
_dashboard.Visible = (panelToShow == _dashboard);
_pClientes.Visible = (panelToShow == _pClientes);
_pEmpresa.Visible = (panelToShow == _pEmpresa);
_pEmpresaConfig.Visible = (panelToShow == _pEmpresaConfig);
_pOrdens.Visible = (panelToShow == _pOrdens);
_pProdutos.Visible = (panelToShow == _pProdutos);
_pEstoque.Visible = (panelToShow == _pEstoque);
_pFinanceiro.Visible = (panelToShow == _pFinanceiro);
_pAgendaCadastro.Visible = (panelToShow == _pAgendaCadastro);
_pAgendaConsulta.Visible = (panelToShow == _pAgendaConsulta);
_pfuncionariosCadastro.Visible = (panelToShow == _pfuncionariosCadastro);
if (panelToShow.Visible)
{
panelToShow.BringToFront();
panelToShow.Focus();
}
}
private static Panel PlaceholderPanel(string titulo, Color cor)
{
var p = new Panel { Dock = DockStyle.Fill, Visible = false };
p.Paint += (s, e) =>
{
var g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
var r = p.ClientRectangle;
g.Clear(Color.FromArgb(248, 250, 252));
var circle = new Rectangle(r.Width / 2 - 40, r.Height / 2 - 80, 80, 80);
g.FillEllipse(new SolidBrush(Color.FromArgb(20, cor)), circle);
using var f1 = new Font("Segoe UI Semibold", 16f);
using var f2 = new Font("Segoe UI", 10f);
var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
g.DrawString(titulo, f1, new SolidBrush(Color.FromArgb(30, 41, 59)),
new RectangleF(0, r.Height / 2f - 10, r.Width, 40), sf);
g.DrawString("Este módulo está sendo integrado ao LevelOS", f2, new SolidBrush(Color.FromArgb(148, 163, 184)),
new RectangleF(0, r.Height / 2f + 25, r.Width, 30), sf);
};
return p;
}
}
}