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; } }