Ejemplo n.º 1
0
        public async Task <AllProgramsSummaryData> GetAllProgramsSummaryCounts(List <Program> programs)
        {
            List <TelemetryRootObject> telemetryRootObjects = await this.GetTelemetryRootObjects(programs).ConfigureAwait(false);

            (List <View> views, List <ViewTelemetrySummary> summaries)viewData = await this.GetViewsAndSummaries(telemetryRootObjects).ConfigureAwait(false);

            (List <Event> events, List <EventTelemetrySummary> summaries)eventData = await this.GetEventsAndSummaries(telemetryRootObjects).ConfigureAwait(false);

            List <ClientAppUser> allUsers = GetClientAppUsers(viewData.summaries, eventData.summaries);

            IEnumerable <int>    programIds = telemetryRootObjects.Select(x => x.ProgramId);
            List <ExceptionInfo> exceptions =
                await this.telemetryContext.Exceptions.Where(ex => programIds.Contains(ex.ProgramId)).ToListAsync().ConfigureAwait(false);

            List <ExceptionInfo> recentExceptions = exceptions.Where(x => (DateTime.UtcNow - x.Timestamp).TotalDays <= 7).ToList();
            string mostPopularException           = recentExceptions.GroupBy(x => x.TypeName).OrderByDescending(x => x.Count()).FirstOrDefault()?.Key;

            AllProgramsSummaryData summary = new AllProgramsSummaryData
            {
                TotalProgramsCount   = programs.Count()
                , TotalAppUsersCount = allUsers.Count()
                , AppUsersRegisteredLast7DaysCount = allUsers.Count(x => (DateTime.UtcNow - x.FirstSeenDate).TotalDays <= 7)
                , TotalViewsCount                 = viewData.views.Count()
                , TotalViewsUsageCount            = viewData.summaries.Sum(x => x.SummaryCount)
                , TotalEventUsageCount            = eventData.summaries.Sum(x => x.SummaryCount)
                , TotalEventsCount                = eventData.events.Count()
                , TotalExceptionsInLast7Days      = recentExceptions.Count
                , MostPopularExceptionInLast7Days = mostPopularException
            };

            summary.NewestProgram = programs.OrderByDescending(x => x.Id) /*.Include(x=>x.Developer)*/.FirstOrDefault();

            return(summary);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets all programs summary counts.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>Task&lt;AllProgramsSummaryData&gt;.</returns>
        public async Task <AllProgramsSummaryData> GetAllProgramsSummaryCounts(IPrincipal user)
        {
            TelimenaUser   telimenaUser = this.unitOfWork.Users.FirstOrDefault(x => x.UserName == user.Identity.Name);
            List <Program> programs     = await this.unitOfWork.Programs.GetProgramsVisibleToUserAsync(telimenaUser, user).ConfigureAwait(false);

            AllProgramsSummaryData summary = await this.unitOfWork.GetAllProgramsSummaryCounts(programs).ConfigureAwait(false);

            return(summary);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets all programs summary counts.
        /// </summary>
        /// <returns>Task&lt;ActionResult&gt;.</returns>
        public async Task <ActionResult> GetSummaryCounts(Guid telemetryKey)
        {
            Program program = await this.Work.Programs.GetByTelemetryKey(telemetryKey).ConfigureAwait(false);

            if (program == null)
            {
                return(this.RedirectToAction("Index", "Home"));
            }

            AllProgramsSummaryData summary = await this.Work.GetAllProgramsSummaryCounts(new List <Program>() { program }).ConfigureAwait(false);

            return(this.PartialView("_AllProgramsSummaryBoxes", summary));
        }
Ejemplo n.º 4
0
        public async Task <AllProgramsSummaryData> GetAllProgramsSummaryCounts()
        {
            var summary = new AllProgramsSummaryData
            {
                TotalProgramsCount = await this.DbContext.Programs.CountAsync(),
                TotalAppUsersCount = await this.DbContext.AppUsers.CountAsync(),
                AppUsersRegisteredLast7DaysCount = await this.DbContext.AppUsers.CountAsync(x => DbFunctions.DiffDays(x.RegisteredDate, DateTime.UtcNow) <= 7),
                TotalFunctionsCount = await this.DbContext.Functions.CountAsync()
            };

            int?value = await this.DbContext.ProgramUsages.SumAsync(x => (int?)x.Count) ?? 0;

            summary.TotalProgramUsageCount = value ?? 0;
            value = await this.DbContext.FunctionUsages.SumAsync(x => (int?)x.Count) ?? 0;

            summary.TotalFunctionsUsageCount = value ?? 0;

            summary.NewestProgram = await this.DbContext.Programs.OrderByDescending(x => x.Id).Include(x => x.Developer).FirstOrDefaultAsync();

            return(summary);
        }
Ejemplo n.º 5
0
        public async Task <AllProgramsSummaryData> GetAllProgramsSummaryCounts(List <Program> programs)
        {
            try
            {
                DataSet set = await this.ExecuteStoredProcedure(StoredProcedureNames.p_GetProgramSummaryCounts
                                                                , this.GetProgramIdsParam(programs)).ConfigureAwait(false);

                if (set.Tables[0]?.Rows.Count < 1)
                {
                    return(new AllProgramsSummaryData());
                }
                DataRow dataRow = set.Tables[0].Rows[0];

                AllProgramsSummaryData summary = new AllProgramsSummaryData
                {
                    TotalProgramsCount   = programs.Count()
                    , TotalAppUsersCount = (int)(dataRow["UsersCount"] ?? 0)
                    , AppUsersRegisteredLast7DaysCount = (int)(dataRow["NewUsersCount"] ?? 0)
                    , ViewTypesCount                  = (int)(dataRow["ViewTypes"] ?? 0)
                    , TotalViewsUsageCount            = (int)(dataRow["ViewsTotal"] ?? 0)
                    , EventTypesCount                 = (int)(dataRow["EventTypes"] ?? 0)
                    , TotalEventUsageCount            = (int)(dataRow["EventsTotal"] ?? 0)
                    , TotalExceptionsInLast7Days      = (int)(dataRow["RecentExceptionsCount"] ?? 0)
                    , MostPopularExceptionInLast7Days = dataRow["MostPopularRecentException"] as string
                    , NewestProgram = programs.OrderByDescending(x => x.Id) /*.Include(x=>x.Developer)*/
                                      .FirstOrDefault()
                };
                return(summary);
            }
            catch (Exception ex)
            {
                return(new AllProgramsSummaryData()
                {
                    MostPopularExceptionInLast7Days = "Error while loading summary counts"
                });
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Gets all programs summary counts.
        /// </summary>
        /// <returns>Task&lt;ActionResult&gt;.</returns>
        public async Task <ActionResult> GetAllProgramsSummaryCounts()
        {
            AllProgramsSummaryData summary = await this.dashboardBase.GetAllProgramsSummaryCounts(this.User).ConfigureAwait(false);

            return(this.PartialView("_AllProgramsSummaryBoxes", summary));
        }