Exemplo n.º 1
0
        public IEnumerable <UserTransactionDetails> GetTransactions(int?userId, DateTime?dateOfTransaction)
        {
            Log.Information("File Name: " + _stackFrame.GetMethod().DeclaringType.Name + ".cs " + "NameSpace: " + _stackFrame.GetMethod().DeclaringType.Namespace + " Method Name: GetTransactions() ");
            List <UserTransactionDetails> userTransactionDetails = new List <UserTransactionDetails>();

            try
            {
                var transactions = (from user in _context.Users
                                    join tran in _context.Transactions
                                    on user.UserId equals tran.UserId
                                    join sCard in _context.ScratchCards
                                    on tran.ScratchCardGUID equals sCard.ScratchCardGUID
                                    let balanceAmount = sCard.Amount
                                                        where (user.UserId == userId || userId == null) && (tran.DateofTransaction == dateOfTransaction || dateOfTransaction == null)
                                                        select new
                {
                    user.FirstName,
                    user.LastName,
                    tran.Amount,
                    tran.DateofTransaction,
                    balanceAmount,
                    sCard.ScratchCardGUID
                }
                                    ).ToList();

                foreach (var tran in transactions)
                {
                    UserTransactionDetails transactionDetail = new UserTransactionDetails()
                    {
                        FirstName         = tran.FirstName,
                        LastName          = tran.LastName,
                        TransactionAmount = tran.Amount,
                        DateofTransaction = tran.DateofTransaction,
                        BalanceAmount     = tran.balanceAmount,
                        ScratchCardGUID   = tran.ScratchCardGUID
                    };
                    userTransactionDetails.Add(transactionDetail);
                }
                Log.Information("File Name: " + _stackFrame.GetMethod().DeclaringType.Name + ".cs " + "GetTransactions() Method Executed Successfully");
                return(userTransactionDetails);
            }
            catch (Exception ex)
            {
                Log.Error("Error Message: " + ex.Message + " " + ex.StackTrace);
                throw;
            }
        }
        public async Task <GetUserTransactionsResponse> Handle(GetUserTransactionRequest request, CancellationToken cancellationToken)
        {
            try
            {
                GetUserTransactionsResponse   getUserTransactionsResponse = new GetUserTransactionsResponse();
                List <UserTransactionDetails> listUserTransactionDetails  = new List <UserTransactionDetails>();
                string nativeCurrency = string.Empty;
                using (var connection = new SqlConnection(_connectionString))
                {
                    connection.Open();
                    using (var command = new SqlCommand("sp_GetTransactionsForUser", connection))
                    {
                        command.CommandType    = CommandType.StoredProcedure;
                        command.CommandTimeout = 60;
                        command.Parameters.Add(new SqlParameter
                        {
                            ParameterName = "@SignInName",
                            Direction     = ParameterDirection.Input,
                            SqlDbType     = SqlDbType.NVarChar,
                            Value         = request.SignInName
                        });
                        var reader = command.ExecuteReader();
                        if (!reader.HasRows)
                        {
                            return(null);
                        }
                        while (reader.Read())
                        {
                            UserTransactionDetails userTransactionDetails = new UserTransactionDetails();
                            userTransactionDetails.Transactionid = await reader.IsDBNullAsync(0) ? 0 : await reader.GetFieldValueAsync <int>(0);

                            userTransactionDetails.TransactionName = await reader.IsDBNullAsync(1) ? string.Empty : await reader.GetFieldValueAsync <string>(1);

                            userTransactionDetails.Amount = await reader.IsDBNullAsync(2) ? 0 : await reader.GetFieldValueAsync <decimal>(2);

                            nativeCurrency = await reader.IsDBNullAsync(3) ? string.Empty : await reader.GetFieldValueAsync <string>(3);

                            userTransactionDetails.TransactionDate = await reader.IsDBNullAsync(4) ? System.DateTime.Now : await reader.GetFieldValueAsync <System.DateTime>(4);

                            listUserTransactionDetails.Add(userTransactionDetails);
                        }

                        //var query = listUserTransactionDetails.AsQueryable();
                        //var filterBy = request.filteringParams.FilterBy.Trim().ToLowerInvariant();
                        //List<decimal> d = new List<decimal>();
                        ////d.Where<>
                        //if (!string.IsNullOrEmpty(filterBy))
                        //{
                        //    //query = listUserTransactionDetails
                        //    //       .Where(m => m.LeadActor.ToLowerInvariant().Contains(filterBy)
                        //    //       || m.Title.ToLowerInvariant().Contains(filterBy)
                        //    //       || m.Summary.ToLowerInvariant().Contains(filterBy));
                        //    //query = query
                        //    //     .Where(m => m.TransactionName.ToLowerInvariant().Contains(filterBy));
                        //    //query = query.Where(m => m.Amount.CompareTo(10.0);
                        //}

                        getUserTransactionsResponse.Currency = nativeCurrency;
                        //getUserTransactionsResponse.UserTransactionDetails = new UserTransactionDetails();
                        getUserTransactionsResponse.UserTransactionDetails = listUserTransactionDetails;
                    }
                }
                return(getUserTransactionsResponse);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }