public bool SaveTransaction(int userId, long amount, bool isIncome)
        {
            bool isSavedTransaction = false;

            try
            {
                TransactionLogs transaction = new TransactionLogs()
                {
                    UserId   = userId,
                    Amount   = amount,
                    IsIncome = isIncome
                };

                var user = _db.transactionLogs.Add(transaction);
                _db.SaveChanges();
                isSavedTransaction = true;

                return(isSavedTransaction);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(false);
            }
        }
Exemple #2
0
        public async Task <UserEntity> InsertUserEntityAsync(UserEntity userEntity)
        {
            int id = await _userModel.InsertUserDetailsAsync(userEntity);

            CurrentUser = await _userModel.GetUserDetailsAsync();

            TransactionLogEntity transactionLogEntity = new TransactionLogEntity()
            {
                TransactionId          = 0,
                TransactionPartyId     = 1, // OWN
                ScheduledTransactionId = null,
                IsDeletedTransaction   = false,
                IsIncome            = true,
                TransactionDateTime = DateTime.Now,
                Amount          = userEntity.StartingAmount,
                StartingBalance = 0,
                FinalBalance    = userEntity.StartingAmount,
                CreatedDateTime = DateTime.Now,
                IsUserPerformed = true,
                Remarks         = "Starting Balance"
            };
            int tranLogId = await _transactionLogModel.InsertTransactionLogAsync(transactionLogEntity);

            transactionLogEntity = await _transactionLogModel.GetTransactionLogByIdAsync(tranLogId);

            IList <TransactionLogEntity> transactionLogs = TransactionLogs.ToList();

            transactionLogs.Add(transactionLogEntity);
            TransactionLogs = transactionLogs;

            return(CurrentUser);
        }
        public ActionResult TransactionLogAddEdit(int?id)
        {
            BackEndTransactionLogAddEdit transactionLogAddEdit = new BackEndTransactionLogAddEdit();

            if (id.IsNotNull())
            {
                TransactionLogs transactionLogs = new TransactionLogs();
                var             transactionLog  = transactionLogs.FilterById(id);
                if (transactionLog.IsNotNull())
                {
                    transactionLogAddEdit.Id             = transactionLog.Id;
                    transactionLogAddEdit.Id_Fighting    = transactionLog.Id_Fighting;
                    transactionLogAddEdit.TransationDate = transactionLog.TransationDate.ToDateTimeString();
                    transactionLogAddEdit.ReceiveAccount = transactionLog.ReceiveAccount;
                    transactionLogAddEdit.TransationType = transactionLog.TransationType;
                    transactionLogAddEdit.Amount         = transactionLog.Amount;
                    transactionLogAddEdit.UserId         = transactionLog.UserId;
                    transactionLogAddEdit.Nick           = transactionLog.Nick;
                    transactionLogAddEdit.Reason         = transactionLog.Reason;
                    transactionLogAddEdit.Status         = transactionLog.Status;
                    transactionLogAddEdit.ErrorMessage   = transactionLog.ErrorMessage;
                    transactionLogAddEdit.Created_At     = transactionLog.Created_At.ToDateTimeString();
                    transactionLogAddEdit.Updated_At     = transactionLog.Updated_At.ToDateTimeString();
                }
            }
            return(View(transactionLogAddEdit));
        }
        public ActionResult TransactionLogDelete(int?deleteId)
        {
            string          username        = BackEndSessions.CurrentUser.UserName;
            TransactionLogs transactionLogs = new TransactionLogs();

            switch (transactionLogs.Delete(deleteId, username))
            {
            case 0:
                ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.ItemSuccessfullyDeleted);
                break;

            case 2:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemDoesNotExist);
                break;

            case 3:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemUsedSomewhereElse);
                break;

            default:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UnexpectedError);
                break;
            }
            return(RedirectToAction("TransactionLogs"));
        }
        //ApplicationErrorLog applicationErrorLog = new ApplicationErrorLog();

        public async Task <TransactionEntity> InsertTransactionAsync(TransactionEntity transaction, bool isUserPerformed = false)
        {
            await _insertTransactionSemaphoreSlim.WaitAsync();

            try
            {
                int tId = await _transactionModel.InsertTransactionAsync(transaction, isUserPerformed);

                transaction = await _transactionModel.GetTransactionByIdAsync(tId);

                IList <TransactionEntity> transactions = Transactions.ToList();
                transactions.Add(transaction);

                double startingBalance = CurrentUser.CurrentBalance;
                double newBalance      = startingBalance + ((transaction.IsIncome ? 1 : -1) * transaction.Amount);

                await _userModel.UpdateUserCurrentBalanceAsync(newBalance);

                UserEntity userEntity = await _userModel.GetUserDetailsAsync();

                TransactionLogEntity transactionLog = new TransactionLogEntity()
                {
                    Amount                 = transaction.Amount,
                    IsIncome               = transaction.IsIncome,
                    IsDeletedTransaction   = false,
                    ScheduledTransactionId = transaction.ScheduledTransactionId,
                    TransactionDateTime    = transaction.TransactionDateTime,
                    CreatedDateTime        = DateTime.Now,
                    IsUserPerformed        = isUserPerformed,
                    TransactionId          = transaction.Id,
                    TransactionPartyId     = transaction.TransactionPartyId,
                    Remarks                = $"Transaction: {transaction.ReferenceNumber} Added",
                    StartingBalance        = startingBalance,
                    FinalBalance           = newBalance,
                };

                int tlId = await _transactionLogModel.InsertTransactionLogAsync(transactionLog);

                transactionLog = await _transactionLogModel.GetTransactionLogByIdAsync(tlId);

                IList <TransactionLogEntity> transactionLogs = TransactionLogs.ToList();
                transactionLogs.Add(transactionLog);

                Transactions    = transactions;
                TransactionLogs = transactionLogs;
                CurrentUser     = userEntity;

                return(transaction);
            }
            catch (Exception k)
            {
                applicationErrorLog.ErrorLog("Transaction", "Insert onetime transaction", k.ToString());
                return(transaction);
            }
            finally
            {
                _insertTransactionSemaphoreSlim.Release();
            }
        }
        public async Task <TransactionEntity> UpdateTransactionAsync(TransactionEntity transaction)
        {
            TransactionEntity beforeTransaction = await _transactionModel.GetTransactionByIdAsync(transaction.Id);

            await _transactionModel.UpdateTransactionAsync(transaction);

            TransactionEntity afterTransaction = await _transactionModel.GetTransactionByIdAsync(transaction.Id);

            //get diffrent amount
            double differenceIncome = (afterTransaction.IsIncome ? 1 : -1) * afterTransaction.Amount - (beforeTransaction.IsIncome ? 1 : -1) * beforeTransaction.Amount;

            double startingBalance = CurrentUser.CurrentBalance;
            double newBalance      = startingBalance + differenceIncome;

            await _userModel.UpdateUserCurrentBalanceAsync(newBalance);

            UserEntity userEntity = await _userModel.GetUserDetailsAsync();

            TransactionLogEntity transactionLog = new TransactionLogEntity()
            {
                Amount                 = Math.Abs(differenceIncome),
                IsIncome               = differenceIncome > 0,
                IsDeletedTransaction   = false,
                ScheduledTransactionId = transaction.ScheduledTransactionId,
                TransactionDateTime    = transaction.TransactionDateTime,
                CreatedDateTime        = DateTime.Now,
                IsUserPerformed        = true,
                TransactionId          = transaction.Id,
                TransactionPartyId     = transaction.TransactionPartyId,
                Remarks                = $"Transaction: {beforeTransaction.ReferenceNumber} Updated; Diff: {differenceIncome}",
                StartingBalance        = startingBalance,
                FinalBalance           = newBalance,
            };

            int tlId = await _transactionLogModel.InsertTransactionLogAsync(transactionLog);

            transactionLog = await _transactionLogModel.GetTransactionLogByIdAsync(tlId);

            IList <TransactionLogEntity> transactionLogs = TransactionLogs.ToList();

            transactionLogs.Add(transactionLog);

            IEnumerable <TransactionEntity> transactions = await _transactionModel.GetTransactionsAsync();

            Transactions    = transactions;
            TransactionLogs = transactionLogs;
            CurrentUser     = userEntity;

            return(afterTransaction);
        }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            TransactionLogs = await _context.TransactionLogs.FirstOrDefaultAsync(m => m.Id == id);

            if (TransactionLogs == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public ActionResult TransactionLogs(BackEndTransactionLogList backEndTransactionLogList)
        {
            TransactionLogs transactionLogs = new TransactionLogs();

            backEndTransactionLogList.TransactionLogs = transactionLogs.GetAll(
                backEndTransactionLogList.TransationDate,
                backEndTransactionLogList.UserId,
                backEndTransactionLogList.Nick,
                backEndTransactionLogList.Reason
                );
            if (backEndTransactionLogList.TransactionLogs.IsNull() || backEndTransactionLogList.TransactionLogs.Count == 0)
            {
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.NoDataFound);
            }
            return(View(backEndTransactionLogList));
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            TransactionLogs = await _context.TransactionLogs.FindAsync(id);

            if (TransactionLogs != null)
            {
                _context.TransactionLogs.Remove(TransactionLogs);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public async Task DeleteTransactionAsync(int id)
        {
            await _transactionModel.DeleteTransactionAsync(id);

            TransactionEntity transaction = await _transactionModel.GetTransactionByIdAsync(id);

            double startingBalance = CurrentUser.CurrentBalance;
            double newBalance      = startingBalance + (transaction.IsIncome ? -1 : 1) * transaction.Amount; // Reversed because transaction deleted

            await _userModel.UpdateUserCurrentBalanceAsync(newBalance);

            UserEntity userEntity = await _userModel.GetUserDetailsAsync();

            TransactionLogEntity transactionLog = new TransactionLogEntity()
            {
                Amount                 = transaction.Amount,
                IsIncome               = !transaction.IsIncome,
                IsDeletedTransaction   = true,
                ScheduledTransactionId = transaction.ScheduledTransactionId,
                TransactionDateTime    = DateTime.Now,
                CreatedDateTime        = DateTime.Now,
                IsUserPerformed        = true,
                TransactionId          = transaction.Id,
                TransactionPartyId     = transaction.TransactionPartyId,
                Remarks                = $"Transaction: {transaction.ReferenceNumber} Deleted",
                StartingBalance        = startingBalance,
                FinalBalance           = newBalance,
            };

            int tlId = await _transactionLogModel.InsertTransactionLogAsync(transactionLog);

            transactionLog = await _transactionLogModel.GetTransactionLogByIdAsync(tlId);

            IList <TransactionLogEntity> transactionLogs = TransactionLogs.ToList();

            transactionLogs.Add(transactionLog);

            IList <TransactionEntity> transactions       = Transactions.ToList();
            TransactionEntity         deletedTransaction = transactions.First(tp => tp.Id == id);

            deletedTransaction.IsActive = false;

            Transactions    = transactions;
            TransactionLogs = transactionLogs;
            CurrentUser     = userEntity;
        }
        public ActionResult TransactionLogAddEdit(BackEndTransactionLogAddEdit transactionLogAddEdit)
        {
            string          username   = BackEndSessions.CurrentUser.UserName;
            TransactionLogs categories = new TransactionLogs();
            long?           currentId  = transactionLogAddEdit.Id;

            if (ModelState.IsValidOrRefresh())
            {
                var rs = categories.AddEdit(
                    currentId,
                    transactionLogAddEdit.Id_Fighting,
                    transactionLogAddEdit.TransationDate.ToDateTime(),
                    transactionLogAddEdit.ReceiveAccount,
                    transactionLogAddEdit.TransationType,
                    transactionLogAddEdit.Amount,
                    transactionLogAddEdit.UserId,
                    transactionLogAddEdit.Nick,
                    transactionLogAddEdit.Reason,
                    transactionLogAddEdit.Status,
                    transactionLogAddEdit.ErrorMessage,
                    transactionLogAddEdit.Created_At.ToDateTime(),
                    transactionLogAddEdit.Updated_At.ToDateTime(),
                    username
                    );
                switch (rs)
                {
                case 0:
                    ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.ItemSuccessfullyAddEdit);
                    break;

                case 2:
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemDoesNotExist);
                    break;

                default:
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UnexpectedError);
                    break;
                }
            }
            return(View(transactionLogAddEdit));
        }
Exemple #12
0
        public static TransactionLogs ExtractAMSData(FTPSClient client, string directory, TransactionLogs tl)
        {
            TransactionLogs amstl = new TransactionLogs();

            amstl.TimeRecorded = tl.TimeRecorded;
            amstl.SaleNo       = tl.SaleNo;
            amstl.Filename     = tl.Filename;

            try
            {
                // Download file
                string tempFile = directory + "temp";
                client.GetFile(tl.Filename, tempFile);
                // Extract sale number and description
                XmlTextReader reader = new XmlTextReader(tempFile);

                amstl = ExtractAMSXMLData(tempFile, tl);

                // Delete temp file
                File.Delete(tempFile);
            }
            catch (FTPCommandException fce)
            {
                LogMsg("FTP Command problem " + fce.InnerException + " Error Code " + fce.ErrorCode + " File " + tl.Filename);
//                MessageBox.Show("FTP Command problem " + fce.InnerException);
            }
            catch (FTPException fe)
            {
                LogMsg("FTP problem " + fe.InnerException);
//                MessageBox.Show("FTP problem " + fe.InnerException);
            }


            catch (IOException ie)
            {
                LogMsg("IO problem " + ie.InnerException);
            }

            return(amstl);
        }
Exemple #13
0
        public static TransactionLogs ExtractAMSXMLData(string tempFile, TransactionLogs tl)
        {
            TransactionLogs amstl = new TransactionLogs();

            amstl.TimeRecorded = tl.TimeRecorded;
            amstl.SaleNo       = tl.SaleNo;
            amstl.Filename     = tl.Filename;

            // Extract sale number and description
            XmlTextReader reader = new XmlTextReader(tempFile);

            try
            {
                string field1 = "";
                string field2 = "";
                string field3 = "";
                string field4 = "";
                bool   Done   = false;

                while ((reader.Read()) && (Done == false))
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.IndexOf("transcript") > -1)
                        {
                            field1 = "";
                            field2 = "";
                            field3 = "";
                            field4 = "";
                        }

                        if (reader.Name.IndexOf("sale") > -1)
                        {
                            amstl.AMSSaleCode = reader["id"];
                            amstl.SaleNo      = reader["id"];
                        }
                        if (reader.IsEmptyElement)
                        {
                            // Do nothing
                        }
                        else if (field1.Length == 0)
                        {
                            field1 = reader.Name;
                        }
                        else if (field2.Length == 0)
                        {
                            field2 = reader.Name;
                        }
                        else if (field3.Length == 0)
                        {
                            field3 = reader.Name;
                        }
                        else
                        {
                            field4 = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (field2.IndexOf("date") > -1)
                        {
                            field2 = "";
                        }
                        if (field3.IndexOf("date") > -1)
                        {
                            amstl.AMSSaleDate = Convert.ToDateTime(reader.Value).ToString("dd/MM/yyyy HH:mm");
                            amstl.AMSSaleDate = Convert.ToDateTime(reader.Value).ToString("MM/dd/yyyy HH:mm");
                            field3            = "";
                        }
                        if (field3.Length > 0)
                        {
                            if (field3.IndexOf("description") > -1)
                            {
                                amstl.AMSDescription = reader.Value;
                                field3 = "";
                            }
                            if (field3.IndexOf("code") > -1)
                            {
                                amstl.AMSSaleCode = reader.Value;
                                amstl.SaleNo      = reader["id"];
                                field3            = "";
                            }
                            if (field3.IndexOf("site") > -1)
                            {
                                amstl.AMSSite = reader.Value;
                                field3        = "";
                            }
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.IndexOf("sale") > -1)
                        {
                            Done = true;
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (IOException ie)
            {
                LogMsg(ie);
            }
            catch (XmlException xe)
            {
//                MessageBox.Show(xe.Message);
                LogMsg(xe);
            }

            reader.Close();
            return(amstl);
        }