private static DarwinService createSingleRailService(ServiceItemWithCallingPoints serviceFromWeb)
        {
            DateTime? sta = null;
            if(!string.IsNullOrEmpty(serviceFromWeb.sta))
                sta = DateTime.Parse(serviceFromWeb.sta);
            DateTime? eta = ParseEstimatedDateTime(serviceFromWeb.eta, sta);
            DateTime? std = null;
            if (!string.IsNullOrEmpty(serviceFromWeb.std))
                std = DateTime.Parse(serviceFromWeb.std);
            DateTime? etd = ParseEstimatedDateTime(serviceFromWeb.etd, std);

            DarwinService result = new DarwinService(
                serviceFromWeb.rsid, sta, eta, std, etd, serviceFromWeb.platform,
                serviceFromWeb.@operator, serviceFromWeb.operatorCode, serviceFromWeb.isCircularRoute, serviceFromWeb.isCancelled,
                serviceFromWeb.filterLocationCancelled, (DarwinServiceType)(int)serviceFromWeb.serviceType, serviceFromWeb.length,
                serviceFromWeb.detachFront, serviceFromWeb.isReverseFormation
                , serviceFromWeb.delayReason, serviceFromWeb.cancelReason, serviceFromWeb.serviceID, serviceFromWeb.adhocAlerts
                );

            result.CurrentDestinations = createDarwinServiceLocationArray(serviceFromWeb.currentDestinations).ToArray();
            result.CurrentOrigins = createDarwinServiceLocationArray(serviceFromWeb.currentOrigins).ToArray();
            result.Destination = createDarwinServiceLocationArray(serviceFromWeb.destination).ToArray();
            result.Origin = createDarwinServiceLocationArray(serviceFromWeb.origin).ToArray();
            result.PreviousCallingPoints = createCallingPointList(serviceFromWeb.previousCallingPoints);
            result.SubsequentCallingPoints = createCallingPointList(serviceFromWeb.subsequentCallingPoints);
            return result;
        }
        private static DarwinService createSingleRailService(ServiceItemWithCallingPoints serviceFromWeb)
        {
            DateTime?sta = null;

            if (!string.IsNullOrEmpty(serviceFromWeb.sta))
            {
                sta = DateTime.Parse(serviceFromWeb.sta);
            }
            DateTime?eta = ParseEstimatedDateTime(serviceFromWeb.eta, sta);
            DateTime?std = null;

            if (!string.IsNullOrEmpty(serviceFromWeb.std))
            {
                std = DateTime.Parse(serviceFromWeb.std);
            }
            DateTime?etd = ParseEstimatedDateTime(serviceFromWeb.etd, std);

            DarwinService result = new DarwinService(
                /*serviceFromWeb.rsid -- this seems to have disappeared from the webservice?*/ string.Empty, sta, eta, std, etd, serviceFromWeb.platform,
                serviceFromWeb.@operator, serviceFromWeb.operatorCode, serviceFromWeb.isCircularRoute, serviceFromWeb.isCancelled,
                serviceFromWeb.filterLocationCancelled, (DarwinServiceType)(int)serviceFromWeb.serviceType, serviceFromWeb.length,
                serviceFromWeb.detachFront, serviceFromWeb.isReverseFormation
                , serviceFromWeb.delayReason, serviceFromWeb.cancelReason, serviceFromWeb.serviceID, serviceFromWeb.adhocAlerts
                );

            result.CurrentDestinations = createDarwinServiceLocationArray(serviceFromWeb.currentDestinations).ToArray();
            result.CurrentOrigins      = createDarwinServiceLocationArray(serviceFromWeb.currentOrigins).ToArray();
            result.Destination         = createDarwinServiceLocationArray(serviceFromWeb.destination).ToArray();
            result.Origin = createDarwinServiceLocationArray(serviceFromWeb.origin).ToArray();
            result.PreviousCallingPoints   = createCallingPointList(serviceFromWeb.previousCallingPoints);
            result.SubsequentCallingPoints = createCallingPointList(serviceFromWeb.subsequentCallingPoints);
            return(result);
        }
 private static List<DarwinService> createRailServices(ServiceItemWithCallingPoints[] serviceItemWithCallingPoints)
 {
     List<DarwinService> services = new List<DarwinService>();
     foreach (ServiceItemWithCallingPoints serviceFromWeb in serviceItemWithCallingPoints)
     {
         DarwinService toAdd = createSingleRailService(serviceFromWeb);
         services.Add(toAdd);
     }
     return services;
 }