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); }
/// <summary> /// Gets all programs summary counts. /// </summary> /// <param name="user">The user.</param> /// <returns>Task<AllProgramsSummaryData>.</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); }
/// <summary> /// Gets all programs summary counts. /// </summary> /// <returns>Task<ActionResult>.</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)); }
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); }
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" }); } }
/// <summary> /// Gets all programs summary counts. /// </summary> /// <returns>Task<ActionResult>.</returns> public async Task <ActionResult> GetAllProgramsSummaryCounts() { AllProgramsSummaryData summary = await this.dashboardBase.GetAllProgramsSummaryCounts(this.User).ConfigureAwait(false); return(this.PartialView("_AllProgramsSummaryBoxes", summary)); }