Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
        /// <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);
                    }
                }
            }
        }