private void InsertAlert(AlertData alert, rt_alertRow existingAlert)
        {
            var newAlertRow = rt_alert.Newrt_alertRow();

            newAlertRow.file_time        = (int)alert.HeaderTimestamp;
            newAlertRow.alert_id         = alert.AlertId;
            newAlertRow.version_id       = existingAlert?.version_id + 1 ?? 1;
            newAlertRow.cause            = alert.Cause;
            newAlertRow.effect           = alert.Effect;
            newAlertRow.header_text      = alert.HeaderText;
            newAlertRow.description_text = alert.DescriptionText;
            newAlertRow.url             = alert.Url;
            newAlertRow.closed          = alert.Closed;
            newAlertRow.first_file_time = (int)alert.HeaderTimestamp;
            newAlertRow.last_file_time  = (int)alert.HeaderTimestamp;

            rt_alert.Rows.Add(newAlertRow);
            //Console.WriteLine("*Alert: " + newAlertRow.Alert);

            foreach (var activePeriod in alert.ActivePeriods)
            {
                var newActivePeriodRow = rt_alert_active_period.Newrt_alert_active_periodRow();

                newActivePeriodRow.version_id          = newAlertRow.version_id;
                newActivePeriodRow.active_period_start = (int)activePeriod.ActivePeriodStart;
                if (activePeriod.ActivePeriodEnd > 0)
                {
                    newActivePeriodRow.active_period_end = (int)activePeriod.ActivePeriodEnd;
                }
                newActivePeriodRow.alert_id = activePeriod.AlertId;

                rt_alert_active_period.Rows.Add(newActivePeriodRow);
                //Console.WriteLine(" *Active Period: " + newActivePeriodRow.ActivePeriod);
            }

            foreach (var informedEntity in alert.InformedEntities)
            {
                var newInformedEntityRow = rt_alert_informed_entity.Newrt_alert_informed_entityRow();

                newInformedEntityRow.version_id = newAlertRow.version_id;
                newInformedEntityRow.alert_id   = informedEntity.AlertId;
                newInformedEntityRow.agency_id  = informedEntity.AgencyId;
                if (!string.IsNullOrEmpty(informedEntity.RouteId))
                {
                    newInformedEntityRow.route_id = informedEntity.RouteId;
                }
                newInformedEntityRow.route_type = informedEntity.RouteType;
                if (!string.IsNullOrEmpty(informedEntity.TripId))
                {
                    newInformedEntityRow.trip_id = informedEntity.TripId;
                }
                if (!string.IsNullOrEmpty(informedEntity.StopId))
                {
                    newInformedEntityRow.stop_id = informedEntity.StopId;
                }

                rt_alert_informed_entity.Rows.Add(newInformedEntityRow);
                //Console.WriteLine(" *Informed Entity: " + newInformedEntityRow.InformedEntity);
            }
        }
        private void UpdateAlert(AlertData alert, rt_alertRow existingAlert)
        {
            existingAlert.file_time      = (int)alert.HeaderTimestamp;
            existingAlert.last_file_time = (int)alert.HeaderTimestamp;

            foreach (var activePeriod in alert.ActivePeriods)
            {
                var activePeriodRow = existingAlert.Getrt_alert_active_periodRows()
                                      .FirstOrDefault(x => x.active_period_start == (int)activePeriod.ActivePeriodStart);

                if (activePeriodRow == null)
                {
                    continue;
                }

                if (activePeriod.ActivePeriodEnd > 0)
                {
                    activePeriodRow.active_period_end = (int)activePeriod.ActivePeriodEnd;
                }
                else if (!activePeriodRow.Isactive_period_endNull())
                {
                    activePeriodRow.Setactive_period_endNull();
                }
            }
        }