public StatusPage() { InitializeComponent(); _vm = DataContext as StatusPageViewModel; NavigationCacheMode = NavigationCacheMode.Enabled; _vm.AvatarChanged = OnAvatarChanged; }
public async Task <IActionResult> Status(string slug) { try { var campaign = await _apiService.Client.ApiLeadGenerationGetCampaignGetAsync(null, slug); var leadId = HttpContext.Session.GetInt32(campaign.Id + "-LeadId"); var lead = await _apiService.Client.ApiLeadGenerationGetLeadGetAsync(leadId); var model = new StatusPageViewModel() { Campaign = campaign, CampaignLead = lead }; return(View(model)); } catch (SwaggerException <ErrorResponse> ex) { AlertDanger(ex.Result.Message); return(RedirectToAction("Index", new { slug = slug })); } catch (Exception ex) { AlertDanger(ex.Message); return(RedirectToAction("Index", new { slug = slug })); } }
public StatusPage(World selectedWorld) { InitializeComponent(); BindingContext = new StatusPageViewModel(selectedWorld); Children.Add(new SpawnablePage(selectedWorld)); Children.Add(new RecentPage(selectedWorld)); Children.Add(new UpcomingPage(selectedWorld)); }
public async Task <IActionResult> Index() { if (!_db.Settings.Any(x => x.Id == "Setup")) { return(View("Setup")); } var monthAgo = DateTime.UtcNow.AddDays(-30); var twoMonthsAgo = DateTime.UtcNow.AddDays(-60); var dayAgo = DateTime.UtcNow.AddDays(-1); var statusMessages = await _db.Incidents.Include(x => x.Messages).Include(x => x.Site).Where(x => x.Start > monthAgo).OrderByDescending(x => x.Start).ToListAsync(); var pings = (await _db.Pings.Where(x => x.PingSetting.Visible && x.DateTime > dayAgo).ToListAsync()).GroupBy(x => x.PingSetting); var today = DateTime.Today; var dates = Enumerable.Range(1, 60).Select(x => today.AddDays(-x)).ToArray(); // TODO: Rewrite to include all incidents every day var sql = $@" SELECT CAST([Start] AS DATE) Date, DATEDIFF(SECOND, MIN([End]), MIN([Start])) Duration, COUNT(*) [Count] FROM Incidents WHERE CAST([Start] AS DATE) > N'{twoMonthsAgo:O}' GROUP BY CAST([Start] AS DATE)"; var incidentsPerDay = _db.Database.SqlQuery <IncidentDailySummary>(sql).ToList(); var pingSummaries = _db.Database.SqlQuery <PingSummary>($@"SELECT SUM(IIF(ResponseTime > 300, 1, 0)) [HighPingCount], COUNT(*) [Count], CAST([DateTime] AS DATE) [Date] FROM Pings WHERE CAST([DateTime] AS DATE) > N'{twoMonthsAgo:O}' GROUP BY CAST([DateTime] AS DATE);").ToList(); var summaries = dates.Select(x => new DailyStatusSummary() { Date = x, DownTimePercentage = incidentsPerDay.FirstOrDefault(y => y.Date == x)?.Duration ?? 0 / 86400, HighPingPercentage = (pingSummaries.FirstOrDefault(y => y.Date == x)?.HighPingCount / pingSummaries.FirstOrDefault(y => y.Date == x)?.Count) ?? 0 }).OrderBy(x => x.Date).ToList(); var viewModel = new StatusPageViewModel() { Incidents = statusMessages, Pings = pings, DailyStatusSummaries = summaries }; return(View(viewModel)); }
public StatusPage() { this.InitializeComponent(); _vm = DataContext as StatusPageViewModel; NavigationCacheMode = NavigationCacheMode.Enabled; }
public StatusPage() { InitializeComponent(); this.BindingContext = _vm = new StatusPageViewModel(); }