public async Task <IHttpActionResult> CreateNewIncomeRecord(long userId, IncomeForCreateDto incomeForCreateDto)
        {
            if (!IsUserAuthorized(userId))
            {
                return(Unauthorized());
            }

            var bankAccountId = incomeForCreateDto.BankAccountId;
            var userFromDb    = await _unitOfWork.Users.GetUserData(userId);

            if (!userFromDb.BankAccounts.Any(b => b.Id == bankAccountId))
            {
                return(BadRequest("Current User doesn't own this account!"));
            }

            var incomeForDb = _unitOfWork.Incomes.AddMoneyToBankAccount(userId, userFromDb, incomeForCreateDto, _mapper);

            if (await _unitOfWork.Complete() > 0)
            {
                var incomesList = _mapper.Map <IncomeForListDto>(incomeForDb);
                return(Created(new Uri(Request.RequestUri + "/" + incomeForDb.Id), incomesList));
            }

            return(BadRequest("An error happened while creating new income!"));
        }
        public Income AddMoneyToBankAccount(long userId, User userFromDb, IncomeForCreateDto incomeForCreateDto, IMapper mapper)
        {
            var bankAccountId = incomeForCreateDto.BankAccountId;

            var bankAccountToUpdate = userFromDb.BankAccounts.FirstOrDefault(b => b.Id == bankAccountId);

            bankAccountToUpdate.Ballance += incomeForCreateDto.Ammount;

            incomeForCreateDto.UserId = userId;

            var incomeForDb = mapper.Map <Income>(incomeForCreateDto);

            incomeForDb.NewBallance = bankAccountToUpdate.Ballance;

            Add(incomeForDb);

            return(incomeForDb);
        }