/// <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(); }
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; }
/// <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; }