public void shouldCheckExpenseCategoryExists()
 {
     ExpenseRepository repository = new ExpenseRepository();
     var interaction = new AddExpenseInteraction<RAMRepository.ExpenseRepository>(new Interactions.RequestModels.AddExpense { Amount = ExpenseAmount, Category = ExpenseCategory}, repository);
     interaction.performAction();
     var response = interaction.ResponseModel;
     Assert.IsTrue(response.Error.HasValue);
     Assert.AreEqual<Interactions.ResponseModels.Error.Codes>(response.Error.Value.Code, Interactions.ResponseModels.Error.Codes.CATEGORY_DOES_NOT_EXIST);
 }
 public void shouldCheckExpenseAmountIsPositiveNumber()
 {
     ExpenseRepository repository = new ExpenseRepository();
     var interaction = new AddExpenseInteraction<RAMRepository.ExpenseRepository>(new Interactions.RequestModels.AddExpense { Amount = -44.56, Category = ExpenseCategory}, repository);
     interaction.performAction();
     var response = interaction.ResponseModel;
     Assert.IsTrue(response.Error.HasValue);
     Assert.AreEqual<Interactions.ResponseModels.Error.Codes>(response.Error.Value.Code, Interactions.ResponseModels.Error.Codes.EXPENSE_AMOUNT_MUST_BE_POSITIVE);
 }
        public void shouldAddExpenseToSystemWithCurrentDate()
        { 
            // Add category manully
            CategoryRepository categoryRepository = new CategoryRepository();
            categoryRepository.Add(new Entities.Category { Name = ExpenseCategory });


            ExpenseRepository repository = new ExpenseRepository();
            var interaction = new AddExpenseInteraction<RAMRepository.ExpenseRepository>(new Interactions.RequestModels.AddExpense { Amount = ExpenseAmount, Category = ExpenseCategory}, repository);
            interaction.performAction();
            var response = interaction.ResponseModel;
            Assert.IsFalse(response.Error.HasValue);
            Entities.Expense expense = repository.GetExpenseById(response.Id);
            Assert.IsNotNull(expense);
            Assert.AreEqual<DateTime>(expense.Date, DateTime.Today.Date);
        }
        public ActionResult Create(FormCollection collection)
        {
            double amount = 0;
            bool amountIsNumber = double.TryParse(Request.Form["Amount"], out amount);
            if (amountIsNumber == false) 
            {
                return RedirectToAction("Index", "Home").Error("Amount is not a number");
            }

            var interaction = new AddExpenseInteraction(new Interactions.RequestModels.AddExpense { Amount = amount, Category = Request.Form["Category"]});
            interaction.performAction();
            var response = interaction.ResponseModel;

            if (response.Error.HasValue)
            {
                return RedirectToAction("Index", "Home").Error(response.Error.Value.Message);
            }

            return RedirectToAction("Index", "Home").Success("Expenses Added Successfully!");
        }