public async Task UpdateEndpoint(int id, [FromBody] EndpointDto endpointDto) { var endpoint = await _store.GetByEndpointIdAsync(id); if (!string.IsNullOrEmpty(endpointDto.Name)) { endpoint.Name = endpointDto.Name; } if (!string.IsNullOrEmpty(endpointDto.Tags)) { endpoint.Tags = endpointDto.Tags; } if (!string.IsNullOrEmpty(endpointDto.Url)) { endpoint.Url = endpointDto.Url; } endpoint.CheckInterval = endpointDto.CheckInterval; endpoint.CheckType = (CheckType)endpointDto.CheckType; endpoint.IsActive = endpointDto.IsActive; endpoint.IsCritical = endpointDto.IsCritical; endpoint.PublishStats = endpointDto.PublishStats; await _store.UpdateEndpointAsync(endpoint); }
public async Task <ActionResult> EndpointStats(int?id, int?page, string start = "", string end = "") { id ??= 1; var pageNumber = page ?? 1; var pageSize = 15; var endpoint = await _store.GetByEndpointIdAsync(id.Value); var pagedStats = await endpoint.Stats.Select(x => x.ToDto()) .OrderByDescending(x => x.TimeStamp) .ToPagedListAsync(pageNumber, pageSize); var lastStat = endpoint.Stats.LastOrDefault(); var responseTimes = new List <long[]>(); var uptimes = new List <long[]>(); foreach (var stat in endpoint.Stats) { var unixTimestamp = ((DateTimeOffset)stat.TimeStamp).ToUnixTimeMilliseconds(); responseTimes.Add(new[] { unixTimestamp, stat.ResponseTime }); uptimes.Add(stat.IsHealthy ? new[] { unixTimestamp, 1 } : new[] { unixTimestamp, 0 }); } var responseTimeData = JsonConvert.SerializeObject(responseTimes); var uptimeData = JsonConvert.SerializeObject(uptimes); return(View(new EndpointDetailsViewModel() { Stats = pagedStats, Endpoint = endpoint.ToDto(), ResponseTimeData = responseTimeData, UptimeData = uptimeData, LastStat = lastStat.ToDto() })); }