public DestinationRowViewModel(DarwinService service) : this()
 {
     this.Headcode = service.Rsid;
     this.Platform = service.Platform;
     this.ScheduledDepartureTime = service.ScheduledDepartureTime;
     this.DepartureTime          = service.EstimeatedDepartureTime;
     this.PointName      = buildDestination(service.CurrentDestinations, service.Destination);
     this.ServiceMessage = Util.StringArrayToLines(service.AdhocAlerts);
     this.minutesLate    = Util.CalculateDelayMinutes(service.ScheduledDepartureTime, service.EstimeatedDepartureTime);
     this.Cancelled      = service.IsCancelled;
     if (Cancelled)
     {
         if (!string.IsNullOrEmpty(ServiceMessage))
         {
             ServiceMessage += Environment.NewLine;
         }
         this.ServiceMessage += "Cancelled: " + service.CancelReason;
     }
     else if (!string.IsNullOrEmpty(service.DelayReason))
     {
         if (!string.IsNullOrEmpty(ServiceMessage))
         {
             ServiceMessage += Environment.NewLine;
         }
         this.ServiceMessage += "Delayed: " + service.DelayReason;
     }
     foreach (DarwinCallingPoint cp in service.SubsequentCallingPoints)
     {
         this.CallingPoints.Add(new CallingPointViewModel(cp.LocationName, cp.EstimatedTime, cp.ScheduledTime));
     }
 }
        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);
        }
 public DestinationRowViewModel(DarwinService service)
     : this()
 {
     this.Headcode = service.Rsid;
     this.Platform = service.Platform;
     this.ScheduledDepartureTime = service.ScheduledDepartureTime;
     this.DepartureTime = service.EstimeatedDepartureTime;
     this.PointName = buildDestination(service.CurrentDestinations,service.Destination);
     this.ServiceMessage = Util.StringArrayToLines(service.AdhocAlerts);
     this.minutesLate = Util.CalculateDelayMinutes(service.ScheduledDepartureTime, service.EstimeatedDepartureTime);
     this.Cancelled = service.IsCancelled;
     if (Cancelled)
     {
         if (!string.IsNullOrEmpty(ServiceMessage))
             ServiceMessage += Environment.NewLine;
         this.ServiceMessage += "Cancelled: " + service.CancelReason;
     }
     else if(!string.IsNullOrEmpty(service.DelayReason))
     {
         if (!string.IsNullOrEmpty(ServiceMessage))
             ServiceMessage += Environment.NewLine;
         this.ServiceMessage += "Delayed: " + service.DelayReason;
     }
     foreach (DarwinCallingPoint cp in service.SubsequentCallingPoints)
     {
         this.CallingPoints.Add(new CallingPointViewModel(cp.LocationName, cp.EstimatedTime, cp.ScheduledTime));
     }
 }
        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);
        }
        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;
        }