protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    var datedStatusRecords = _statusRepository
                                             .GetLatestStatusRecordForEachLocation()
                                             .Where(x => x.LastStatusUpdateTime < DateTime.Now.AddHours(-2))
                                             .ToList();

                    foreach (var datedStatusRecord in datedStatusRecords)
                    {
                        if (datedStatusRecord.Status != Offline)
                        {
                            _statusRepository.AddStatusRecord(new StatusMonitorReply
                            {
                                Status               = Offline,
                                MonitorName          = datedStatusRecord.MonitorName,
                                DisplayName          = datedStatusRecord.DisplayName,
                                LocationId           = datedStatusRecord.LocationId,
                                LastStatusUpdateTime = DateTime.Now,
                                StatusStartTime      = DateTime.Now
                            });
                        }

                        _statusRepository.Update(datedStatusRecord.LocationId, datedStatusRecord.MonitorName, datedStatusRecord.DisplayName, DateTime.Now);
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex.Message);
                }
                finally
                {
                    await Task.Delay(1000 * 60 * 15, stoppingToken); // 15 minutes
                }
            }
        }