| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 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;/// <summary>/// Interaction logic for MYOBCompanyFileSelectionDialog.xaml/// </summary>public partial class MYOBCompanyFileSelectionDialog : Window, INotifyPropertyChanged{    private bool _canSave;    public bool CanSave    {        get => _canSave;        set        {            _canSave = true;            OnPropertyChanged();        }    }    public List<MYOBCompanyFile> 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;        }    }}
 |