using Billing.UI;
using Xamarin.Forms;

namespace Billing.Views
{
    public partial class AccountPage : BillingPage
    {
        private static readonly BindableProperty BalanceProperty = BindableProperty.Create(nameof(Balance), typeof(decimal), typeof(AccountPage));
        private static readonly BindableProperty AssetProperty = BindableProperty.Create(nameof(Asset), typeof(decimal), typeof(AccountPage));
        private static readonly BindableProperty LiabilityProperty = BindableProperty.Create(nameof(Liability), typeof(decimal), typeof(AccountPage));

        public decimal Balance => (decimal)GetValue(BalanceProperty);
        public decimal Asset => (decimal)GetValue(AssetProperty);
        public decimal Liability => (decimal)GetValue(LiabilityProperty);

        public Command AddAccount { get; }

        public AccountPage()
        {
            AddAccount = new Command(OnAddAccount);

            InitializeComponent();
        }

        private async void OnAddAccount()
        {
            if (Tap.IsBusy)
            {
                return;
            }
            using (Tap.Start())
            {
                var page = new AddAccountPage();
                page.AccountChecked += AccountChecked;
                await Navigation.PushAsync(page);
            }
        }

        private void AccountChecked(object sender, AccountEventArgs e)
        {
            Helper.Debug(e.Account.ToString());
        }
    }
}