/// <summary> /// Executa uma aplicação. /// </summary> /// <param name="tipoFormulário">Formulário principal que herda de Apresentação.Formulários.BaseFormulário</param> /// <param name="fachada">Nome da faixada</param> /// <param name="efetuarLogin">Pedir que usuário efetua login no banco de dados</param> public static void Executar(Type tipoFormulário, Usuários usuários, bool efetuarLogin, bool mostrarSplash) { #if DEBUG Console.WriteLine("========================================================"); Console.WriteLine("Executando aplicação..."); #endif try { Application.SetCompatibleTextRenderingDefault(false); Application.EnableVisualStyles(); Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, true); Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(ThreadException); } catch { } #if !DEBUG try #endif { Splash splash; // Mostra splash screen if (mostrarSplash) { splash = new Splash(); splash.Show(); splash.Update(); #if DEBUG Console.WriteLine("Splash exibido!"); #endif } else splash = null; try { aplicação = new Aplicação(tipoFormulário, usuários, efetuarLogin, splash); } catch (LoginNãoAssociadoAFuncionário) { MessageBox.Show("O login não está associado a um funcionário", "Login não pode ser feito", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); return; } catch (LoginOuSenhaIncorretos) { MessageBox.Show("Login e/ou senha incorretos. ", "Login não pode ser feito", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); return; } #if DEBUG Console.WriteLine("Disparando ao carregar!"); #endif aplicação.DispararAoCarregar(); splash = null; #if DEBUG Console.WriteLine("Aplicação pronta!"); Console.WriteLine("========================================================"); #endif Application.Run(aplicação); GC.Collect(); } #if !DEBUG catch (LoginNãoEfetuado) { // Nada aqui } catch (Exception e) { try { Acesso.Comum.Usuários.UsuárioAtual.RegistrarErro(e); MessageBox.Show("Ocorreu um erro e o programa será finalizado. Um relatório de erros foi gerado e enviado ao servidor.\n\nMensagem de erro: " + e.Message, "Falha no sistema", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception e2) { MessageBox.Show("Ocorreu o seguinte erro no sistema e o programa será finalizado: " + e.ToString(), "Falha no sistema", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("Não foi possível enviar relatório para os programadores devido ao seguinte problema: " + e2.ToString(), "Falha no sistema", MessageBoxButtons.OK, MessageBoxIcon.Error); } } #endif }
/// <summary> /// </summary> /// <returns>Falso se usuário cancelou</returns> public static bool EfetuarLogin(Usuários usuários, Splash splash) { #pragma warning disable 0162 #if DEBUG Usuários.UsuárioAtual = usuários.EfetuarLogin("andrep", "andrep"); return true; #endif bool conectado = false; // Constrói janela de login using (Login loginDlg = new Login()) { do { DialogResult resultado; if (splash != null) splash.Hide(); resultado = loginDlg.ShowDialog(); if (splash != null) splash.Show(); switch (resultado) { case DialogResult.OK: if (splash != null) splash.Mensagem = "Autenticando usuário"; try { Usuários.UsuárioAtual = usuários.EfetuarLogin(loginDlg.txtUsuário.Text, loginDlg.txtSenha.Text); if (Usuários.UsuárioAtual == null) MessageBox.Show("Senha ou usuário incorreto!", "Indústria Mineira de Joias", MessageBoxButtons.OK, MessageBoxIcon.Stop); else { conectado = true; } } catch (Exception e) { if (splash != null) splash.Mensagem = "Não foi possível autenticar usuário"; MessageBox.Show("Não foi possível autenticar usuário.\r\n\r\nOcorreu o seguinte erro: " + e.Message, "Indústria Mineira de Joias", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Conectado! break; case DialogResult.Cancel: return false; default: break; } } while (!conectado); #if DEBUG Usuários.UsuárioAtual.GerenciadorConexões.ConexãoPresa += new GerenciadorConexões.ConexãoPresaCallback(GerenciadorConexões_ConexãoPresa); #endif return true; } #pragma warning restore 0162 }