public MenuUtil() { this.setTheme(); _application = new ITSApplication(); this._xFrmLogin = new ITSolution.Framework.Forms.XFrmLogin(this); }
//Acao disparada pelo botao de login //Totalmente assicrono private async Task <Usuario> doWorkAsync(string logon, string senha) { Usuario user = new Usuario(); bool result = await WaitEntityFramework.StartTask <Usuario>(taskInitEF()); //aqui tenho um contexto rodando assincrono if (result) { //ja iniciou nao precisa roda a barra denovo //isso impede que outro contexto seja iniciado this._isInit = true; //traz um usuario indexado do banco if (senha == null) { //a senha nunca chega nula a nao ser q eu aponte intencionalmente user = new UsuarioDaoManager().FindUserByNameOrId(logon); } else { user = new UsuarioDaoManager().IsLogin(logon, senha); } //seta o usuario UnitWork.Usuario = user; if (user == null) { //recria this._xFrmLogin = new ITSolution.Framework.Forms.XFrmLogin(this); //nao feche essa janela ate logar corretamente this._xFrmLogin.DisposeOnLogin = false; //marque false //mesmo que o form marque true //no banco de dados foi negado o acesso this._xFrmLogin.IsLogin = false; //agora nem esconde esse form mais //fica amarrado ate logar corretamente this._xFrmLogin.IsHideOnLogin = false; //mostre o botao de cadastro na tela //so deixe cadastrar no inicio se nao tiver usuarios if (_ctx.UsuarioDao.FindAll().Count == 0) { //se nao coloquei o botao na tela if (this._xFrmLogin.ActionBtn == null) { this._xFrmLogin.ActionBtn = addUsuario(); this._xFrmLogin.BtnAction.Visible = true; } } //se o login automatico falhou if (this._isLoginAutoFailed) { //apaguei as preferencias //implica e fazer todo o processo novamente File.Delete(UnitWork.PREFERENCIAS); } MessageBoxBlack.Show("Usuário \"" + logon + "\" ou senha inválido(s).", "Atenção"); } else { //use o tema do user DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = user.Skin; this._xFrmLogin.IsLogin = true; //login no servidor //_application.ITSTools.Login(logon, senha); //agora sim feche essa janela this._xFrmLogin.DisposeOnLogin = true; //seta a matriz e filial setMatrizFilial(_ctx); } } return(user); }