Exemplo n.º 1
0
        /// <summary>
        /// The ButtonSave_Click method.
        /// </summary>
        /// <param name="sender">The <paramref name="sender"/> parameter.</param>
        /// <param name="args">The <paramref name="args"/> parameter.</param>
        private void ButtonSave_Click(object sender, EventArgs args)
        {
            var linkList   = new List <DataSource>();
            var unlinkList = new List <DataSource>();

            foreach (ListViewItem item in lvScheduleSources.Items)
            {
                var dataSource = (DataSource)item.Tag;

                if (item.Checked)
                {
                    if (!CurrentSourceList.Any(s => dataSource.Id.Contains(s)))
                    {
                        linkList.Add(dataSource);
                    }
                }
                else
                {
                    if (CurrentSourceList.Any(s => dataSource.Id.Contains(s)))
                    {
                        unlinkList.Add(dataSource);
                    }
                }
            }

            if (linkList.Count > 0)
            {
                SelectedSchedule.Link(linkList);
            }

            if (unlinkList.Count > 0)
            {
                SelectedSchedule.Unlink(unlinkList);
            }
        }
 private void OnCancel()
 {
     if (AddMode)
     {
         ScheduleCollection.Remove(SelectedSchedule);
         SelectedSchedule = null;
         AddMode          = false;
     }
     else if (EditMode)
     {
         SelectedSchedule.CancelEdit();
         EditMode = false;
     }
     else if (RemoveMode)
     {
         foreach (var item in ScheduleCollection)
         {
             if (item.IsChecked)
             {
                 item.IsChecked = false;
             }
         }
         RemoveMode = false;
     }
     CanUseDatagrid = true;
     CanEditFields  = false;
 }
 private void OnEdit()
 {
     EditMode       = true;
     CanEditFields  = true;
     CanUseDatagrid = false;
     SelectedSchedule.BeginEdit();
 }
Exemplo n.º 4
0
        public async Task LoadSelectedSchedule()
        {
            IsBusy = true;
            if (SelectedDayGroup != null)
            {
                if (!SelectedDayGroup.ScheduleLoaded)
                {
                    SelectedDayGroup.Schedule.Clear();
                    if (SelectedDayGroup.DayGroup != ServiceDay.None)
                    {
                        var sched = await LoadRouteNames(Schedule.GetSchedule(SelectedDayGroup.DayGroup));

                        bool military = SettingsManagerBase.Instance?.GetSetting("MilitaryTime", false, false) ?? false;
                        SelectedDayGroup.Schedule.AddRange(sched.GroupBy(a => $"{a.Item2} to {a.Item1.Destination}").Select(g => new RouteScheduleGroup()
                        {
                            RouteAndDestination = g.Key, Times = g.Select(t => new Tuple <string, bool>(GetDisplayTimeForArrival(t.Item1, military), military ? false : (t.Item1.ScheduledDepartureTime.Hour >= 12)))
                        }));
                        SelectedDayGroup.ScheduleLoaded = true;
                    }
                }
                SelectedSchedule.ReplaceRange(SelectedDayGroup.Schedule);
            }
            else
            {
                SelectedSchedule.Clear();
            }
            IsBusy = false;
        }
Exemplo n.º 5
0
        /// <summary>
        /// The PopulateDataSources method.
        /// </summary>
        private void PopulateDataSources()
        {
            CurrentSourceList = new List <string>();
            foreach (var dataSource in SelectedSchedule.GetLinks())
            {
                CurrentSourceList.Add(dataSource.Id);
            }

            // Clone each item in the MainForm ListView and add it to lvDataSources.
            foreach (var dataSource in MainForm.CurrentDataSources)
            {
                var lvItem = new ListViewItem(string.Empty);
                lvItem.SubItems.Add(dataSource.Number.ToString());
                lvItem.SubItems.Add(dataSource.Name);
                lvItem.Tag = dataSource;
                if (CurrentSourceList.Any(s => dataSource.Id.Contains(s)))
                {
                    lvItem.Checked = true;
                }

                lvScheduleSources.Items.Add(lvItem);
            }
        }
        private async void OnSave()
        {
            if (AddMode)
            {
                var    schedule = Converter.ConvertFromScheduleModel(SelectedSchedule);
                int    id       = 0;
                bool   success  = true;
                string error    = "";
                OnInformationRequested("Loading...");
                await Task.Run(() =>
                {
                    try
                    {
                        using (Repository <Schedule> repo = new Repository <Schedule>())
                        {
                            var result = repo.InsertWithResult(schedule);
                            if (result.Status.Success)
                            {
                                id = result.Data.ID;
                            }
                            else
                            {
                                success = false;
                                error   = result.Status.ErrorMessage;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        error   = $"An error occured.Message: {ex.Message}";
                    }
                });

                if (success)
                {
                    SelectedSchedule.Id = id;
                    OnInformationRequested("Data added successfully, refreshing service in the background...");
                    await Task.Run(() =>
                    {
                        var result = Controller.RefreshService();
                        if (!result.Success)
                        {
                            success = false;
                            error   = result.ErrorMessage;
                        }
                    });

                    if (success)
                    {
                        OnInformationRequested("Service refreshed successfully");
                    }
                    else
                    {
                        OnErrorOccured(error);
                    }
                }
                else
                {
                    ScheduleCollection.Remove(SelectedSchedule);
                    SelectedSchedule = null;
                    OnErrorOccured(error);
                }
                AddMode = false;
            }
            else if (EditMode)
            {
                var schedule = Converter.ConvertFromScheduleModel(SelectedSchedule);

                bool   success = true;
                string error   = "";
                OnInformationRequested("Loading...");
                await Task.Run(() =>
                {
                    try
                    {
                        using (Repository <Schedule> repo = new Repository <Schedule>())
                        {
                            var result = repo.Update(schedule);
                            if (!result.Success)
                            {
                                success = false;
                                error   = result.ErrorMessage;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        error   = $"An error occured.Message: {ex.Message}";
                    }
                });

                if (success)
                {
                    SelectedSchedule.EndEdit();
                    OnInformationRequested("Data updated successfully, refreshing service in the background...");
                    await Task.Run(() =>
                    {
                        var result = Controller.RefreshService();
                        if (!result.Success)
                        {
                            success = false;
                            error   = result.ErrorMessage;
                        }
                    });

                    if (success)
                    {
                        OnInformationRequested("Service refreshed successfully");
                    }
                    else
                    {
                        OnErrorOccured(error);
                    }
                }
                else
                {
                    SelectedSchedule.CancelEdit();
                    OnErrorOccured(error);
                }
                EditMode = false;
            }
            else if (RemoveMode)
            {
                var temp = from item in ScheduleCollection
                           where item.IsChecked
                           select item;
                var    schedulesToRemove = temp.Select(x => Converter.ConvertFromScheduleModel(x));
                bool   success           = true;
                string error             = "";
                OnInformationRequested("Loading...");
                await Task.Run(() =>
                {
                    try
                    {
                        using (Repository <Schedule> repo = new Repository <Schedule>())
                        {
                            var result = repo.Delete(schedulesToRemove);
                            if (!result.Success)
                            {
                                success = false;
                                error   = result.ErrorMessage;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        success = false;
                        error   = $"An error occured.Message: {ex.Message}";
                    }
                });

                if (success)
                {
                    //to avoid Invalid Operation Exception
                    for (int i = 0; i < ScheduleCollection.Count; i++)
                    {
                        if (ScheduleCollection[i].IsChecked)
                        {
                            ScheduleCollection.RemoveAt(i);
                            i--;
                        }
                    }
                    OnInformationRequested("Data removed successfully, refreshing service in the background...");
                    await Task.Run(() =>
                    {
                        var result = Controller.RefreshService();
                        if (!result.Success)
                        {
                            success = false;
                            error   = result.ErrorMessage;
                        }
                    });

                    if (success)
                    {
                        OnInformationRequested("Service refreshed successfully");
                    }
                    else
                    {
                        OnErrorOccured(error);
                    }
                }
                else
                {
                    OnErrorOccured(error);
                }
                RemoveMode = false;
            }
            CanUseDatagrid = true;
            CanEditFields  = false;
        }