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); }
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()); }