Exemplo n.º 1
0
        public async Task<bool> CreateTransaction(NewTransactionViewModel model)
        {
            // Get the authenticated user
            var username = HttpContext.Current.User.Identity.Name;
            User user = await _userManager.FindByNameAsync(username);

            // First retrieve all categories.
            // Select the category specified by submitted transaction data.
            // If no such category exists, create it and get the category id.
            IList<Category> categories = await _accountData.GetCategoriesAsync();
            Category category = categories.FirstOrDefault(c => c.Name == model.Category);
            int categoryId;
            if (category == null)
                categoryId = await _accountData.InsertCategoryAsync(new Category
                {
                    Name = model.Category
                });
            else
                categoryId = category.Id;


            // Insert New Transaction
            Transaction transaction = new Transaction
            {
                AccountId = model.AccountId,
                Description = model.Description,
                Amount = model.Amount,
                Reconciled = model.Reconciled,
                isReconciled = model.Amount.Equals(model.Reconciled),
                TransactionDate = model.TransactionDate,
                Updated_By = user.Id
            };
            int transactionId = await _accountData.InsertTransactionAsync(transaction);

            // Insert entry in the TransactionCategories join table
            // to associate the newly created transaction with it's category
            bool result = await _accountData.InsertTransactionCategoryAsync(transactionId, categoryId);

            return result;
        }
        public async Task<IList<TransactionViewModel>> CreateTransaction(NewTransactionViewModel model)
        {
            bool result = await AccountManager.CreateTransaction(model);
            if (!result)
                throw new HttpResponseException(HttpStatusCode.InternalServerError);

            IList<TransactionViewModel> transactions = await AccountManager.GetTransactions(model.AccountId);

            return transactions;
        }