コード例 #1
0
        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);
        }
コード例 #2
0
        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()
            }));
        }