public async Task <ActionResult <DashboardInformation> > GetDashboard()
        {
            var profile = (ViewApplicationUser)User;

            if (!profile.IsAdmin)
            {
                return(BadRequest());
            }

            var dashboardInfo = new DashboardInformation
            {
                NbVisits              = await _eventTrackingService.Count(e => e.Category == "Navigation" && e.Key == "HomePage"),
                NbRegistar            = await _eventTrackingService.Count(e => e.Category == "Register" && e.Key == "Finished"),
                NbLogin               = await _eventTrackingService.Count(e => e.Category == "Login"),
                NbRequestSubscription = await _eventTrackingService.Count(e => e.Category == "Subscription" && e.Key.StartsWith("started")),
                NbFinishSubscription  = await _eventTrackingService.Count(e => e.Category == "Subscription" && e.Key == "Success"),
                NbAds = await functionalUnitOfWork.AdRepository.CountVisibled()
            };

            var viewFromSocialNetworks = (await _eventTrackingService.Where(c => EF.Functions.Like(c.Category, "%FromSocial%"))).ToList();

            var socialNetworks = functionalUnitOfWork.SocialNetworkRepository.GetNetworks();

            foreach (var socialNetwork in socialNetworks)
            {
                var name = socialNetwork.Name.ToLower();

                if (viewFromSocialNetworks.Any(e => e.Key.EndsWith(name)))
                {
                    CommingFromSocialNetwork commingFromSocialNetwork = new CommingFromSocialNetwork
                    {
                        Name  = name,
                        Value = viewFromSocialNetworks.Count(e => e.Key.EndsWith(name))
                    };

                    dashboardInfo.CommingFromSocialNetworks.Add(commingFromSocialNetwork);
                }
            }

            List <StatisticsDay> StatisticsDays = new List <StatisticsDay>();

            var startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            var endDate   = startDate.AddMonths(1).AddDays(-1);

            var date = startDate;

            while (date < endDate)
            {
                var statisticDay = await ComputeDay(date);

                dashboardInfo.StatisticsDays.Add(statisticDay);
                date = date.AddDays(1);
            }

            return(Ok(dashboardInfo));
        }
        public void Save(string widgetName, string[] hierarchyNamePath, bool isCreateDashboard, string dashboardName)
        {
            WidgetNameTextbox.Fill(widgetName);
            TimeManager.MediumPause();
            if (hierarchyNamePath != null)
            {
                WidgetSaveHierarchy.Click();
                TimeManager.MediumPause();
                WidgetSaveHierarchyTree.SelectNode(hierarchyNamePath);
                TimeManager.MediumPause();
            }
            TimeManager.LongPause();
            if (isCreateDashboard)
            {
                CreateDashboardButton.Click();
                TimeManager.MediumPause();
                DashboardNameTextbox.Fill(dashboardName);
                TimeManager.MediumPause();
            }
            else
            {
                DashboardComboBox.SelectItem(dashboardName);
            }

            base.Confirm();

            //store the dashboards infos prepare to delete when complete running.
            DashboardInformation CaseDownDashboardInfo = new DashboardInformation();

            CaseDownDashboardInfo.DashboardName     = dashboardName;
            CaseDownDashboardInfo.IsCreateDashboard = isCreateDashboard;
            CaseDownDashboardInfo.WigetName         = widgetName;
            CaseDownDashboardInfo.HierarchyName     = hierarchyNamePath;

            TestAssemblyInitializer.CaseDownDashboardInfos.Add(CaseDownDashboardInfo);
        }