/// <summary> /// Obtiene las alertas actuales del servicio y persiste en BD las que no existan para el día de hoy /// </summary> /// <returns></returns> public async Task <Domain.Dtos.ServiceAlert> GetServiceAlerts() { try { SubwayApiResponse <ServiceAlertsHeader, Integration.Entities.ServiceAlert> response = await this._subwayApi.GetServiceAlerts(_clientId, _clientSecret); Domain.Dtos.ServiceAlert serviceAlertResponse = _mapper.Map <Domain.Dtos.ServiceAlert>(response); await PersistServiceAlerts(serviceAlertResponse); return(serviceAlertResponse); } catch (System.Exception ex) { throw; } }
/// <summary> /// Guarda las alertas en la base de datos /// </summary> /// <param name="serviceAlertResponse"></param> /// <returns></returns> private async Task PersistServiceAlerts(Domain.Dtos.ServiceAlert serviceAlertResponse) { if (serviceAlertResponse != null && serviceAlertResponse.Alerts != null && serviceAlertResponse.Alerts.Any()) { foreach (var serviceAlert in serviceAlertResponse.Alerts) { // Se trae las alertas para la linea que se esta iterando, con el mismo texto en el día de hoy var filteredAlerts = this._alertRepository.GetFiltered(alert => alert.RouteId == serviceAlert.RouteId && alert.DescriptionText == serviceAlert.DescriptionText && alert.AlertDate.Date == DateTime.Now.Date); // Si no hay alertas que cumplan esas condiciones, la misma es una nueva alerta y se inserta if (!filteredAlerts.Any()) { Repository.Entities.Alert entity = _mapper.Map <Repository.Entities.Alert>(serviceAlert); entity.AlertDate = DateTime.Now; await _alertRepository.AddAsync(entity); } } } }