public bool UpdateTransactionType(TransactionTypeVM transactionTypeVM) { using (var dbTransaction = unitOfWork.dbContext.Database.BeginTransaction()) { try { tblTransactionType transactionType = unitOfWork.TblTransactionTypeRepository.GetByID(transactionTypeVM.TransactionTypeID); transactionType.Description = transactionTypeVM.Description; transactionType.BUID = transactionTypeVM.BusinessUnitID; transactionType.ModifiedDate = DateTime.Now; transactionType.ModifiedBy = transactionTypeVM.ModifiedBy; unitOfWork.TblTransactionTypeRepository.Update(transactionType); unitOfWork.Save(); //Complete the Transaction dbTransaction.Commit(); return(true); } catch (Exception ex) { //Roll back the Transaction dbTransaction.Rollback(); return(false); } } }
public TransactionTypeVM GetTransactionTypeByID(int transactionTypeID) { try { var transactionTypeData = unitOfWork.TblTransactionTypeRepository.GetByID(transactionTypeID); TransactionTypeVM transactionTypeVM = new TransactionTypeVM(); transactionTypeVM.TransactionTypeID = transactionTypeData.TransactionTypeID; transactionTypeVM.Description = transactionTypeData.Description; transactionTypeVM.BusinessUnitID = transactionTypeData.BUID != null?Convert.ToInt32(transactionTypeData.BUID) : 0; if (transactionTypeVM.BusinessUnitID > 0) { transactionTypeVM.BusinessUnitName = transactionTypeData.tblBussinessUnit.BussinessUnit; } transactionTypeVM.CreatedDate = transactionTypeData.CreatedDate != null?transactionTypeData.CreatedDate.ToString() : string.Empty; transactionTypeVM.ModifiedDate = transactionTypeData.ModifiedDate != null?transactionTypeData.ModifiedDate.ToString() : string.Empty; transactionTypeVM.CreatedBy = transactionTypeData.CreatedBy != null?Convert.ToInt32(transactionTypeData.CreatedBy) : 0; transactionTypeVM.ModifiedBy = transactionTypeData.ModifiedBy != null?Convert.ToInt32(transactionTypeData.ModifiedBy) : 0; return(transactionTypeVM); } catch (Exception ex) { throw; } }
public IHttpActionResult UpdateTransactionType([FromBody] JObject data) { try { int transactionTypeID = !string.IsNullOrEmpty(data.SelectToken("TransactionTypeID").Value <string>()) ? Convert.ToInt32(data.SelectToken("TransactionTypeID").Value <string>()) : 0; string description = !string.IsNullOrEmpty(data.SelectToken("Description").Value <string>()) ? data.SelectToken("Description").Value <string>() : string.Empty; int businessUnitID = !string.IsNullOrEmpty(data.SelectToken("BUID").Value <string>()) ? Convert.ToInt32(data.SelectToken("BUID").Value <string>()) : 0; int userID = !string.IsNullOrEmpty(data.SelectToken("UserID").Value <string>()) ? Convert.ToInt32(data.SelectToken("UserID").Value <string>()) : 0; TransactionTypeVM transactionTypeVM = new TransactionTypeVM(); transactionTypeVM.TransactionTypeID = transactionTypeID; transactionTypeVM.Description = description; transactionTypeVM.BusinessUnitID = businessUnitID; transactionTypeVM.ModifiedBy = userID; bool status = manageTransactionType.UpdateTransactionType(transactionTypeVM); if (status) { return(Json(new { status = true, message = "Successfully updated" })); } else { return(Json(new { status = false, message = "Update Failed" })); } } catch (Exception ex) { return(Json(new { status = false, message = "Unknown error occurred" })); } }
public IHttpActionResult SaveTransactionType([FromBody] JObject data) { try { string description = !string.IsNullOrEmpty(data.SelectToken("Description").Value <string>()) ? data.SelectToken("Description").Value <string>() : string.Empty; int businessUnitID = !string.IsNullOrEmpty(data.SelectToken("BUID").Value <string>()) ? Convert.ToInt32(data.SelectToken("BUID").Value <string>()) : 0; int userID = !string.IsNullOrEmpty(data.SelectToken("UserID").Value <string>()) ? Convert.ToInt32(data.SelectToken("UserID").Value <string>()) : 0; if (!manageTransactionType.IsTransactionAvailable(null, description)) { TransactionTypeVM transactionTypeVM = new TransactionTypeVM(); transactionTypeVM.Description = description; transactionTypeVM.BusinessUnitID = businessUnitID; transactionTypeVM.CreatedBy = userID; bool status = manageTransactionType.SaveTransactionType(transactionTypeVM); if (status) { return(Json(new { status = true, message = "Successfully Saved" })); } else { return(Json(new { status = false, message = "Save Failed" })); } } else { return(Json(new { status = false, message = "Transaction Type Name already exists" })); } } catch (Exception ex) { return(Json(new { status = false, message = "Unknown error occurred" })); } }
public List <TransactionTypeVM> GetAllTransactionTypesByBusinessUnitID(int businessUnitID) { try { var transactionTypeData = unitOfWork.TblTransactionTypeRepository.Get(x => x.BUID == businessUnitID).ToList(); List <TransactionTypeVM> transactionTypeList = new List <TransactionTypeVM>(); foreach (var transactionType in transactionTypeData) { TransactionTypeVM transactionTypeVM = new TransactionTypeVM(); transactionTypeVM.TransactionTypeID = transactionType.TransactionTypeID; transactionTypeVM.Description = transactionType.Description; transactionTypeVM.BusinessUnitID = transactionType.BUID != null?Convert.ToInt32(transactionType.BUID) : 0; if (transactionTypeVM.BusinessUnitID > 0) { transactionTypeVM.BusinessUnitName = transactionType.tblBussinessUnit.BussinessUnit; } transactionTypeVM.CreatedDate = transactionType.CreatedDate != null?transactionType.CreatedDate.ToString() : string.Empty; transactionTypeVM.ModifiedDate = transactionType.ModifiedDate != null?transactionType.ModifiedDate.ToString() : string.Empty; transactionTypeVM.CreatedBy = transactionType.CreatedBy != null?Convert.ToInt32(transactionType.CreatedBy) : 0; transactionTypeVM.ModifiedBy = transactionType.ModifiedBy != null?Convert.ToInt32(transactionType.ModifiedBy) : 0; transactionTypeList.Add(transactionTypeVM); } return(transactionTypeList); } catch (Exception ex) { throw; } }
public async Task <IActionResult> AtmTransaction(decimal amount, TransactionTypeVM transactionTypeVM, int sourceAccount, int?destAccount, string comment) { var user = await _userManager.GetUserAsync(User); var CustomerID = user.CustomerID.Value; var account = await _context.Account.FindAsync(sourceAccount); var serviceCharge = account.FreeTransaction == 0 ? 0.2m : 0.0m; if (amount <= 0) { ModelState.AddModelError(nameof(amount), "Amount must be positive."); } if (amount.HasMoreThanTwoDecimalPlaces()) { ModelState.AddModelError(nameof(amount), "Amount cannot have more than 2 decimal places."); } if (transactionTypeVM == TransactionTypeVM.Transfer && destAccount == sourceAccount) { ModelState.AddModelError(nameof(destAccount), "Cannot transfer to the same account"); } if (transactionTypeVM == TransactionTypeVM.Transfer && destAccount == null) { ModelState.AddModelError(nameof(destAccount), "Please select a destination account"); } if (transactionTypeVM == TransactionTypeVM.Withdrawal && account.Balance - (amount + serviceCharge) < 0.0m) { ModelState.AddModelError(nameof(amount), "Insufficient balance."); } if (transactionTypeVM != TransactionTypeVM.Transfer && destAccount != null) { ModelState.AddModelError(nameof(destAccount), "Deposit/Withdraw doesn't need a destination account."); } if (!ModelState.IsValid) { var sourceAccounts = _context.Account.Where(x => x.CustomerID == CustomerID). Select(x => new SelectListItem() { Text = x.AccountNumber.ToString(), Value = x.AccountNumber.ToString() }). ToList(); var destAccounts = _context.Account. Select(x => new SelectListItem() { Text = x.AccountNumber.ToString(), Value = x.AccountNumber.ToString() }).ToList(); var AtmTransModel = new AtmTransactionViewModel() { SourceAccounts = sourceAccounts, DestinationAccounts = destAccounts }; return(View(AtmTransModel)); } if (transactionTypeVM == TransactionTypeVM.Deposit) { account.Balance += amount; account.ModifyDate = DateTime.UtcNow; account.Transactions.Add( new Transaction { TransactionType = TransactionType.Deposit, Amount = amount, Comment = comment, ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Customer")); } else if (transactionTypeVM == TransactionTypeVM.Withdrawal) { account.Balance -= amount + serviceCharge; account.ModifyDate = DateTime.UtcNow; account.FreeTransaction = account.FreeTransaction > 0 ? account.FreeTransaction - 1 : account.FreeTransaction; account.Transactions.Add( new Transaction { TransactionType = TransactionType.Withdrawal, Amount = amount, Comment = comment, ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); if (account.FreeTransaction == 0) { account.Transactions.Add( new Transaction { TransactionType = TransactionType.ServiceCharge, Amount = serviceCharge, Comment = "service Charge", ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); } await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Customer")); } else if (transactionTypeVM == TransactionTypeVM.Transfer) { account.Balance -= amount + serviceCharge; account.ModifyDate = DateTime.UtcNow; account.FreeTransaction = account.FreeTransaction > 0 ? account.FreeTransaction - 1 : account.FreeTransaction; account.Transactions.Add( new Transaction { TransactionType = TransactionType.Transfer, Amount = amount, Comment = comment, DestAccount = destAccount, ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); if (account.FreeTransaction == 0) { account.Transactions.Add( new Transaction { TransactionType = TransactionType.ServiceCharge, Amount = serviceCharge, Comment = "service Charge", ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); } var destinationAccount = await _context.Account.FindAsync(destAccount); destinationAccount.Balance += amount; destinationAccount.ModifyDate = DateTime.UtcNow; destinationAccount.Transactions.Add( new Transaction { TransactionType = TransactionType.Transfer, Amount = amount, Comment = comment, ModifyDate = DateTime.UtcNow, TransactionStatus = TransactionStatus.Idle }); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Customer")); } return(RedirectToAction("Index", "Customer")); }