public async Task SaveBudgets(ObservableCollection<Budget> budgets)
 {
     try
     {
         var result = this.BudgetList.ToObservableCollection();
         
         if(!App.Instance.IsOnline)
         {
             result = result.Where(i => !i.IsDeleted).ToObservableCollection();
             ApplicationData.Current.LocalSettings.Values["IsSync"] = false;
         }
         else
         {
             var client = new BMAService.MainClient();
             result = await client.SaveBudgetsAsync(budgets);
             ApplicationData.Current.LocalSettings.Values["IsSync"] = true;
         }
         
         await UpdateCacheBudgets(result);
         SetupBudgetList(result);
     }
     catch (Exception)
     {
         throw;
     }
 }
        private static async Task<ICollection<Budget>> LoadLiveBudgets()
        {

            var retVal = new List<Budget>();
            var info = NetworkInformation.GetInternetConnectionProfile();

            if (info == null || info.GetNetworkConnectivityLevel() != NetworkConnectivityLevel.InternetAccess)
            {
                return retVal;
            }

            try
            {
                var client = new BMAService.MainClient();
                var result = await client.GetAllBudgetsAsync();

                    retVal.AddRange(result);
            }
            catch (Exception ex)
            {
                var dialog = new MessageDialog(string.Format("There was an error accessing the weather service.\n\r{0}", ex.Message));
                throw;
            }
            return retVal;
        }
        public async Task SyncBudgets()
        {
            try
            {
                var budgets = await LoadCachedBudgets();

                var client = new BMAService.MainClient();
                var result = await client.SyncBudgetsAsync(budgets.ToObservableCollection());

                ApplicationData.Current.LocalSettings.Values["IsSync"] = true;

                await UpdateCacheBudgets(result);
                SetupBudgetList(result);
            }
            catch (Exception)
            {
                throw;
            }
        }
        private static async Task<ICollection<Transaction>> LoadLiveTransactions(int budgetId)
        {

            var retVal = new List<Transaction>();
            var info = NetworkInformation.GetInternetConnectionProfile();

            if (!App.Instance.IsOnline)
            {
                return retVal;
            }

            try
            {
                var client = new BMAService.MainClient();
                var result = budgetId == 0 ? await client.GetLatestTransactionsAsync() : await client.GetTransactionsForBudgetAsync(budgetId);
                retVal.AddRange(result);
            }
            catch (Exception ex)
            {
                var dialog = new MessageDialog(string.Format("There was an error accessing the weather service.\n\r{0}", ex.Message));
                throw;
            }
            return retVal;
        }