public async Task <ActionResult <ResultFormat> > GetSecure([FromQuery] TransactionsQuery query) { return(new ResultFormat() { Results = (await _Repository.GetTransactions(query)).ToList() }); }
public async Task SpecificOrderByAmountDescTransactions() { var query = new TransactionsQuery(); query.OrderBy = "amount_desc"; var transactions = await GetTransactions(query); Assert.True(transactions.First().AmountInCent == 267330); }
public async Task SpecificOrderByDateDescTransactions() { var query = new TransactionsQuery(); query.OrderBy = "date_desc"; var transactions = await GetTransactions(query); Assert.True(transactions.First().AcquirerAuthorizationDateTime == DateTime.Parse("2018-03-01T01:03:19")); }
public async Task SpecificOrderByDateAscTransactions() { var query = new TransactionsQuery(); query.OrderBy = "date_asc"; var transactions = await GetTransactions(query); Assert.True(transactions.First().AcquirerAuthorizationDateTime == DateTime.Parse("2018-02-28T22:43:56")); }
public async Task SpecificPageTransactions() { var query = new TransactionsQuery(); query.Page = 2; var transactions = await GetTransactions(query); Assert.Equal(20, transactions.Count); }
public async Task SpecificStatusTransactions() { var query = new TransactionsQuery(); query.Status.Add("Recusada"); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(18, transactions.Count); }
public async Task SpecificDateTransactions() { var query = new TransactionsQuery(); query.Date.Add(DateTime.Parse("2018-03-01")); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(113, transactions.Count); }
public async Task VisaTransactions() { var query = new TransactionsQuery(); query.Brand.Add("Visa"); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.True(transactions.Where(e => e.CardBrandName == "Visa").Count() == transactions.Count && transactions.Count > 0); }
public async Task SpecificCnpjTransactions() { var query = new TransactionsQuery(); query.Cnpj.Add("15593743000351"); query.Cnpj.Add("28176030000172"); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(12, transactions.Count); }
public async Task SpecificAcquirerTransactions() { var query = new TransactionsQuery(); query.Acquirer.Add("Stone"); query.Acquirer.Add("Cielo"); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(131, transactions.Count); }
public async Task SpecificIdTransactions() { var query = new TransactionsQuery(); query.Id = 20; var transactions = await GetTransactions(query); Assert.True(transactions.First().AmountInCent == 24000); Assert.True(transactions.First().CardBrandName == "Visa"); Assert.True(transactions.First().AcquirerName == "Getnet"); }
public async Task SpecificAmountTransactions() { var query = new TransactionsQuery(); query.AmountMin = 1; query.AmountMax = 1000; query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(29, transactions.Count); }
public async Task SpecificPeriodTransactions() { var query = new TransactionsQuery(); query.DateMin = DateTime.Parse("2018-03-01T00:55:36"); query.DateMax = DateTime.Parse("2018-03-01T01:02:38"); query.PageSize = 200; var transactions = await GetTransactions(query); Assert.Equal(7, transactions.Count); }
public IActionResult GetTransactions(int id, int page) { var query = new TransactionsQuery().Get(_context, id, 20, page); return(PartialView("_TransactionsPartial", new TransactionsViewModel() { Transactions = query.Transactions, Id = id, Page = page + 1, HasMore = query.HasMore })); }
// I/O tasks are done asynchronously to improve performance when the server // is receiving thousands of requests per minute. public async Task <IEnumerable <Transaction> > GetTransactions(TransactionsQuery query) { // TransactionId is unique, so there's no need to create a complex query. if (query.Id != 0) { return(await _Context.Set <Transaction>().Where(e => e.TransactionId == query.Id).ToListAsync()); } var queriable = _Context.Set <Transaction>() .Where(e => query.Brand.Count == 0 ? true : query.Brand.Contains(e.CardBrandName)) .Where(e => query.Cnpj.Count == 0 ? true : query.Cnpj.Contains(e.MerchantCnpj)) .Where(e => query.Date.Count == 0 ? true : query.Date.Contains(e.AcquirerAuthorizationDateTime.Date)) .Where(e => query.Acquirer.Count == 0 ? true : query.Acquirer.Contains(e.AcquirerName)) .Where(e => query.Status.Count == 0 ? true : query.Status.Contains(e.Status)) .Where(e => query.DateMin == default(DateTime) ? true : e.AcquirerAuthorizationDateTime >= query.DateMin) .Where(e => query.DateMax == default(DateTime) ? true : e.AcquirerAuthorizationDateTime <= query.DateMax) .Where(e => query.AmountMin == 0 ? true : e.AmountInCent >= query.AmountMin) .Where(e => query.AmountMax == 0 ? true : e.AmountInCent <= query.AmountMax); switch (query.OrderBy) { case "date_asc": queriable = queriable.OrderBy(t => t.AcquirerAuthorizationDateTime); break; case "date_desc": queriable = queriable.OrderByDescending(t => t.AcquirerAuthorizationDateTime); break; case "amount_asc": queriable = queriable.OrderBy(t => t.AmountInCent); break; case "amount_desc": queriable = queriable.OrderByDescending(t => t.AmountInCent); break; } return(await queriable .Skip((query.Page - 1) *query.PageSize) .Take(query.PageSize) .ToListAsync()); }
public async Task <IActionResult> Get(Paging paging, TransactionsQuery filter) { var transactions = await transactionService.GetTransactionsAsync(User.GetUserId(), paging, filter); if (transactions == null) { return(StatusCode(204, new ErrorResponse { StatusCode = 204, Message = "Not found" })); } var result = mapper.Map <IEnumerable <Transaction>, IEnumerable <TransactionViewModel> >(transactions) as List <TransactionViewModel>; result.ForEach(x => { x.Type = x.Sender.Email == User.Identity.Name ? TransactionType.Credit : TransactionType.Debit; x.Correspondent = x.Sender.Email == User.Identity.Name ? x.Recipient : x.Sender; }); return(Ok(result)); }
public async Task <TransactionsResponse> GetTransactions(TransactionsQuery transactionsQuery) { if (transactionsQuery is null) { throw new ArgumentNullException(nameof(transactionsQuery)); } var validator = new TransactionsQuery.Validator(); validator.Validate(transactionsQuery); var flurlRequest = _flurlClient.Request(BaseApiUrlString) .AppendPathSegment("api/transactions/v3/transactions") .WithHeader("Accept", "application/json") .SetQueryParam("matterReference", transactionsQuery.MatterReference) .SetQueryParam("periodStart", transactionsQuery.PeriodStart) .SetQueryParam("periodEnd", transactionsQuery.PeriodEnd) .SetQueryParam("transId", transactionsQuery.TransId) .SetQueryParam("userType", transactionsQuery.UserType switch { UserType.AllChildren => "allChildren", UserType.JustMe => "justMe", _ => null });
public void BuildQueryString_FullyPopulatedQueryObject_AddsAllFields() { var query = new TransactionsQuery { Limit = 10, FromTime = new DateTime(2020, 03, 01), ToTime = new DateTime(2020, 04, 01), FromTransaction = "123", ToTransaction = "456", Authors = new List <string> { "Author1", "Author2" }, Reverse = true }; Assert.Equal("authors=Author1%2cAuthor2" + "&fromTime=2020-03-01T00%3a00%3a00.0000000" + "&toTime=2020-04-01T00%3a00%3a00.0000000" + "&fromTransaction=123" + "&toTransaction=456" + "&limit=10" + "&reverse=true" + "&excludeContent=true", query.BuildQueryString()); }
public JsonResult Accounts(int id, int limit, int offset) { var transactions = new TransactionsQuery().Get(_context, id, limit, offset); return(new JsonResult(transactions)); }
public async Task <TransactionsQueryResult> GetAll(TransactionsQuery query) { return(await QueryBus.Execute <TransactionsQuery, TransactionsQueryResult>(query)); }
public async Task <IEnumerable <Transaction> > GetTransactionsAsync(Guid id, Paging paging, TransactionsQuery filter) { Func <IQueryable <Transaction>, IQueryable <Transaction> > query = q => { //Include q = q.IncludeData(x => x.Recipient).IncludeData(x => x.Sender); //OrderBy if (string.IsNullOrEmpty(filter.OrderBy)) { q = q.OrderByDescending(x => x.PropValue <Transaction>("datecreate")); } else if (filter.OrderBy.ToLower() == "name") { q = q.OrderBy(x => x.SenderId == id ? x.Recipient.Name : x.Sender.Name); } else { q = q.OrderBy(x => x.PropValue <Transaction>(filter.OrderBy)); } q = q.Where(x => x.SenderId == id || x.RecipientId == id); //Filter if (filter.Mode == Mode.Sent) { q = q.Where(x => x.SenderId == id); } else if (filter.Mode == Mode.Received) { q = q.Where(x => x.RecipientId == id); } //this need sf/sp :( /* * exec sp_executesql N'SELECT [x].[TransactionId], [x].[Amount], [x].[DateCreate], [x].[Message], [x].[RecipientId], [x].[SenderId], [u].[UserId], [u].[DateCreate], [u].[Email], [u].[Name], [u].[Password], [u].[Salt], [u0].[UserId], [u0].[DateCreate], [u0].[Email], [u0].[Name], [u0].[Password], [u0].[Salt] * FROM [Transactions] AS [x] * INNER JOIN [Users] AS [u] ON [x].[RecipientId] = [u].[UserId] * INNER JOIN [Users] AS [u0] ON [x].[SenderId] = [u0].[UserId] * WHERE ([x].[SenderId] = @__id_0) OR ([x].[RecipientId] = @__id_1)',N'@__id_0 uniqueidentifier,@__id_1 uniqueidentifier',@__id_0='0505AB75-941B-E711-9687-BCEE7B5B2BE5',@__id_1='0505AB75-941B-E711-9687-BCEE7B5B2BE5' * go */ if (!string.IsNullOrEmpty(filter.Party)) { q = q.Where(x => x.Recipient.Name.ToLower().Contains(filter.Party.ToLower()) || x.Sender.Name.ToLower().Contains(filter.Party.ToLower())); } //very very low performance if (!string.IsNullOrEmpty(filter.Search)) { decimal? value = decimal.TryParse(filter.Search, out decimal tmp) ? tmp : (decimal?)null; DateTime?date = DateTime.TryParse(filter.Search, out DateTime dTmp) ? dTmp : (DateTime?)null; if (value.HasValue) { q = q.Where(x => x.Amount == value.Value); } else if (date.HasValue) { q = q.Where(x => x.DateCreate.CompareTo(date.Value) == 0); } else { q = q.Where(x => x.Recipient.Name.ToLower().Contains(filter.Search.ToLower()) || x.Sender.Name.ToLower().Contains(filter.Search.ToLower())); } } //Paging q = q.Skip(paging.Skip).Take(paging.Take); return(q); }; return(await transactionRepository.GetAsync(query)); }
public IEnumerable <Transaction> GetTransactions(Guid id, Paging paging, TransactionsQuery filter) { throw new NotImplementedException(); }
public void BuildQueryString_EmptyQueryObject_AddsDefaultFieldsOnly() { var query = new TransactionsQuery(); Assert.Equal("reverse=false&excludeContent=true", query.BuildQueryString()); }
public IEnumerable <TransactionDTO> Execute(TransactionsQuery context) { var entities = _unitOfWork.TransactionRepository.GetAllTransactionsWithLedger().ToList(); return(Mapper.Map <IEnumerable <Transaction>, IEnumerable <TransactionDTO> >(entities)); }
private async Task <List <Transaction> > GetTransactions(TransactionsQuery query) { return((await _Repository.GetTransactions(query)).ToList()); }