LevelOS-Core/UI/Dashboards/Dashmain/MainForm.cs

243 lines
14 KiB
C#

using CCH;
using CustomMessageBox;
using DAL;
using LevelOS;
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 EquipamentosCadastroPanel _pequipamentosCadastroPanel;
private readonly ContratosCadastroPanel _pcontratosCadastroPanel;
private readonly FornecedoresCadastroPanel _pfornecedoresCadastroPanel;
private readonly TransportadorasCadastroPanel _ptransportadorasCadastroPanel;
private readonly ServicosCadastroPanel _pservicosCadastroPanel;
private readonly UsuariosCadastroPanel _pUsuarioCadastroPanel;
private readonly ChamadoCadastroPanel _pChamadoCadastroPanel;
//Sistema
private readonly ConfigCadastroPanel _pconfigCadastroPanel;
private readonly SshClienteCadastroPanel _psshClienteCadastroPanel;
private readonly SmtpClienteCadastroPanel _psmtpClienteCadastroPanel;
private readonly FtpClienteCadastroPanel _pftpClienteCadastroPanel;
private readonly TelegramClienteCadastroPanel _ptelegramClienteCadastroPanel;
private readonly BackupAutomaticoCadastroPanel _pBackupAutomaticoCadastroPanel;
private readonly CloudStorageCadastroPanel _pCloudStorageCadastroPanel;
//Painel financeiro
private readonly BoletoCadastroPanel _pboletoCadastroPanel;
private readonly ContaPagarCadastroPanel _pcontaPagarCadastroPanel;
private readonly ContaReceberCadastroPanel _pcontaReceberCadastroPanel;
private readonly ContasCadastroPanel _pcontasCadastroPanel;
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 };
_pboletoCadastroPanel = new BoletoCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pequipamentosCadastroPanel = new EquipamentosCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pcontratosCadastroPanel = new ContratosCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pfornecedoresCadastroPanel = new FornecedoresCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_ptransportadorasCadastroPanel = new TransportadorasCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pservicosCadastroPanel = new ServicosCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pUsuarioCadastroPanel = new UsuariosCadastroPanel { Dock = DockStyle.Fill, Visible=false };
_pChamadoCadastroPanel = new ChamadoCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pconfigCadastroPanel = new ConfigCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pcontaPagarCadastroPanel = new ContaPagarCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pcontaReceberCadastroPanel = new ContaReceberCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pcontasCadastroPanel = new ContasCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_psshClienteCadastroPanel = new SshClienteCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_psmtpClienteCadastroPanel = new SmtpClienteCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pftpClienteCadastroPanel = new FtpClienteCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_ptelegramClienteCadastroPanel = new TelegramClienteCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pBackupAutomaticoCadastroPanel = new BackupAutomaticoCadastroPanel { Dock = DockStyle.Fill, Visible = false };
_pCloudStorageCadastroPanel = new CloudStorageCadastroPanel { 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(_pboletoCadastroPanel);
mainContainer.Controls.Add(_pequipamentosCadastroPanel);
mainContainer.Controls.Add(_pcontratosCadastroPanel);
mainContainer.Controls.Add(_pfornecedoresCadastroPanel);
mainContainer.Controls.Add(_ptransportadorasCadastroPanel);
mainContainer.Controls.Add(_pservicosCadastroPanel);
mainContainer.Controls.Add(_pUsuarioCadastroPanel);
mainContainer.Controls.Add(_pChamadoCadastroPanel);
mainContainer.Controls.Add(_pconfigCadastroPanel);
mainContainer.Controls.Add(_pcontaReceberCadastroPanel);
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);
mainContainer.Controls.Add(_pcontaPagarCadastroPanel);
mainContainer.Controls.Add(_pcontasCadastroPanel);
mainContainer.Controls.Add(_psshClienteCadastroPanel);
mainContainer.Controls.Add(_psmtpClienteCadastroPanel);
mainContainer.Controls.Add(_pftpClienteCadastroPanel);
mainContainer.Controls.Add(_ptelegramClienteCadastroPanel);
mainContainer.Controls.Add(_pBackupAutomaticoCadastroPanel);
mainContainer.Controls.Add(_pCloudStorageCadastroPanel);
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 100: ShowPanel(_pequipamentosCadastroPanel); break;
case 101: ShowPanel(_pcontratosCadastroPanel); break;
case 102: ShowPanel(_pfornecedoresCadastroPanel); break;
case 103: ShowPanel(_pfuncionariosCadastro); break;
case 104: ShowPanel(_ptransportadorasCadastroPanel); break;
case 105: ShowPanel(_pservicosCadastroPanel); break;
case 106: ShowPanel(_pEmpresa); break;
case 107: ShowPanel(_pUsuarioCadastroPanel); break;
case 201: ShowPanel(_pconfigCadastroPanel); break;
case 202: ShowPanel(_pEmpresaConfig); break;
case 203: ShowPanel(_pftpClienteCadastroPanel); break;
case 204: ShowPanel(_ptelegramClienteCadastroPanel); break;
case 205: ShowPanel(_psmtpClienteCadastroPanel); break;
case 206: ShowPanel(_psshClienteCadastroPanel); break;
case 207: ShowPanel(_pBackupAutomaticoCadastroPanel); break;
case 208: ShowPanel(_pCloudStorageCadastroPanel); break;
case 300: ShowPanel(_pAgendaCadastro); break;
case 301: ShowPanel(_pAgendaConsulta); break;
case 309: ShowPanel(_pChamadoCadastroPanel); break;
case 400: ShowPanel(_pcontasCadastroPanel); break;
case 401: ShowPanel(_pcontaReceberCadastroPanel); break;
case 402: ShowPanel(_pcontaPagarCadastroPanel); break;
case 500: ShowPanel(_pboletoCadastroPanel); 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);
_pboletoCadastroPanel.Visible = (panelToShow == _pboletoCadastroPanel);
_pequipamentosCadastroPanel.Visible = (panelToShow == _pequipamentosCadastroPanel);
_pcontratosCadastroPanel.Visible = (panelToShow == _pcontratosCadastroPanel);
_pfornecedoresCadastroPanel.Visible = (panelToShow == _pfornecedoresCadastroPanel);
_ptransportadorasCadastroPanel.Visible = (panelToShow == _ptransportadorasCadastroPanel);
_pservicosCadastroPanel.Visible = (panelToShow == _pservicosCadastroPanel);
_pUsuarioCadastroPanel.Visible = (panelToShow == _pUsuarioCadastroPanel);
_pChamadoCadastroPanel.Visible = (panelToShow == _pChamadoCadastroPanel);
_pconfigCadastroPanel.Visible = (panelToShow == _pconfigCadastroPanel);
_pcontaPagarCadastroPanel.Visible = (panelToShow == _pcontaPagarCadastroPanel);
_pcontaReceberCadastroPanel.Visible = (panelToShow == _pcontaReceberCadastroPanel);
_pcontasCadastroPanel.Visible = (panelToShow == _pcontasCadastroPanel);
_psshClienteCadastroPanel.Visible = (panelToShow == _psshClienteCadastroPanel);
_psmtpClienteCadastroPanel.Visible = (panelToShow == _psmtpClienteCadastroPanel);
_pftpClienteCadastroPanel.Visible = (panelToShow == _pftpClienteCadastroPanel);
_ptelegramClienteCadastroPanel.Visible = (panelToShow == _ptelegramClienteCadastroPanel);
_pBackupAutomaticoCadastroPanel.Visible = (panelToShow == _pBackupAutomaticoCadastroPanel);
_pCloudStorageCadastroPanel.Visible = (panelToShow == _pCloudStorageCadastroPanel);
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;
}
}
}