Beispiel #1
0
        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));
        }
Beispiel #2
0
        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()
                       ));
        }
Beispiel #3
0
        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);
        }