示例#1
0
        public void CreateOrEdit()
        {
            if (!IsValid)
            {
                return;
            }

            if (_account == null)
            {//Создаём новый счёт
                try
                {
                    _accountService.CreateNewAccount(AccountName, AccountType, AccountNumber, AccountCurrency, double.Parse(AccountBalance), AccountIsDefault);

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Create;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Create;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
            else
            {//Сохраняем изменения
                _account.Name      = AccountName;
                _account.Type      = AccountType;
                _account.Number    = AccountNumber;
                _account.Balance   = double.Parse(AccountBalance);
                _account.Currency  = AccountCurrency;
                _account.IsDefault = AccountIsDefault;

                try
                {
                    _accountService.Update(_account);

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Update;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Update;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
        }
示例#2
0
        public void Cancel()
        {
            var resultEventArgs = new OperationDoneEventArgs();

            resultEventArgs.Type   = OperationType.Cancel;
            resultEventArgs.Result = true;

            OperationDone?.Invoke(this, resultEventArgs);
        }
示例#3
0
        public void CreateOrEdit()
        {
            if (!IsValid)
            {
                return;
            }

            if (_category == null)
            {//Создаём новую категорию
                try
                {
                    _categoryService.CreateNew(CategoryName, SelectedIcon, CategoryIsDefault);

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Create;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Create;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
            else
            {//Сохраняем изменения
                try
                {
                    _category.Name      = CategoryName;
                    _category.IsDefault = CategoryIsDefault;
                    _category.IconPath  = SelectedIcon;

                    _categoryService.Update(_category);

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Update;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Update;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
        }
示例#4
0
        public void CreateOrEdit()
        {
            if (!IsValid)
            {
                return;
            }

            if (_transaction == null)
            {//Создаём новую транзакцию
                try
                {
                    double value;
                    if (!double.TryParse(TransactionValue, out value))
                    {
                        return;
                    }

                    if (_type == TransactionType.Expensess)
                    {
                        value *= -1;
                    }

                    _transactionService.CreateNew(TransactionTitle, value, TransactionDate, TransactionNote, SelectedAccount.Id, SelectedCategory.Id, IsTransactioRepeatable);

                    var account = _accountService.GetAccountById(SelectedAccount.Id);
                    account.Balance += value;
                    _accountService.Update(account);

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Create;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Create;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
            else
            {//Редактируем транзакцию
                try
                {
                    double value;
                    if (!double.TryParse(TransactionValue, out value))
                    {
                        return;
                    }

                    if (_type == TransactionType.Expensess)
                    {
                        value *= -1;
                    }

                    bool isValueChanged = false, isAccountChanged = false;
                    var  oldValue   = value;
                    var  oldAccount = _transaction.AccountID;

                    _transaction.Title = TransactionTitle;
                    if (!Equals(_transaction.Value, value))
                    {
                        _transaction.Value = value;
                        isValueChanged     = true;
                    }

                    if (!Equals(_transaction.AccountID, SelectedAccount.Id))
                    {
                        _transaction.AccountID = SelectedAccount.Id;
                        isAccountChanged       = true;
                    }

                    _transaction.CategoryID   = SelectedCategory.Id;
                    _transaction.Date         = TransactionDate;
                    _transaction.Note         = TransactionNote;
                    _transaction.IsRepeatable = IsTransactioRepeatable;

                    _transactionService.Update(_transaction);

                    if (isAccountChanged)
                    {
                        var acc = _accountService.GetAccountById(oldAccount);
                        acc.Balance -= oldValue;
                    }

                    if (isValueChanged)
                    {
                        var acc = _accountService.GetAccountById(_transaction.AccountID);

                        if (!isAccountChanged)
                        {
                            acc.Balance -= oldValue;
                        }

                        acc.Balance += _transaction.Value;
                    }

                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type   = OperationType.Update;
                    resultEventArgs.Result = true;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
                catch (Exception ex)
                {
                    var resultEventArgs = new OperationDoneEventArgs();
                    resultEventArgs.Type    = OperationType.Update;
                    resultEventArgs.Message = ex.Message;
                    resultEventArgs.Result  = false;

                    OperationDone?.Invoke(this, resultEventArgs);
                }
            }
        }