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;
            }
        }
Esempio n. 3
0
        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" }));
            }
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 6
0
        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"));
        }