コード例 #1
0
        public async Task SaveChangesAsync()
        {
            bool _saveOk = true;

            using (UnitOfWork uow = new UnitOfWork(this.dbFilePath))
            {
                if (this.IsNew)
                {
                    switch (this.ItemType)
                    {
                    case BudgetItemType.Expense:
                        var _resultsAddExpense = await uow.AddExpenseItemAsync(this.model as ExpenseItem);

                        _saveOk = _resultsAddExpense.Successful;
                        if (_saveOk)
                        {
                            //this.model = _resultsAddExpense.Results;
                            this.IsDirty   = false;
                            this.IsNew     = false;
                            this.CanEdit   = true;
                            this.CanDelete = true;
                            OnItemUpdated();
                        }
                        else
                        {
                            if (_resultsAddExpense.WorkException != null)
                            {
                                WriteErrorCondition(_resultsAddExpense.WorkException);
                            }
                            else if (!string.IsNullOrEmpty(_resultsAddExpense.Message))
                            {
                                WriteErrorCondition(_resultsAddExpense.Message);
                            }
                            else
                            {
                                WriteErrorCondition("An unknown error has occurred adding budget item object");
                            }
                        }
                        break;

                    case BudgetItemType.Income:
                        var _resultsAddIncome = await uow.AddIncomeItemAsync(this.model as IncomeItem);

                        _saveOk = _resultsAddIncome.Successful;
                        if (_saveOk)
                        {
                            //this.model = _resultsAddIncome.Results;
                            this.IsDirty   = false;
                            this.IsNew     = false;
                            this.CanEdit   = true;
                            this.CanDelete = true;
                            OnItemUpdated();
                        }
                        else
                        {
                            if (_resultsAddIncome.WorkException != null)
                            {
                                WriteErrorCondition(_resultsAddIncome.WorkException);
                            }
                            else if (!string.IsNullOrEmpty(_resultsAddIncome.Message))
                            {
                                WriteErrorCondition(_resultsAddIncome.Message);
                            }
                            else
                            {
                                WriteErrorCondition("An unknown error has occurred adding budget item object");
                            }
                        }
                        break;
                    }
                }
                else
                {
                    switch (this.ItemType)
                    {
                    case BudgetItemType.Expense:
                        var _resultsUpdateExpense = await uow.UpdateExpenseItemAsync(this.model as ExpenseItem);

                        _saveOk = _resultsUpdateExpense.Successful;
                        if (_saveOk)
                        {
                            //this.model = _resultsUpdateExpense.Results;
                            this.IsDirty   = false;
                            this.IsNew     = false;
                            this.CanEdit   = true;
                            this.CanDelete = true;
                            OnItemUpdated();
                        }
                        else
                        {
                            if (_resultsUpdateExpense.WorkException != null)
                            {
                                WriteErrorCondition(_resultsUpdateExpense.WorkException);
                            }
                            else if (!string.IsNullOrEmpty(_resultsUpdateExpense.Message))
                            {
                                WriteErrorCondition(_resultsUpdateExpense.Message);
                            }
                            else
                            {
                                WriteErrorCondition("An unknown error has occurred updating budget item object");
                            }
                        }


                        break;

                    case BudgetItemType.Income:

                        var _resultsUpdateIncome = await uow.UpdateIncomeItemAsync(this.model as IncomeItem);

                        _saveOk = _resultsUpdateIncome.Successful;
                        if (_saveOk)
                        {
                            //this.model = _resultsUpdateIncome.Results;
                            this.IsDirty   = false;
                            this.IsNew     = false;
                            this.CanEdit   = true;
                            this.CanDelete = true;
                            OnItemUpdated();
                        }
                        if (!_saveOk)
                        {
                            if (_resultsUpdateIncome.WorkException != null)
                            {
                                WriteErrorCondition(_resultsUpdateIncome.WorkException);
                            }
                            else if (!string.IsNullOrEmpty(_resultsUpdateIncome.Message))
                            {
                                WriteErrorCondition(_resultsUpdateIncome.Message);
                            }
                            else
                            {
                                WriteErrorCondition("An unknown error has occurred updating budget item object");
                            }
                        }

                        break;
                    }
                }
            }
        }