public async Task <FileDto> GetTransactionsToExcel(GetAllTransactionsInput input) { var filteredTransactions = _transactionRepository.GetAll().AppendTransactionMainFilter(input, AbpSession.UserId); var transactions = from o in filteredTransactions join o1 in _bookingRepository.GetAll() on o.BookingId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join o2 in _tourRepository.GetAll() on s1.TourId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() select new GetTransactionForViewDto() { Transaction = new TransactionDto { Id = o.Id, TransactionDate = o.TransactionDate, Amount = o.Amount, BookingId = o.BookingId, CardNumber = o.CardNumber.Substring(o.CardNumber.Length - 4), NameOnCard = o.NameOnCard, Status = o.Status }, TourName = s2.Name, BookingCode = "B-" + s1.Id }; var result = await transactions.OrderBy(input.Sorting ?? "Transaction.Id asc").ToListAsync(); return(_transactionsExcelExporter.ExportToFile(result)); }
public async Task <PagedResultDto <GetTransactionForViewDto> > GetAll(GetAllTransactionsInput input) { var filteredTransactions = _transactionRepository.GetAll() .Where(x => x.Manual == 1) .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Time.Contains(input.Filter) || e.Address.Contains(input.Filter) || e.Reason.Contains(input.Filter) || e.Remark.Contains(input.Filter)) .WhereIf(input.MinTransTypeFilter != null, e => e.TransType >= input.MinTransTypeFilter) .WhereIf(input.MaxTransTypeFilter != null, e => e.TransType <= input.MaxTransTypeFilter); var pagedAndFilteredTransactions = filteredTransactions .OrderBy(input.Sorting ?? "id asc") .PageBy(input); var transactions = from o in pagedAndFilteredTransactions join o1 in _lookup_userRepository.GetAll() on o.Pin equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join o2 in _lookup_machineRepository.GetAll() on o.MachineId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() select new GetTransactionForViewDto() { Transaction = new TransactionDto { TransType = o.TransType, KeyType = o.KeyType, CreationTime = o.CreationTime, Transaction_Date = o.Transaction_Date, Pin = o.Pin, Time = o.Time, Id = o.Id, ProjectManagerApprove = o.ProjectManagerApprove, UnitManagerApprove = o.UnitManagerApprove }, UserName = s1 == null ? "" : s1.Name.ToString(), MachineNameEn = s2 == null ? "" : s2.NameEn.ToString(), MachineId = s2.Id, }; var totalCount = await filteredTransactions.CountAsync(); return(new PagedResultDto <GetTransactionForViewDto>( totalCount, await transactions.ToListAsync() )); }
public static IQueryable <Transaction> AppendTransactionMainFilter(this IQueryable <Transaction> existingQuery, GetAllTransactionsInput input, long?UserId) { existingQuery = existingQuery.WhereIf(!string.IsNullOrWhiteSpace(input.Query), e => false || e.NameOnCard.Contains(input.Query) || e.BookingFk.Name.Contains(input.Query) || e.BookingFk.Email.Contains(input.Query)); switch (input.Mode) { case "CustomerTransactions": existingQuery = existingQuery.Where(transaction => transaction.BookingFk.TourFk.UserId == UserId); break; case "CancellationRequests": existingQuery = existingQuery.Where(transaction => transaction.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(transaction => transaction.Status == "Cancellation Requested"); break; case "PendingRequests": existingQuery = existingQuery.Where(transaction => transaction.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(transaction => transaction.Status == "Pending"); break; default: existingQuery = existingQuery.Where(e => e.BookingFk.UserId == UserId); break; } return(existingQuery); }