Example #1
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);
        }
Example #2
0
        public static IEnumerable <string> GetTopics(
            this TransactionLogEntity entity)
        {
            yield return(entity.Topic0);

            if (entity.Topic1 != null)
            {
                yield return(entity.Topic1);
            }
            else
            {
                yield break;
            }

            if (entity.Topic2 != null)
            {
                yield return(entity.Topic2);
            }
            else
            {
                yield break;
            }

            if (entity.Topic3 != null)
            {
                yield return(entity.Topic3);
            }
        }
        public async Task AddAsync(TransactionLogEntity entity)
        {
            var repository = _efUnitOfWork.CommandRepository <TransactionLogEntity>();

            await repository.AddAsync(entity);

            await _efUnitOfWork.SaveChangesAsync(default);
        //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();
            }
        }
Example #5
0
 public TransactionLogBinder(TransactionLogEntity transactionLog, TransactionPartyEntity transactionParty)
 {
     TransactionDate      = transactionLog.TransactionDateTime;
     Remarks              = transactionLog.Remarks;
     Amount               = (transactionLog.IsIncome ? transactionLog.Amount : -1.0 * transactionLog.Amount).ToString("0.00");
     Balance              = (transactionLog.FinalBalance).ToString("0.00");
     TransactionPartyCode = transactionParty.Code;
 }
Example #6
0
        public async Task LogErrorAsync(string invalidTransactionsJson)
        {
            var logEntity = new TransactionLogEntity()
            {
                CreatedAt = DateTime.UtcNow,
                LogType   = LogType.Error,
                InvalidTransactionsJson = invalidTransactionsJson
            };

            await _transactionLogRepository.AddAsync(logEntity);
        }
Example #7
0
 protected override void OnLykkeModelCreating(
     ModelBuilder modelBuilder)
 {
     ABIEntity.OnLykkeModelCreating(modelBuilder);
     EventEntity.OnLykkeModelCreating(modelBuilder);
     EventParameterEntity.OnLykkeModelCreating(modelBuilder);
     FunctionCallEntity.OnLykkeModelCreating(modelBuilder);
     FunctionCallParameterEntity.OnLykkeModelCreating(modelBuilder);
     TransactionEntity.OnLykkeModelCreating(modelBuilder);
     TransactionLogEntity.OnLykkeModelCreating(modelBuilder);
 }
 public TransactionLogBinder(TransactionLogEntity transactionLog, TransactionPartyEntity transactionParty)
 {
     TransactionDate  = transactionLog.TransactionDateTime.ToString("dd-MM-yyyy h:mm tt");
     Remarks          = transactionLog.Remarks;
     Amount           = (transactionLog.IsIncome ? transactionLog.Amount : -1.0 * transactionLog.Amount).ToString("0.00");
     Balance          = (transactionLog.FinalBalance).ToString("0.00");
     TransactionParty = transactionParty.Code;
     isDeleted        = transactionLog.IsDeletedTransaction == true ? "Yes" : "No";
     Type             = transactionLog.ScheduledTransactionId == null ? "One Time" : "Scheduled";
     CreatedDate      = transactionLog.CreatedDateTime.ToString("dd-MM-yyyy h:mm tt");
     PerformedBy      = transactionLog.IsUserPerformed ? "User" : "System";
 }
        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);
        }
Example #10
0
        public static TransactionLog ToDto(this TransactionLogEntity src)
        {
            if (src == null)
            {
                throw new ArgumentNullException(nameof(src));
            }

            return(new TransactionLog
            {
                Address = src.Address,
                LogIndex = src.LogIndex,
                TransactionHash = src.TransactionHash,
                Topics = src.GetTopics().ToArray(),
                BlockTimestamp = src.BlockTimestamp
            });
        }
        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 async Task SaveDecodedAsync(IEnumerable <Tuple <long, string> > transactionLogs)
        {
            using (var context = _contextFactory.CreateDataContext())
            {
                foreach (var txLog in transactionLogs)
                {
                    var e = new TransactionLogEntity
                    {
                        LogIndex = txLog.Item1, TransactionHash = txLog.Item2
                    };

                    context.TransactionLogs.Attach(e);

                    e.Decoded = true;
                }

                await context.SaveChangesAsync();
            }
        }
        public void Insert(TransactionLogEntity request)
        {
            var parameter = new[]
            {
                new SqlParameter("@AccountId", request.AccountId),
                new SqlParameter("@TransactionType", request.TransactionType),
                new SqlParameter("@TransactionDate", request.TransactionDate),
                new SqlParameter("@Amount", request.Amount),
                new SqlParameter("@DestinationAccountId", request.DestinationAccountId),
            };

            using (var conn = new SqlConnection(SQLHelper.GetConnectionString()))
            {
                SQLHelper.ExecuteNonQuery(
                    conn,
                    CommandType.Text,
                    @"INSERT INTO dbo.TransactionLog
                    (AccountId, TransactionType, TransactionDate, Amount, DestinationAccountId)
                    SELECT @AccountId, @TransactionType, @TransactionDate, @Amount, @DestinationAccountId",
                    parameter);
            }
        }
Example #14
0
        public async Task <int> InsertTransactionLogAsync(TransactionLogEntity transactionLogEntity)
        {
            string query = "INSERT INTO `TransactionLog`" +
                           "(`TransactionId`,`ScheduledTransactionId`,`TransactionPartyId`,`IsDeletedTransaction`,`IsIncome`,`TransactionDateTime`,`Amount`,`StartingBalance`,`FinalBalance`,`Remarks`,`CreatedDateTime`,`IsUserPerformed`) " +
                           "VALUES(@TransactionId,@ScheduledTransactionId,@TransactionPartyId,@IsDeletedTransaction,@IsIncome,@TransactionDateTime,@Amount,@StartingBalance,@FinalBalance,@Remarks,@CreatedDateTime,@IsUserPerformed);";

            IEnumerable <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >()
            {
                new KeyValuePair <string, object>("@TransactionId", transactionLogEntity.TransactionId),
                new KeyValuePair <string, object>("@ScheduledTransactionId", transactionLogEntity.ScheduledTransactionId),
                new KeyValuePair <string, object>("@TransactionPartyId", transactionLogEntity.TransactionPartyId),
                new KeyValuePair <string, object>("@IsDeletedTransaction", transactionLogEntity.IsDeletedTransaction ? 1 : 0),
                new KeyValuePair <string, object>("@IsIncome", transactionLogEntity.IsIncome ? 1 : 0),
                new KeyValuePair <string, object>("@Amount", transactionLogEntity.Amount),
                new KeyValuePair <string, object>("@StartingBalance", transactionLogEntity.StartingBalance),
                new KeyValuePair <string, object>("@FinalBalance", transactionLogEntity.FinalBalance),
                new KeyValuePair <string, object>("@Remarks", transactionLogEntity.Remarks),
                new KeyValuePair <string, object>("@TransactionDateTime", TimeConverterMethods.ConvertDateTimeToTimeStamp(transactionLogEntity.TransactionDateTime)),
                new KeyValuePair <string, object>("@CreatedDateTime", TimeConverterMethods.ConvertDateTimeToTimeStamp(transactionLogEntity.CreatedDateTime)),
                new KeyValuePair <string, object>("@IsUserPerformed", transactionLogEntity.IsUserPerformed ? 1 : 0)
            };

            return(await SqliteConnector.ExecuteInsertQueryAsync(query, parameters, true));
        }