public async Task <ResponseData> EditWallet(int walletId, WalletToReturnDTO walletToEdit)
        {
            ResponseData responseData = new ResponseData
            {
                isSuccessful = false,
                Message      = "No wallet has been found",
            };
            var wallet = await _context.Wallets.Where(w => w.Id == walletId).FirstOrDefaultAsync();

            if (wallet != null)
            {
                var monthlyExpenses = await GetMonthlyExpenses(walletId);

                if (walletToEdit.MonthlyLimit <= monthlyExpenses)
                {
                    responseData.Message = "You cannot set limit that exceeds your expenses!";
                    return(responseData);
                }
                wallet.Title        = walletToEdit.Title;
                wallet.MonthlyLimit = walletToEdit.MonthlyLimit;
                wallet.Currency     = walletToEdit.Currency;
                _context.Wallets.Update(wallet);
                if (await _context.SaveChangesAsync() > 0)
                {
                    responseData.isSuccessful = true;
                    responseData.Message      = "Edit was successful";
                    return(responseData);
                }
                responseData.Message = "Edit was not successful";
                return(responseData);
            }
            return(responseData);
        }
Example #2
0
        public async Task <IActionResult> GetWallets(string Id)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(BadRequest(ResponseMessage.Message("Invalid input", errors: new { message = "Id should not be null or empty or whitespace" })));
            }

            try
            {
                var wallets = await _walletRepository.GetWalletsByUserId(Id);

                List <WalletToReturnDTO> walletsToReturn = new List <WalletToReturnDTO>();

                foreach (var wallet in wallets)
                {
                    var walletToReturn = new WalletToReturnDTO
                    {
                        WalletId          = wallet.WalletId,
                        ApplicationUserId = wallet.ApplicationUserId,
                        WalletCurrency    = wallet.WalletCurrency,
                        Balance           = wallet.Balance
                    };

                    walletsToReturn.Add(walletToReturn);
                }

                return(Ok(ResponseMessage.Message("Success", data: walletsToReturn)));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
                return(BadRequest(ResponseMessage.Message("Data access error", errors: new { message = "Could not access record from data source" })));
            }
        }
        public async Task <IActionResult> EditWallet(string userId, WalletToReturnDTO walletToEdit)
        {
            if (User.FindFirst(ClaimTypes.NameIdentifier).Value == userId)
            {
                var currentUser = await _userManager.Users.FirstOrDefaultAsync(u => u.Id == userId);

                if (currentUser != null && currentUser.WalletID != 0)
                {
                    var results = await _repo.EditWallet(currentUser.WalletID, walletToEdit);

                    if (results.isSuccessful)
                    {
                        return(Ok(results.Message));
                    }
                    return(BadRequest(results.Message));
                }
            }
            return(Unauthorized());
        }