public static TrainReinstatement MapFromBody(dynamic body)
        {
            TrainReinstatement tr = new TrainReinstatement();
            tr.Stanox = (string)body.loc_stanox;
            tr.NewDepartureTime = UnixTsToDateTime((string)body.dep_timestamp).Value;
            tr.ReinstatementTime = UnixTsToDateTime((string)body.reinstatement_timestamp);

            return tr;
        }
        private bool AddReinstatement(TrainReinstatement tr)
        {
            Activation trainId = null;
            if (TrainExists(tr.TrainId, out trainId))
            {
                TiplocCode tiploc = _tiplocRepository.GetTiplocByStanox(tr.Stanox);
                if (tiploc != null)
                {
                    Trace.TraceInformation("Saving Reinstatement of: {0} @ {1}", tr.TrainId, tr.Stanox);

                    const string insertStop = @"
                        INSERT INTO [LiveTrainReinstatement]
                           ([TrainId]
                           ,[PlannedDepartureTime]
                           ,[ReinstatedTiplocId]
                           ,[ReinstatementTime])
                        VALUES
                           (@trainId
                           ,@plannedDepartureTime
                           ,@reinstatedTiplocId
                           ,@reinstatementTime)";

                    ExecuteNonQuery(insertStop, new
                    {
                        trainId = trainId.DbId,
                        plannedDepartureTime = tr.NewDepartureTime,
                        reinstatedTiplocId = tiploc.TiplocId,
                        reinstatementTime = tr.ReinstatementTime
                    });
                }
            }
            return false;
        }