Пример #1
0
        public void SaveTimeEvents()
        {
            foreach (var item in FullTimeEventsList)
            {
                if (item.EventType?.Length > 0)
                {
                    var timeEvent = new TimeEventModel();
                    timeEvent.Id                = item.Id;
                    timeEvent.EventType         = item.EventType;
                    timeEvent.ArrivalTime       = item.ArrivalTime;
                    timeEvent.WaitTime          = item.WaitTime;
                    timeEvent.LocationId        = item.LocationId;
                    timeEvent.ServiceTemplateId = item.ServiceTemplateId;
                    timeEvent.Order             = item.Order;
                    if (item.Id > 0)
                    {
                        timeEvent.Id = item.Id;
                        TimeEventDataAccess.UpdateTimeEvent(timeEvent);
                    }
                    else
                    {
                        TimeEventDataAccess.InsertTimeEventForServiceTemplate(timeEvent);
                    }
                }
            }
            int duration = FullTimeEventsList.Sum(x => x.ArrivalTime + x.WaitTime);

            SelectedServiceTemplate.CalculatedDuration = duration;
            ServiceTemplateDataAccess.UpdateServiceCalculatedDuration(duration, SelectedServiceTemplate.Id);
            ServiceTemplateUI.ServiceTemplateList.Refresh();
            FullTimeEventsList = new BindableCollection <FullTimeEventModel>(FullTimeEventDataAccess.GetAllFullTimeEventsPerServiceTemplate(SelectedServiceTemplate.Id));
            Log.Trace($"Time events for service {SelectedServiceTemplate.ServiceTemplateAbbreviation} saved", LogEventType.Event);
        }
Пример #2
0
        public void SaveTimeEvent()
        {
            TimeEventModel newTimeEvent = new TimeEventModel();

            newTimeEvent.EventType         = TimeType;
            newTimeEvent.ArrivalTime       = ArrivalTime;
            newTimeEvent.WaitTime          = WaitTime;
            newTimeEvent.LocationId        = Location.Id;
            newTimeEvent.Order             = Order;
            newTimeEvent.ServiceTemplateId = ServiceId;
            if (TimeEventId <= 0)
            {
                TimeEventDataAccess.InsertTimeEventForServiceTemplate(newTimeEvent);
            }
            else
            {
                newTimeEvent.Id = TimeEventId;
                TimeEventDataAccess.UpdateTimeEvent(newTimeEvent);
            }

            var temp = FullTimeEventDataAccess.GetAllFullTimeEventsPerServiceTemplate(ServiceId)
                       .OrderBy(p => p.Order)
                       .ToList();

            TimeEvents.FilteredFullTimeEventList = new BindableCollection <FullTimeEventModel>(temp);
            UpdateCalculatedDuration();
            NotifyOfPropertyChange(() => TimeEvents);
            ClearTimeEvent();
        }
Пример #3
0
        protected override async void OnViewLoaded(object view)
        {
            base.OnViewLoaded(view);
            TimeEvents.SelectedRoute   = RouteDataAccess.GetRouteById(RouteId);
            TimeEvents.SelectedService = ServiceTemplateDataAccess.GetServiceTemplateById(ServiceId);
            TimeEvents.LocationList    = new BindableCollection <LocationModel>(LocationDataAccess.GetAllLocationsPerRoute(RouteId));
            var temp = FullTimeEventDataAccess.GetAllFullTimeEventsPerServiceTemplate(ServiceId)
                       .OrderBy(p => p.Order)
                       .ToList();

            TimeEvents.FilteredFullTimeEventList = new BindableCollection <FullTimeEventModel>(temp);
            TimeEventTypeList = TimeEventTypeDataAccess.GetAllTimeEventTypeStrings();
            NotifyOfPropertyChange(() => TimeEventTypeList);
            NotifyOfPropertyChange(() => TimeEvents);
        }
        private void PrepareDataSet()
        {
            TimeGraphUI = new BindableCollection <TimeGraphUIModel>();
            var serviceList = new BindableCollection <ServiceModel>(ServicesDataAccess.GetServicesPerTimetable(TimetableId));

            foreach (var service in serviceList)
            {
                var item = new TimeGraphUIModel();
                var serviceTemplateId = service.ServiceTemplateId;
                item.TimeEventList       = new BindableCollection <ExtendedFullTimeEventModel>(FullTimeEventDataAccess.GetAllExtendedFullTimeEventsPerServiceTemplate(serviceTemplateId));
                item.ServiceName         = service.ServiceName;
                item.ServiceAbbreviation = service.ServiceAbbreviation;
                int actualTime = service.StartTime;
                foreach (var fullTimeEvent in item.TimeEventList)
                {
                    actualTime += fullTimeEvent.ArrivalTime;
                    DataPoint point = GetFirstDataPoint(fullTimeEvent, actualTime);
                    item.DataLine.Add(point);
                    if (fullTimeEvent.WaitTime > 0)
                    {
                        actualTime += fullTimeEvent.WaitTime;
                        DataPoint point2 = GetSecondDataPoint(actualTime, point.X);
                        item.DataLine.Add(point2);
                    }
                }
                TimeGraphUI.Add(item);
            }
        }
        public static List <DepartureArrivalTimetableModel> GetDeparturesAndArrivals(int timetableId,
                                                                                     int locationId)
        {
            List <DepartureArrivalTimetableModel> output = new List <DepartureArrivalTimetableModel>();
            var serviceList = ServicesDataAccess.GetServicesPerTimetable(timetableId);

            foreach (var service in serviceList)
            {
                var departureArrival = new DepartureArrivalTimetableModel();
                departureArrival.ServiceName   = service.ServiceName;
                departureArrival.ServiceAbbrev = service.ServiceAbbreviation;
                departureArrival.ServiceId     = service.Id;
                departureArrival.StartTime     = service.StartTime;
                departureArrival.EndTime       = service.EndTime;
                var found            = false;
                var serviceDirection = ServiceDirectionDataAccess.GetServiceDirectionByServiceTemplateId(service.ServiceTemplateId);
                var timeEventList    =
                    FullTimeEventDataAccess.GetAllFullTimeEventsPerServiceTemplate(service.ServiceTemplateId);

                if (serviceDirection.IsDescending)
                {
                    timeEventList = timeEventList.OrderByDescending(x => x.LocationOrder).ToList();
                }
                else
                {
                    timeEventList = timeEventList.OrderBy(x => x.LocationOrder).ToList();
                }

                int arrivalTime   = departureArrival.StartTime;
                int departureTime = departureArrival.StartTime;
                foreach (var timeEvent in timeEventList)
                {
                    departureArrival.ArrivalTime   += timeEvent.ArrivalTime;
                    departureArrival.DepartureTime += timeEvent.ArrivalTime + timeEvent.WaitTime;
                    if (timeEvent.LocationId == locationId)
                    {
                        found = true;                         // need to filter, if the location is not included in the service, do not show it.
                        departureArrival.LocationName   = timeEvent.LocationName;
                        departureArrival.LocationAbbrev = timeEvent.LocationAbbreviation;
                        departureArrival.EventType      = timeEvent.EventType;
                        departureArrival.ArrivalTime    = arrivalTime;
                        departureArrival.DepartureTime  = departureTime;
                    }

                    if (timeEvent.EventType == "S")
                    {
                        departureArrival.OriginName   = timeEvent.LocationName;
                        departureArrival.OriginAbbrev = timeEvent.LocationAbbreviation;
                    }

                    if (timeEvent.EventType == "E")
                    {
                        departureArrival.DestinationName   = timeEvent.LocationName;
                        departureArrival.DestinationAbbrev = timeEvent.LocationAbbreviation;
                    }
                }

                if (found)
                {
                    output.Add(departureArrival);
                }
            }
            return(output);
        }
Пример #6
0
 public void LoadTimeEvents()
 {
     HasTimeEvents      = false;
     FullTimeEventsList = new BindableCollection <FullTimeEventModel>(FullTimeEventDataAccess.CreateTimeEventsPerServiceTemplate(SelectedServiceTemplate.Id));
     NotifyOfPropertyChange(() => FullTimeEventsList);
 }
Пример #7
0
 public void EditServiceTemplate()
 {
     ServiceTemplateName         = SelectedServiceTemplate.ServiceTemplateName;
     ServiceTemplateAbbreviation = SelectedServiceTemplate.ServiceTemplateAbbreviation;
     SelectedServiceClass        = ServiceClassDataAccess.GetServiceClassModelFromString(SelectedServiceTemplate.ServiceType, ServiceClassList);
     ServiceTemplateDescription  = SelectedServiceTemplate.ServiceTemplateDescription;
     CalculatedDuration          = SelectedServiceTemplate.CalculatedDuration;
     ServiceDirectionId          = SelectedServiceTemplate.ServiceDirectionId;
     SelectedServiceDirection    = ServiceDirectionDataAccess.GetServiceDirectionById(ServiceDirectionId);
     ServiceDirectionName        = SelectedServiceDirection.ServiceDirectionName;
     ServiceTemplateId           = SelectedServiceTemplate.Id;
     FullTimeEventsList          = new BindableCollection <FullTimeEventModel>(FullTimeEventDataAccess.GetAllFullTimeEventsPerServiceTemplate(SelectedServiceTemplate.Id));
     NotifyOfPropertyChange(() => CanLoadTimeEvents);
     NotifyOfPropertyChange(() => CanEditServiceTemplate);
     NotifyOfPropertyChange(() => CanDeleteServiceTemplate);
     NotifyOfPropertyChange(() => SelectedServiceClass);
 }
Пример #8
0
        private void PrepareDataSet()
        {
            TimeGraphUI      = new ObservableCollection <TimeGraphUIModel>();
            ServiceClassList = ServiceClassDataAccess.GetAllServiceClasses();
            var serviceList = new ObservableCollection <ServiceModel>(ServicesDataAccess.GetServicesPerTimetable(TimetableId));

            foreach (var service in serviceList)
            {
                var item = new TimeGraphUIModel();
                var serviceTemplateId = service.ServiceTemplateId;
                var serviceTemplate   = ServiceTemplateDataAccess.GetServiceTemplateById(serviceTemplateId);
                item.TimeEventList       = new BindableCollection <ExtendedFullTimeEventModel>(FullTimeEventDataAccess.GetAllExtendedFullTimeEventsPerServiceTemplate(serviceTemplateId));
                item.ServiceName         = service.ServiceName;
                item.ServiceAbbreviation = service.ServiceAbbreviation;
                item.ServiceType         = serviceTemplate.ServiceType;
                item.StartTimeText       = service.StartTimeText;
                item.EndTimeText         = service.EndTimeText;
                int actualTime = service.StartTime;
                foreach (var fullTimeEvent in item.TimeEventList)
                {
                    actualTime += fullTimeEvent.ArrivalTime;
                    fullTimeEvent.ArrivalTimeText = TimeConverters.MinutesToString(actualTime);
                    DataPoint point = GetFirstDataPoint(fullTimeEvent, actualTime);
                    item.DataLine.Add(point);
                    if (fullTimeEvent.WaitTime > 0)
                    {
                        actualTime += fullTimeEvent.WaitTime;
                        DataPoint point2 = GetSecondDataPoint(actualTime, point.X);
                        item.DataLine.Add(point2);
                    }
                    fullTimeEvent.DepartureTimeText = TimeConverters.MinutesToString(actualTime);
                }
                TimeGraphUI.Add(item);
            }
            OnPropertyChanged("TimeGraphUI");
        }