Esempio n. 1
0
        public async Task ItShouldProvideTheChallengeMissingViewIfGetChallengeFormThrowsAnyException()
        {
            var navResponse =
                new NavViewModel
            {
                Current = SupportServiceResourceKey.EmployerAccountFinance,
                Items   = new[]
                { new NavItem {
                      Href = "", Key = SupportServiceResourceKey.EmployerAccountTeam, Title = ""
                  } }
            };

            MockManifestRepository.Setup(x => x.GetNav(_resourceKey, _resourceId)).Returns(Task.FromResult(navResponse));
            MockManifestRepository.Setup(x => x.GenerateHeader(_resourceKey, _resourceId))
            .Returns(Task.FromResult(new ResourceResultModel()));
            MockManifestRepository.Setup(x => x.GetChallengeForm(_resourceKey, _challengeKey, _resourceId, _url)).Throws <Exception>();


            ActionResultResponse = await Unit.Challenge(_resourceKey, _challengeKey, _resourceId, _url);

            Assert.IsInstanceOf <ViewResult>(ActionResultResponse);
            var viewResult = (ViewResult)ActionResultResponse;

            Assert.IsInstanceOf <NavViewModel>(viewResult.ViewBag.SubNav);
            Assert.IsInstanceOf <object>(viewResult.ViewBag.SubHeader);
            Assert.AreEqual("Missing", viewResult.ViewName);
            Assert.IsNull(viewResult.Model);
        }
Esempio n. 2
0
        public void TestCategorySelection()
        {
            // Arrange
            Mock <IProductRepository> mockBuilder = new Mock <IProductRepository>();

            mockBuilder.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ProductId = 1, Name = "P1", Category = "Apples"
                },
                new Product {
                    ProductId = 2, Name = "P2", Category = "Apples"
                },
                new Product {
                    ProductId = 3, Name = "P3", Category = "Plums"
                },
                new Product {
                    ProductId = 4, Name = "P4", Category = "Oranges"
                }
            });

            NavController controller       = new NavController(mockBuilder.Object);
            String        categoryToSelect = "Apples";

            // Act
            NavViewModel viewModel = (NavViewModel)controller.Menu(categoryToSelect).Model;

            // Assert
            Assert.AreEqual(viewModel.SelectedCategory, categoryToSelect);
        }
Esempio n. 3
0
        public static IHtmlContent MenuNavItem(this IHtmlHelper htmlHelper, NavViewModel NavViewModel)
        {
            if (NavViewModel == null || NavViewModel.Applications == null || NavViewModel.Menus == null)
            {
                return(null);
            }
            ChoiceMenu = NavParent(htmlHelper, NavViewModel);

            var html = new DefaultTagHelperContent();

            foreach (var application in NavViewModel.Applications)
            {
                var tag = new TagBuilder("li");
                tag.MergeAttribute("class", "heading");
                var tagH3 = new TagBuilder("h3");
                tagH3.MergeAttribute("class", "uppercase");
                tagH3.InnerHtml.AppendHtml(application.Name);
                tag.InnerHtml.AppendHtml(tagH3);
                html.AppendHtml(tag);
                var appMenus = NavViewModel.Menus.Where(a => a.ApplicationID == application.ID && a.IsNav);

                foreach (var item in appMenus.Where(a => a.ParentID == default(Guid)))
                {
                    html.AppendHtml(CreateMenuTag(appMenus, item));
                }
            }
            return(html);
        }
Esempio n. 4
0
        // GET: Nav/Create
        public ActionResult Create()
        {
            NavViewModel model = new NavViewModel();

            GetViewModel(model);
            return(View(model));
        }
Esempio n. 5
0
        public async Task ItShouldProvideTheChallengeSubView()
        {
            var navResponse =
                new NavViewModel
            {
                Current = SupportServiceResourceKey.EmployerAccountTeam,
                Items   = new[]
                { new NavItem {
                      Href = "", Key = SupportServiceResourceKey.EmployerAccountTeam, Title = ""
                  } }
            };

            //MockManifestRepository.Setup(x => x.ChallengeExists(_challengeKey)).Returns(Task.FromResult(true));
            MockManifestRepository.Setup(x => x.GetNav(_resourceKey, _resourceId)).Returns(Task.FromResult(navResponse));
            MockManifestRepository.Setup(x => x.GenerateHeader(_resourceKey, _resourceId))
            .Returns(Task.FromResult(new ResourceResultModel()));
            MockManifestRepository.Setup(x => x.GetChallengeForm(_resourceKey, _challengeKey, _resourceId, _url))
            .Returns(Task.FromResult("<div></div."));

            ActionResultResponse = await Unit.Challenge(_resourceKey, _challengeKey, _resourceId, _url);

            Assert.IsInstanceOf <ViewResult>(ActionResultResponse);
            var viewResult = (ViewResult)ActionResultResponse;

            Assert.IsInstanceOf <NavViewModel>(viewResult.ViewBag.SubNav);
            Assert.IsInstanceOf <object>(viewResult.ViewBag.SubHeader);
            Assert.AreEqual("Sub", viewResult.ViewName);
            Assert.IsInstanceOf <ResourceResultModel>(viewResult.Model);
        }
Esempio n. 6
0
        public ActionResult SiteMapFooterNav()
        {
            var data = new NavViewModel();

            data.SectionCode = "";             // irrelevant as not used
            var sql = new Sql("where ShowInMainNav=1 and parentpageid is null");

            sql.AndIsActive <Page>();
            var pages = PageList.Load(sql);

            foreach (var page in pages)
            {
                var item = new NavItem {
                    PageID = page.ID, Title = page.GetNavTitle(), Url = page.GetFullUrl(), PageCode = page.PageCode, IsExternalUrl = page.LinkUrlIsExternal
                };
                data.NavItems.Add(item);
                //item.SubPages = GetChildren(page, null).FindAll(p => p.);
                foreach (var childPage in page.ChildPages.Active)
                {
                    if (childPage.ShowInMainNav)
                    {
                        item.SubPages.Add(new NavItem(childPage));
                    }
                }
            }
            return(View(data));
        }
Esempio n. 7
0
        public void TestCategories()
        {
            // Arrange
            Mock <IProductRepository> mockBuilder = new Mock <IProductRepository>();

            mockBuilder.Setup(m => m.Products).Returns(new Product[] {
                new Product {
                    ProductId = 1, Name = "P1", Category = "Apples"
                },
                new Product {
                    ProductId = 2, Name = "P2", Category = "Apples"
                },
                new Product {
                    ProductId = 3, Name = "P3", Category = "Plums"
                },
                new Product {
                    ProductId = 4, Name = "P4", Category = "Oranges"
                }
            });

            NavController controller = new NavController(mockBuilder.Object);

            // Act
            NavViewModel viewModel = (NavViewModel)controller.Menu().Model;

            // Assert
            String[] categories = viewModel.Categories.ToArray();
            Assert.AreEqual(categories.Length, 3);
            Assert.AreEqual(categories[0], "Apples");
            Assert.AreEqual(categories[1], "Oranges");
            Assert.AreEqual(categories[2], "Plums");
        }
        // GET: Navigation
        public PartialViewResult Menu()
        {
            NavViewModel navViewModel = new NavViewModel {
                ActiveController = HttpContext.Request.RequestContext.RouteData.Values["Controller"].ToString()
            };

            return(PartialView(navViewModel));
        }
Esempio n. 9
0
 public NavView()
 {
     this.InitializeComponent();
     vm = new NavViewModel();
     hamburgerMenuControl.ItemsSource        = vm.MainMenuItems;
     hamburgerMenuControl.OptionsItemsSource = vm.OptionalMenuItems;
     contentFrame.Navigate(typeof(Views.HomePageView));
 }
Esempio n. 10
0
        public PartialViewResult Nav()
        {
            var navModel = new NavViewModel
            {
                MovieCategorys = movieCategoryAppService.GetAll().Items.ToList()
            };

            return(PartialView(navModel));
        }
Esempio n. 11
0
        public PartialViewResult Menu(NavViewModel model, int CategoryId = 0, int SubCategoryId = 0)
        {
            ViewBag.SelectedCategory    = CategoryId;
            ViewBag.SelectedSubCategory = SubCategoryId;
            model.Categories            = repository.Categories.ToList();
            model.SubCategories         = repository.SubCate.ToList();

            return(PartialView(model));
        }
Esempio n. 12
0
        public async Task <IViewComponentResult> InvokeAsync()
        {
            var navVM = new NavViewModel();

            navVM.Categories = await _categoryService.GetCategories();

            navVM.Collections = await _collectionService.GetCollections();

            return(View(navVM));
        }
        public async Task <NavViewModel> GetNav(SupportServiceResourceKey key, string id)
        {
            var navViewModel = new NavViewModel
            {
                Current = key,
                Items   = _serviceConfiguration.GetNavItems(key, id).ToArray()
            };

            return(await Task.FromResult(navViewModel));
        }
Esempio n. 14
0
        /// <summary>
        /// 导航
        /// </summary>
        /// <returns></returns>
        public ActionResult Navigation()
        {
            var model = new NavViewModel();
            var dal   = new BrandDal();

            model.BrandTypeList = dal.GetListByProduct();
            model.BrandList     = dal.GetList();
            var pdal = new ProductTypeDal();

            model.ProductTypeList = pdal.GetTypeFList();
            return(PartialView(model));
        }
Esempio n. 15
0
        // GET: Nav
        public PartialViewResult Menu(String category = null)
        {
            NavViewModel viewModel = new NavViewModel
            {
                Categories = m_repository.Products
                             .Select(x => x.Category)
                             .Distinct()
                             .OrderBy(x => x),
                SelectedCategory = category
            };

            return(PartialView(viewModel));
        }
Esempio n. 16
0
        public PartialViewResult Menu(string category = null)
        {
            var categories = new NavViewModel
            {
                Categories = repository.Guitars
                             .Select(product => product.Category)
                             .Distinct()
                             .OrderBy(x => x),
                CurrentCategory = category
            };

            return(PartialView(categories));
        }
Esempio n. 17
0
        /// <summary>
        /// Render a breadcrumb navigation based on where the page is in the site structure.
        /// The other kind of breadcrumb is called TrackingBreadcrumb
        /// </summary>
        public ActionResult StructuralBreadcrumbWithAltTitle(string sectionCode, int currentPageID, string altTitle, List <NavItem> extraBreadcrumbs)
        {
            var data = new NavViewModel();

            data.SectionCode   = sectionCode;
            data.CurrentPageID = currentPageID;
            var breadPage = Page.LoadID(currentPageID);

            if (breadPage == null || breadPage.PageCode == "Home")
            {
                return(Content(""));
            }

            if (extraBreadcrumbs != null && extraBreadcrumbs.Count > 0)
            {
                // Make the last item from the page hierarchy clickable
                data.NavItems.Add(new NavItem {
                    Title = breadPage.GetNavTitle(), Url = breadPage.GetFullUrl(), PageCode = breadPage.PageCode
                });

                // Add the last extra bradcrumb as the non clickable item anb remove it from the list of clickable items
                ViewData["BreadcrumbCurrentPageTitle"] = extraBreadcrumbs.Last().Title;
                extraBreadcrumbs.Remove(extraBreadcrumbs.Last());
            }
            else
            {
                ViewData["BreadcrumbCurrentPageTitle"] = altTitle.IsNotBlank() ? altTitle : breadPage.GetNavTitle();
            }

            while (breadPage.ParentPageID != null)
            {
                breadPage = breadPage.ParentPage;
                data.NavItems.Add(new NavItem {
                    Title = breadPage.GetNavTitle(), Url = breadPage.GetFullUrl(), PageCode = breadPage.PageCode
                });
            }

            // Add Home
            data.NavItems.Add(new NavItem {
                Title = "Home", Url = Web.BaseUrl
            });

            data.NavItems.Reverse();            //todo make original loop do the reverse

            // Add extra breadcrumbs
            if (extraBreadcrumbs != null)
            {
                data.NavItems.AddRange(extraBreadcrumbs);
            }
            return(View("Breadcrumb", data));
        }
Esempio n. 18
0
 private void GetViewModel(NavViewModel model)
 {
     model.ParentItems = _navService.GetQuery(a => a.NavId.Length <= 6).ToList().Select(a => new ListItemEntity()
     {
         ID       = a.NavId,
         ParentID = a.ParentId,
         Title    = a.NavName,
         Selected = a.ParentId == model.ParentId
     }).ToList();
     model.ParentItems.Add(new ListItemEntity()
     {
         ID = "-1", ParentID = "", Title = "----根节点----"
     });
 }
Esempio n. 19
0
/*
 *              /// <summary>
 *              /// Render the primary naviation along the top
 *              /// </summary>
 *              /// <param name="sectionCode"></param>
 *              /// <param name="currentPageID"></param>
 *              /// <returns></returns>
 *              public ActionResult MainNav(string sectionCode, int currentPageID) {
 *                      var data = new NavViewModel();
 *                      data.SectionCode = sectionCode;
 *                      var sql = new Sql("where ShowInMainNav=1 and ParentPageID is null");
 *                      sql.AndIsActive<Page>();
 *                      sql.Paging(6);  // get first 6 only
 *                      data.NavItems = PageList.Load(sql);
 *                      data.CurrentPageID = currentPageID;
 *                      return View(data);
 *              }
 *
 *              /// <summary>
 *              /// Render the small nav in the corner at the very top
 *              /// </summary>
 *              /// <param name="sectionCode"></param>
 *              /// <param name="currentPageID"></param>
 *              /// <returns></returns>
 *              public ActionResult SecondaryNav(string sectionCode, int currentPageID) {
 *                      var data = new NavViewModel();
 *                      data.SectionCode = sectionCode;
 *                      data.CurrentPageID = currentPageID;
 *                      var sql = new Sql("where ShowInSecondaryNav=1");
 *                      sql.AndIsActive<Page>();
 *                      data.Pages = PageList.Load(sql);
 *                      return View(data);
 *              }
 *
 *              /* not used
 *              /// <summary>
 *              /// Render subnav (single level only)
 *              /// </summary>
 *              /// <param name="sectionCode"></param>
 *              /// <param name="currentPageID"></param>
 *              /// <returns></returns>
 *              public ActionResult SubNavSingleLevel(string sectionCode, int currentPageID) {
 *                      var data = new NavViewModel();
 *                      data.SectionCode = sectionCode;
 *                      data.CurrentPageID = currentPageID;
 *                      var currentTopPage = Models.Page.LoadByPageCode(sectionCode);
 *                      if (currentTopPage != null) {
 *                              data.Pages = currentTopPage.ChildPages.Active;
 *                      }
 *                      return View(data);
 *              }
 */

//		public ActionResult FooterNav(string sectionCode, int currentPageID) {
        public ActionResult FooterNav()
        {
            var data = new NavViewModel();

            data.SectionCode = "";             // irrelevant as not used
            var sql = new Sql("where ShowInFooterNav=1");

            sql.AndIsActive <Page>();
            var pages = PageList.Load(sql);

            foreach (var page in pages)
            {
                if (true)
                {
                    var item = new NavItem(page);
                    data.NavItems.Add(item);
                }
                else
                {
                    //all footers

                    var item = new NavItem {
                        PageID = page.ID, Title = page.GetNavTitle(), Url = page.GetFullUrl(), PageCode = page.PageCode, IsExternalUrl = page.LinkUrlIsExternal
                    };
                    //item.SubPages = GetChildren(page, null).FindAll(p => p.);
                    foreach (var childPage in page.ChildPages.Active)
                    {
                        if (childPage.ShowInFooterNav)
                        {
                            item.SubPages.Add(new NavItem(childPage));

                            if (childPage.ChildPages != null)
                            {
                                foreach (var subChildPage in childPage.ChildPages.Active)
                                {
                                    if (subChildPage.ShowInFooterNav)
                                    {
                                        item.SubPages.Add(new NavItem(subChildPage));
                                    }
                                }
                            }
                        }
                    }
                    data.NavItems.Add(item);
                }
            }
            return(View("FooterNav", data));
        }
Esempio n. 20
0
        public ActionResult Create(NavViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var entity = model.ToEntity();
                    _navService.Add(entity);
                }

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Esempio n. 21
0
        //
        // GET: /Navigation/

        /// <summary>
        /// Render primary navigation, including top level items and optionally also with first level of children underneath.
        /// This can be used for top navigation with dropdown menus.
        /// </summary>
        public ActionResult MainNav(string sectionCode, Page currentPage, bool includeChildren)
        {
            var data = new NavViewModel();

            sectionCode      = sectionCode + "";
            data.SectionCode = sectionCode;

            var sql = new Sql("where ShowInMainNav=1 and ParentPageID is null");

            sql.AndIsActive <Page>();
            //var pages = PageList.Load(sql);
            var pages = PageCache.MainNav;

            foreach (var page in pages)
            {
                var item = new NavItem(page);
                if (page.ID == currentPage.SectionPageID)
                {
                    item.IsSelected = true;
                    //} else if (page.PageCode.IsNotBlank() && page.PageCode.ToLower()==sectionCode.ToLower()) {
                    //	item.IsSelected = true;
                }
                if (page.LinkUrlIsExternal)
                {
                    item.IsExternalUrl = true;
                }
                if (includeChildren)
                {
                    item.SubPages = GetChildren(page, sectionCode);
                }
                data.NavItems.Add(item);
            }

            // set css classes
            int selectedItemIndex = data.NavItems.FindIndex(item => item.IsSelected);

            if (selectedItemIndex > -1)
            {
                data.NavItems[selectedItemIndex].CssClass = "active";
            }
            data.CurrentPageID = currentPage.ID;
            return(View(data));
        }
Esempio n. 22
0
    public IViewComponentResult Invoke()
    {
        NavViewModel        nav     = new NavViewModel();
        List <NavViewModel> navList = new List <NavViewModel>();

        var             items     = from n in _context.HSCTable select n;
        List <HSCTable> tableList = items.ToList <HSCTable>();


        for (int i = 0; i < tableList.Count(); i++)
        {
            nav.Id             = tableList[i].ID;
            nav.DepartmentName = tableList[i].DepartmentName;
            nav.sel            = tableList[i].sel;
            navList.Add(nav);
        }

        return(View("_SideNav", tableList));
    }
Esempio n. 23
0
        /// <summary>
        ///     如果当前页面为权限菜单,则返回父级菜单,否则返回当前菜单
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="NavViewModel"></param>
        /// <returns></returns>
        private static Menu NavParent(IHtmlHelper htmlHelper, NavViewModel NavViewModel)
        {
            var controllerName = Convert.ToString(htmlHelper.ViewContext.RouteData.Values["controller"]);
            var actionName     = Convert.ToString(htmlHelper.ViewContext.RouteData.Values["action"]);
            var areaName       = Convert.ToString(htmlHelper.ViewContext.RouteData.Values["area"]);

            var currMenu = NavViewModel.Menus.FirstOrDefault(a =>
                                                             string.Equals(a.ControllerName, controllerName, StringComparison.CurrentCultureIgnoreCase) &&
                                                             string.Equals(a.ActionName, actionName, StringComparison.CurrentCultureIgnoreCase));

            if (currMenu == null)
            {
                return(null);
            }
            if (currMenu.IsNav)
            {
                return(currMenu);
            }
            return(NavViewModel.Menus.FirstOrDefault(a => a.ID == currMenu.ParentID));
        }
Esempio n. 24
0
        public ActionResult SecondaryNav()
        {
            var data = new NavViewModel();

            data.SectionCode = "";             // irrelevant as not used
            var sql = new Sql("where ShowInSecondaryNav=1");

            sql.AndIsActive <Page>();
            var pages = PageList.Load(sql);

            foreach (var page in pages)
            {
                var item = new NavItem(page);
                data.NavItems.Add(item);
            }
            if (data.NavItems.Count > 0)
            {
                data.NavItems[0].CssClass = "first";
            }
            return(View("SecondaryNav", data));
        }
Esempio n. 25
0
        public ActionResult SubNav(string sectionCode, Models.Page page)
        {
            var data = new NavViewModel();
            //var sql = new Sql("where ParentPageID=", page.ID);

            var sql = new Sql();

            if (page.ParentPageID != null)
            {
                sql.Add("where ParentPageID=", page.ParentPageID.Value);
            }
            else
            {
                sql.Add("where ParentPageID=", page.ID);
            }

            sql.AndIsActive <Page>();
            var pages = PageList.Load(sql);

            foreach (var childPage in pages)
            {
                var item = new NavItem(childPage);
                if (childPage.ID == page.ID)
                {
                    item.IsSelected = true;
                }

                data.NavItems.Add(item);
            }

            int selectedItemIndex = data.NavItems.FindIndex(item => item.IsSelected);

            if (selectedItemIndex > -1)
            {
                data.NavItems[selectedItemIndex].CssClass = "active";
            }

            return(View(data));
        }
Esempio n. 26
0
        public PartialViewResult Nav()
        {
            var model = new NavViewModel();

            model.Ledgers = _db.Query(new GetAllLedgersQuery()).Where(l => l.IsActive).ToList();
            var action     = ControllerContext.ParentActionViewContext.RouteData.Values["action"]  as string ?? "Index";
            var controller = ControllerContext.ParentActionViewContext.RouteData.Values["controller"]  as string ?? "Home";

            if (action == "Unreconciled")
            {
                var id = (string)RouteData.Values["id"];
                model.SelectedNav = model.Ledgers.Single(l => l.Ledger.ToString() == id).LedgerDesc;
            }
            else if (controller == "Ledger" || controller == "Account" || controller == "Import")
            {
                model.SelectedNav = "Admin";
            }
            else
            {
                model.SelectedNav = action;
            }

            return(PartialView(model));
        }
        public async Task ItShouldReturnAnUnRedirectedSubViewofTheChallengePage()
        {
            var challengeResult = new ChallengeResult {
                Page = "<html><div>Challenge</div></<html>", RedirectUrl = null
            };
            var navResponse =
                new NavViewModel
            {
                Current = SupportServiceResourceKey.EmployerAccountTeam,
                Items   = new[]
                { new NavItem {
                      Href = "", Key = SupportServiceResourceKey.EmployerAccountTeam, Title = ""
                  } }
            };

            MockManifestRepository.Setup(x => x.SubmitChallenge(_resourceId, It.IsAny <Dictionary <string, string> >()))
            .Returns(Task.FromResult(challengeResult));


            MockManifestRepository.Setup(x => x.GetNav(_resourceKey, _resourceId)).Returns(Task.FromResult(navResponse));
            MockManifestRepository.Setup(x => x.GenerateHeader(_resourceKey, _resourceId))
            .Returns(Task.FromResult(new ResourceResultModel()));


            ActionResultResponse = await Unit.Challenge(_resourceKey, _challengeKey, _resourceId, _formCollection);


            Assert.IsInstanceOf <ViewResult>(ActionResultResponse);
            var viewResult = (ViewResult)ActionResultResponse;

            Assert.IsInstanceOf <NavViewModel>(viewResult.ViewBag.SubNav);
            Assert.IsInstanceOf <object>(viewResult.ViewBag.SubHeader);
            Assert.AreEqual("Sub", viewResult.ViewName);
            Assert.IsInstanceOf <ResourceResultModel>(viewResult.Model);
            Assert.AreEqual(challengeResult.Page, ((ResourceResultModel)viewResult.Model).Resource);
        }
Esempio n. 28
0
 public NavView()
 {
     InitializeComponent();
     BindingContext = new NavViewModel();
 }
Esempio n. 29
0
        public PartialViewResult Menu2(NavViewModel model, int CategoryId = 0)
        {
            model.Categories = repository.Categories.ToList();

            return(PartialView(model));
        }
        private void initialize()
        {
            if (vm == null)
            {
                vm          = SimpleIoc.Default.GetInstance <NavViewModel>();
                DataContext = vm;
                unlockSettingsControl.DataContext = vm;
                passwordModalControl.DataContext  = vm;
                busyModal.DataContext             = vm;
            }

            this.Visibility = Visibility.Visible;

            //check for gps offsett setting
            using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
            {
                var repo          = dp.SettingsRepository;
                var offsetSetting = repo.FindSingle(s => s.Key == TruckClientSettingKeys.GPS_OFFSET_FEET);

                if (offsetSetting == null)
                {
                    repo.UpsertSetting(TruckClientSettingKeys.GPS_OFFSET_FEET, "45");
                    GPSDataProvider.SetGpsOffsetFeet(45.0);
                }
                else
                {
                    GPSDataProvider.SetGpsOffsetFeet(double.Parse(offsetSetting.Value));
                }
            }

            if (!vm.HasCloudSettings)
            {
                MessageBox.Show("Data sync settings have not been configured.  Please configure then restart the application.");
                navTabControl.SelectedIndex = 2;
            }
            else
            {
                Task.Run(() =>
                {
                    try
                    {
                        try
                        {
                            if (!TagDataProvider.IsConnected)
                            {
                                Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                    IsBusy = true, Message = "Looking for RFID reader..."
                                });
                                //System.Threading.Thread.Sleep(35000);
                                int tryNumber = 1;

                                do
                                {
                                    //todo fix error hangs when no reader on rugged pc
                                    TagDataProvider.Connect();
                                    tryNumber++;
                                    System.Threading.Thread.Sleep(3000);
                                } while (tryNumber < 10 && !TagDataProvider.IsConnected);

                                //Messenger.Default.Send<BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Connecting to RFID reader..." });
                                //TagDataProvider.Connect();
                                //System.Threading.Thread.Sleep(1400);
                            }

                            if (!TagDataProvider.IsConnected)
                            {
                                Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                    IsBusy = true, Message = "Not connected to RFID Reader."
                                });
                                System.Threading.Thread.Sleep(1200);
                            }
                            else
                            {
                                TagDataProvider.Stop();
                                Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                    IsBusy = true, Message = "RFID Reader found."
                                });
                                TagDataProvider.SyncReaderTime();
                                System.Threading.Thread.Sleep(1200);
                            }
                        }
                        catch (Exception readerExc)
                        {
                            Logging.Logger.Log(readerExc);
                        }

                        Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                            IsBusy = true, Message = "Initializing shaft sensor..."
                        });
                        QuadratureEncoderDataProvider.StartEvents();
                        System.Threading.Thread.Sleep(1000);

                        if (!QuadratureEncoderDataProvider.IsStarted)
                        {
                            Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                IsBusy = true, Message = "Shaft Sensor not found."
                            });
                            System.Threading.Thread.Sleep(1200);
                        }

                        if (!GPSDataProvider.IsConnected)
                        {
                            Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                IsBusy = true, Message = "Connecting to GPS receiver..."
                            });

                            Task.Run(() =>
                            {
                                GPSDataProvider.Connect();
                            });

                            int waitCount = 0;
                            while (waitCount < 60 && !GPSDataProvider.IsConnected)
                            {
                                System.Threading.Thread.Sleep(500);
                                waitCount++;
                            }

                            if (GPSDataProvider.IsConnected)
                            {
                                Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                    IsBusy = true, Message = "GPS connected."
                                });
                                System.Threading.Thread.Sleep(1000);
                            }
                            else
                            {
                                Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                                    IsBusy = true, Message = "GPS not connected."
                                });
                                System.Threading.Thread.Sleep(2000);
                            }
                        }

                        Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage {
                            IsBusy = false, Message = ""
                        });

                        TagDataProvider.Initialize();
                        AggregateDataProvider.Initialize();
                        CottonDBMS.TruckApp.Tasks.TruckPullFromCloudTask.Init();
                        readerSettingsControl.Initialize();
                    }
                    catch (Exception exc)
                    {
                        CottonDBMS.Logging.Logger.Log(exc);
                    }
                });
            }

            navTabControl.Height = canvasLayout.ActualHeight;
            navTabControl.Width  = canvasLayout.ActualWidth;
            modalBG.Height       = canvasLayout.ActualHeight;
            modalBG.Width        = canvasLayout.ActualWidth;
        }