public async Task NotifyAsync()
        {
            try {
                var allMonitors = await _monitorRepository.GetAllAsync();

                var allMonitorIds = allMonitors.Where(x => !x.MonitorDetails.IsDown).Select(x => x.Id);

                var allCheckIns = await _checkInRepository.GetAllAsync();

                var checkInedMonitorIds = allCheckIns.Select(x => x.MonitorId);

                var noCheckinsFor = allMonitorIds.Except(checkInedMonitorIds);

                foreach (var monitorId in noCheckinsFor)
                {
                    var problematicMonitor = allMonitors.Where(x => x.Id.Equals(monitorId)).First();

                    if (problematicMonitor != null)
                    {
                        problematicMonitor.MonitorDetails.IsDown = true;

                        await _monitorRepository.CreateAsync(problematicMonitor);

                        await _emailService.SendEmailAsync(problematicMonitor.MonitorDetails.Subscribers, "Cant find check in for process", "Looks like your process goes off");
                    }
                }
            } catch (Exception ex) {
                _logger.LogError($"Something went wrong inside MonitorStatusNotifyer: {ex.Message}");
            }
        }
Beispiel #2
0
 public async Task <IEnumerable <Entities.CheckIn> > GetAllCheckInAsync()
 {
     return(await _checkInRepository.GetAllAsync());
 }