using MYOB.AccountRight.SDK.Contracts; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace InABox.Poster.MYOB; /// /// Interaction logic for MYOBCompanyFileSelectionDialog.xaml /// public partial class MYOBCompanyFileSelectionDialog : Window, INotifyPropertyChanged { private bool _canSave; public bool CanSave { get => _canSave; set { _canSave = true; OnPropertyChanged(); } } public List Items { get => Grid.Items; set => Grid.Items = value; } public MYOBCompanyFile? Result { get { var row = Grid.SelectedRows.FirstOrDefault(); if(row is not null) { return Grid.LoadItem(row); } return null; } } public MYOBCompanyFileSelectionDialog() { InitializeComponent(); } public event PropertyChangedEventHandler? PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private void Grid_OnSelectItem(object sender, DynamicGrid.DynamicGridSelectionEventArgs e) { CanSave = e.Rows is not null && e.Rows.Length > 0; } private void Window_Loaded(object sender, RoutedEventArgs e) { Grid.Refresh(true, true); } private void CancelButton_Click(object sender, RoutedEventArgs e) { DialogResult = false; Close(); } private void OKButton_Click(object sender, RoutedEventArgs e) { DialogResult = true; Close(); } public static CompanyFile? SelectCompanyFile() { var data = MYOBPosterEngine.GetConnectionData(); var window = new MYOBCompanyFileSelectionDialog(); var files = data.CompanyFileService.GetRange(); window.Items = files.Select(x => { return new MYOBCompanyFile { ID = x.Id, Name = x.Name }; }).ToList(); if(window.ShowDialog() == true) { var result = window.Result; if(result is not null) { return files.FirstOrDefault(x => x.Id == result.ID); } else { return null; } } else { return null; } } }