private void verifyMenu(XFrmMenu menu, List <ItsMenu> activeMenus) { foreach (var mnu_item in activeMenus) { foreach (RibbonPage page in menu.Ribbon.Pages) { if (page.Name == mnu_item.NomeMenu) { page.Visible = mnu_item.Status; } foreach (RibbonPageGroup grp in page.Groups) { if (grp.Name == mnu_item.NomeMenu) { grp.Visible = mnu_item.Status; } foreach (BarItemLink btn in grp.ItemLinks) { if (btn.Item.Name == mnu_item.NomeMenu) { btn.Visible = mnu_item.Status; if (btn.Item.Visibility == BarItemVisibility.Never && mnu_item.Status) { btn.Item.Visibility = BarItemVisibility.Always; } } } } } } }
/// <summary> /// Aguarde o fim da tarefa e invoca o menu se o contexto foi iniciado e o usuário logado corretamente /// </summary> private void waitRun() { try { _taskLogin.Wait(); } catch (Exception ex) { string msg = "Ocorreu um erro não identificado !"; LoggerUtilIts.GenerateLogs(ex, msg); XMessageIts.ExceptionJustMessage(ex, msg, "Falha no sistema !"); throw ex; }//se nao conseguiu logar deu ruim if (this._xFrmLogin.IsLogin == false) { //faz tudo denovo mas dessa vez fica amarrado //ou seja nao vai fechar o form ate logar corretamente this._xFrmLogin.ShowDialog(); } Console.WriteLine("Task Done"); if (this._xFrmMatrizFilial == null || this._xFrmMatrizFilial.IsFilial == false || this._xFrmMatrizFilial.IsCancel) { Application.Exit(); } else { Usuario user = _taskLogin.Result; //se algum deles existe if (user != null || UnitWork.Usuario != null) { //se o primeiro usuario falhou if (user == null) { //entao esse aqui ta ok user = UnitWork.Usuario; } //garante o fim da Task _taskLogin.Dispose(); //invoka a thread que amarra o menu principal var licManager = new LicenseDaoManager(); var lic = licManager.GetValidLicense(); if (lic != null) { var menu = new XFrmMenu(user, _application); verifyMenu(menu, lic.LicenseDataUnSerialized.ActiveMenus); Application.Run(menu); } else { Application.Exit(); } } } }