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; } } }