using bsmd.database; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace ENI2.Controls { /// /// Interaction logic for SERVTemplatesControl.xaml /// public partial class SERVTemplatesControl : UserControl { private readonly ObservableCollection _templates = new ObservableCollection(); public SERVTemplatesControl() { InitializeComponent(); this.dataGridSERVTemplates.ItemsSource = _templates; var view = CollectionViewSource.GetDefaultView(_templates); view.SortDescriptions.Add(new SortDescription(nameof(SERV_Template.ServiceName), ListSortDirection.Ascending)); _ = LoadTemplatesAsync(); this.dataGridSERVTemplates.ContextMenu = new ContextMenu(); MenuItem addItem = new MenuItem { Header = Properties.Resources.textAdd, Icon = new System.Windows.Controls.Image { Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("pack://application:,,,/Resources/add.png")) } }; addItem.Click += AddItem_Click; this.dataGridSERVTemplates.ContextMenu.Items.Add(addItem); MenuItem delItem = new MenuItem { Header = Properties.Resources.textDelete, Icon = new System.Windows.Controls.Image { Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("pack://application:,,,/Resources/delete.png")) } }; delItem.Click += DelItem_Click; this.dataGridSERVTemplates.ContextMenu.Items.Add(delItem); } private async Task LoadTemplatesAsync() { List items = await DBManagerAsync.GetSERVTemplatesAsync(true); foreach (SERV_Template item in items) { _templates.Add(item); } } private void buttonSave_Click(object sender, RoutedEventArgs e) { _ = SaveTemplatesAsync(); } private void buttonAdd_Click(object sender, RoutedEventArgs e) { AddNewTemplate(); } private void dataGridSERVTemplates_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { if (e.Row?.Item is SERV_Template item) { item.IsDirty = true; } } private void AddItem_Click(object sender, RoutedEventArgs e) { AddNewTemplate(); } private async void DelItem_Click(object sender, RoutedEventArgs e) { if (this.dataGridSERVTemplates.SelectedItems.Count > 0) { if (MessageBox.Show("Are you sure to delete the selected values?", Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) { var selectedItems = new List(); foreach (SERV_Template item in this.dataGridSERVTemplates.SelectedItems) selectedItems.Add(item); foreach (SERV_Template item in selectedItems) { int result = await DBManagerAsync.DeleteAsync(item); if (result == 1 || item.IsNew) { _templates.Remove(item); } } } } } private void AddNewTemplate() { var item = new SERV_Template { IsDirty = true }; _templates.Add(item); this.dataGridSERVTemplates.SelectedItem = item; this.dataGridSERVTemplates.ScrollIntoView(item); } private async Task SaveTemplatesAsync() { int totalSaves = 0; foreach (SERV_Template item in _templates) { if (item.IsNew || item.IsDirty) { totalSaves += await DBManagerAsync.SaveAsync(item); } } if (totalSaves > 0) { MessageBox.Show($"{totalSaves} SERV templates saved", "Success", MessageBoxButton.OK, MessageBoxImage.Information); } } } }