/// <param name="tipoFormulário">Formulário base, que herda de Apresentação.Formulários.BaseFormulário</param> public Aplicação(Type tipoFormulário, Usuários usuários, bool efetuarLogin, Splash splash) { #if !DEBUG try #endif { this.splash = splash; // Validar formulário if (typeof(BaseFormulário).IsInstanceOfType(tipoFormulário)) throw new Exception("A aplicação requer um formulário do tipo Apresentação.Formulários.BaseFormulário"); try { Application.EnableVisualStyles(); } catch (Exception erro) { if (splash != null) { splash.Mensagem = "Erro ao ligar efeitos visuais!"; System.Threading.Thread.Sleep(2000); splash.Mensagem = erro.Message; System.Threading.Thread.Sleep(2000); } else MessageBox.Show("Erro ao ligar efeitos visuais!"); } this.usuários = usuários; cultura = System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR"); if (splash != null) splash.Mensagem = "Conectando ao banco de dados ... "; Usuários.AoRegistrarErro += new Usuários.ErroUsuárioHandler(AoRegistrarErro); #if DEBUG Console.WriteLine("Efetuando conexão!"); Usuários.AoCriarConexão += new Usuários.UsuárioHandler(AoCriarConexão); #endif Application.DoEvents(); if (efetuarLogin) { bool cancelouLogin = !Login.EfetuarLogin(usuários, splash); if (cancelouLogin) throw new LoginNãoEfetuado(); if (Usuários.UsuárioAtual == null) throw new LoginOuSenhaIncorretos(); if (Entidades.Pessoa.Funcionário.FuncionárioAtual == null) throw new LoginNãoAssociadoAFuncionário(); } else Usuários.UsuárioAtual = usuários.EfetuarLogin("imjoias", "b9r8hukl3"); } #if !DEBUG catch (LoginNãoEfetuado e) { /* Este erro só ocorre quando a versão é DEBUG. * Em versão RELEASE, este erro implica em * finalização do programa sem mostrar * qualquer mensagem. */ throw e; } catch (Exception e) { MessageBox.Show(e.Message, "Indústria Mineira de Joias", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new Exception("Não foi possível carregar o sistema.", e); } #endif if (splash != null) splash.Mensagem = "Carregando controles gráficos ..."; #if DEBUG Console.WriteLine("Construindo janela principal!"); #endif try { formulário = (BaseFormulário) tipoFormulário.Assembly.CreateInstance(tipoFormulário.FullName); this.MainForm = formulário; } catch (Exception e) { #if DEBUG MessageBox.Show("Ocorreu uma exceção não tratada e não depurável durante a criação do formulário:\n\n" + e.ToString()); #else throw new Exception("Não foi possível construir janela principal!", e); #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 }