Beispiel #1
0
        private TransactionBank CreateTransaction(
            decimal transferAmount,
            Currency transferCurrency,
            BankAccount fromAccount = null,
            BankAccount toAccount   = null)
        {
            var newTransaction = new TransactionBank
            {
                SenderAccount     = fromAccount,
                ReceiverAccount   = toAccount,
                TransferAmount    = transferAmount,
                Currency          = transferCurrency,
                CreationDate      = DateTime.Now,
                TransactionNumber = _generationService.GenerateTransactionNumber(),

                //if there can be only one card - should be refactored

                BanksCardFrom = (fromAccount != null && fromAccount.BanksCards.Any())
                ? fromAccount.BanksCards.First()
                : null,

                BanksCardTo = (toAccount != null && toAccount.BanksCards.Any())
                ? toAccount.BanksCards.First()
                : null
            };

            return(newTransaction);
        }
Beispiel #2
0
        public ActionResult DeleteConfirmed(int id)
        {
            TransactionBank transactionBank = db.TransactionsBank.Find(id);

            db.TransactionsBank.Remove(transactionBank);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #3
0
 public ActionResult Edit([Bind(Include = "Id,TypeOperation,Description,DateOperation,Value,Reconciliation")] TransactionBank transactionBank)
 {
     if (ModelState.IsValid)
     {
         TransactionBank obj = db.TransactionsBank.Where(x => x.Id == transactionBank.Id).FirstOrDefault();
         obj.Reconciliation = transactionBank.Reconciliation;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(transactionBank));
 }
Beispiel #4
0
        // GET: TransactionBanks/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TransactionBank transactionBank = db.TransactionsBank.Find(id);

            if (transactionBank == null)
            {
                return(HttpNotFound());
            }
            return(View(transactionBank));
        }
Beispiel #5
0
        private async Task <List <TransactionBank> > GetTransactions(string ofxFilePath, List <TransactionBank> listTransactions)
        {
            CheckFileExists(ofxFilePath);

            StreamReader sr = new StreamReader(ofxFilePath);

            var objTransaction = OfxConverterToXml.Parser(sr);

            foreach (var item in objTransaction.Transactions)
            {
                var transaction = new TransactionBank()
                {
                    CheckTransaction    = objTransaction.CheckTransaction,
                    IdBank              = objTransaction.IdBank,
                    InitDateTransaction = objTransaction.InitDateTransaction,
                    EndtDateTransaction = objTransaction.EndtDateTransaction,

                    Type        = item.Type,
                    Date        = item.Date,
                    Description = item.Description,
                    Amount      = item.Amount,
                };

                if ((await CheckIfTransacationExist(transaction)) == false)
                {
                    listTransactions.Add(transaction);
                }
            }

            var distincList = listTransactions.Distinct();

            if (distincList.Count() <= 0)
            {
                return(distincList.ToList());
            }
            else
            {
                await _extractBankRepository.AddRange(distincList.ToList());
            }

            return(distincList.ToList());
        }
        public IActionResult AddTransaction(TransactionBankViewModel viewModel)
        {
            var fromCard = _banksCardRepository.GetCardById(viewModel.CardFromId);
            var toCard   = _banksCardRepository.GetCardById(viewModel.CardToId);

            _transactionService.Transfer(fromCard.BankAccount.Id, toCard.BankAccount.Id, viewModel.TransferAmount);

            //StringBuilder sb = new StringBuilder();
            //var transaction = new TransactionBank()
            //{
            //    TransactionNumber = sb.ToString(),
            //    CreationDate = DateTime.Now,
            //    BanksCardFrom = _banksCardRepository.GetCardById(viewModel.CardFromId),
            //    BanksCardTo = _banksCardRepository.GetCardById(viewModel.CardToId),
            //    TransferAmount = viewModel.TransferAmount
            //};
            //_transactionBankRepository.Save(transaction);
            String startWith   = "07";
            Random generator   = new Random();
            String random      = generator.Next(0, 999999).ToString("D6");
            var    transaction = new TransactionBank()
            {
                TransactionNumber = startWith + random,
                Currency          = fromCard.Currency,
                CreationDate      = DateTime.Now,
                BanksCardFrom     = _banksCardRepository.GetCardById(viewModel.CardFromId),
                BanksCardTo       = _banksCardRepository.GetCardById(viewModel.CardToId),
                TransferAmount    = viewModel.TransferAmount
            };

            _transactionBankRepository.Save(transaction);

            // var transaction = _mapper.Map<TransactionBank>(viewModel);
            // _transactionBankRepository.Save(transaction);
            return(RedirectToAction("AddCard"));
        }
Beispiel #7
0
        /// <summary>
        /// Convert OFX file in List<TransactionBank>
        /// </summary>
        public static List <TransactionBank> toXElement(string pathToOfxFile)
        {
            var tags = from line in File.ReadAllLines(pathToOfxFile)
                       where line.Contains("<STMTTRN>") ||
                       line.Contains("<TRNTYPE>") ||
                       line.Contains("<DTPOSTED>") ||
                       line.Contains("<TRNAMT>") ||
                       line.Contains("<FITID>") ||
                       line.Contains("<CHECKNUM>") ||
                       line.Contains("<MEMO>")
                       select line;


            List <TransactionBank> listResult = new List <TransactionBank>();
            TransactionBank        obj        = new TransactionBank();

            foreach (var l in tags)
            {
                if (l.IndexOf("<STMTTRN>") != -1)
                {
                    if (!string.IsNullOrEmpty(obj.Description) &&
                        !listResult.Any(x => x.DateOperation == obj.DateOperation && x.Value == obj.Value && x.Description == obj.Description))
                    {
                        obj.Reconciliation = false;
                        listResult.Add(obj);
                    }

                    obj = new TransactionBank();

                    continue;
                }
                else if (l.IndexOf("<TRNTYPE>") != -1)
                {
                    if (TypeOperation.CREDIT.ToString() == l.Replace("<TRNTYPE>", "").Trim())
                    {
                        obj.TypeOperation = (int)TypeOperation.CREDIT;
                    }
                    else if (TypeOperation.DEBIT.ToString() == l.Replace("<TRNTYPE>", "").Trim())
                    {
                        obj.TypeOperation = (int)TypeOperation.DEBIT;
                    }

                    continue;
                }
                else if (l.IndexOf("<DTPOSTED>") != -1)
                {
                    string date = l.Replace("<DTPOSTED>", "").Substring(0, 8);

                    DateTime dateOperation = DateTime.ParseExact(date, "yyyyMMdd",
                                                                 CultureInfo.InvariantCulture);

                    obj.DateOperation = dateOperation;

                    continue;
                }
                else if (l.IndexOf("<TRNAMT>") != -1)
                {
                    decimal.TryParse(l.Replace("<TRNAMT>", ""), out decimal resultDecimal);

                    obj.Value = resultDecimal;

                    continue;
                }
                else if (l.IndexOf("<MEMO>") != -1)
                {
                    obj.Description = l.Replace("<MEMO>", "");

                    continue;
                }
            }
            return(listResult);
        }
Beispiel #8
0
 private async Task <bool> CheckIfTransacationExist(TransactionBank transactionBanks)
 {
     return(await _extractBankRepository.CheckIfExistsTransaction(transactionBanks));
 }