public async Task <IActionResult> PostUnplannedExpense(UnplannedExpenseForCreateDto unplannedExpense)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var categoryFromRepo = _categoryRepository.GetCategoryByName(unplannedExpense.CategoryName);

            if (categoryFromRepo == null)
            {
                return(BadRequest());
            }

            var expenseToCreate = Mapper.Map <UnplannedExpense>(unplannedExpense);

            expenseToCreate.BudgetCategory = categoryFromRepo;

            await _unplannedExpenseRepository.Create(expenseToCreate);

            return(CreatedAtAction("GetUnplannedExpense", new { id = unplannedExpense.Id }, unplannedExpense));
        }
        public async Task <IActionResult> PutUnplannedExpense(Guid id, UnplannedExpenseForCreateDto unplannedExpense)
        {
            if (id != unplannedExpense.Id)
            {
                return(BadRequest());
            }

            if (!await _unplannedExpenseRepository.EntryExists(id))
            {
                return(NotFound());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var expenseFromRepo = await _unplannedExpenseRepository.GetById(id, true);

            var categoryFromRepo = _categoryRepository.GetCategoryByName(unplannedExpense.CategoryName);

            if (categoryFromRepo == null)
            {
                return(BadRequest());
            }

            var expenseToUpdate = Mapper.Map(unplannedExpense, expenseFromRepo);

            expenseToUpdate.BudgetCategory = categoryFromRepo;

            await _unplannedExpenseRepository.Create(expenseToUpdate);

            await _paymentService.AddUnplannedExpensePaymentAsync(expenseToUpdate);

            return(NoContent());
        }