Exemplo n.º 1
0
        public async Task <int> GetInvitationsCountAsync(string searchText, SoftwareVaultInvitationFilter filter)
        {
            var query = _softwareVaultInvitationRepository.Query();

            // Filter
            if (filter != null)
            {
                if (filter.Id != null)
                {
                    query = query.Where(x => x.Id.Contains(filter.Id, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.CreatedAtStartDate != null)
                {
                    query = query.Where(x => x.CreatedAt >= filter.CreatedAtStartDate.Value.Date);
                }
                if (filter.CreatedAtEndDate != null)
                {
                    query = query.Where(x => x.CreatedAt <= filter.CreatedAtEndDate.Value.Date.AddHours(23).AddMinutes(59).AddSeconds(59).ToUniversalTime());
                }
                if (filter.ValidToStartDate != null)
                {
                    query = query.Where(x => x.ValidTo >= filter.ValidToStartDate.Value.Date);
                }
                if (filter.ValidToEndDate != null)
                {
                    query = query.Where(x => x.ValidTo <= filter.ValidToEndDate.Value.Date);
                }
                if (filter.Status != null)
                {
                    query = query.Where(x => x.Status == filter.Status);
                }
                if (!string.IsNullOrWhiteSpace(filter.Email))
                {
                    query = query.Where(x => x.Employee.Email.Contains(filter.Email, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Employee != null)
                {
                    query = query.Where(x => (x.Employee.FirstName + " " + x.Employee.LastName).Contains(filter.Employee, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Company != null)
                {
                    query = query.Where(x => x.Employee.Department.Company.Name.Contains(filter.Company, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Department != null)
                {
                    query = query.Where(x => x.Employee.Department.Name.Contains(filter.Department, StringComparison.OrdinalIgnoreCase));
                }
            }

            // Search
            if (!string.IsNullOrWhiteSpace(searchText))
            {
                searchText = searchText.Trim();

                query = query.Where(x => x.Id.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Email.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    (x.Employee.FirstName + " " + x.Employee.LastName).Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Department.Company.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Department.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase));
            }

            return(await query.CountAsync());
        }
 private async Task FilterChangedAsync(SoftwareVaultInvitationFilter filter)
 {
     Filter = filter;
     await LoadTableDataAsync();
 }
Exemplo n.º 3
0
        public async Task <List <SoftwareVaultInvitation> > GetSoftwareVaultInvitationsAsync(int skip, int take, string sortColumn, ListSortDirection sortDirection, string searchText, SoftwareVaultInvitationFilter filter)
        {
            var query = _softwareVaultInvitationRepository
                        .Query()
                        .Include(x => x.Employee.Department.Company)
                        .AsQueryable();

            // Filter
            if (filter != null)
            {
                if (filter.Id != null)
                {
                    query = query.Where(x => x.Id.Contains(filter.Id, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.CreatedAtStartDate != null)
                {
                    query = query.Where(x => x.CreatedAt >= filter.CreatedAtStartDate.Value.Date.ToUniversalTime());
                }
                if (filter.CreatedAtEndDate != null)
                {
                    query = query.Where(x => x.CreatedAt <= filter.CreatedAtEndDate.Value.Date.AddHours(23).AddMinutes(59).AddSeconds(59).ToUniversalTime());
                }
                if (filter.ValidToStartDate != null)
                {
                    query = query.Where(x => x.ValidTo >= filter.ValidToStartDate.Value.Date);
                }
                if (filter.ValidToEndDate != null)
                {
                    query = query.Where(x => x.ValidTo <= filter.ValidToEndDate.Value.Date);
                }
                if (filter.Status != null)
                {
                    query = query.Where(x => x.Status == filter.Status);
                }
                if (!string.IsNullOrWhiteSpace(filter.Email))
                {
                    query = query.Where(x => x.Employee.Email.Contains(filter.Email, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Employee != null)
                {
                    query = query.Where(x => (x.Employee.FirstName + " " + x.Employee.LastName).Contains(filter.Employee, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Company != null)
                {
                    query = query.Where(x => x.Employee.Department.Company.Name.Contains(filter.Company, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Department != null)
                {
                    query = query.Where(x => x.Employee.Department.Name.Contains(filter.Department, StringComparison.OrdinalIgnoreCase));
                }
            }

            // Search
            if (!string.IsNullOrWhiteSpace(searchText))
            {
                searchText = searchText.Trim();

                query = query.Where(x => x.Id.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Email.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    (x.Employee.FirstName + " " + x.Employee.LastName).Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Department.Company.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Employee.Department.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase));
            }

            // Sort Direction
            switch (sortColumn)
            {
            case nameof(SoftwareVaultInvitation.Id):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Id) : query.OrderByDescending(x => x.Id);
                break;

            case nameof(SoftwareVaultInvitation.CreatedAt):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.CreatedAt) : query.OrderByDescending(x => x.CreatedAt);
                break;

            case nameof(SoftwareVaultInvitation.ValidTo):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.ValidTo) : query.OrderByDescending(x => x.ValidTo);
                break;

            case nameof(SoftwareVaultInvitation.Status):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Status) : query.OrderByDescending(x => x.Status);
                break;

            case nameof(SoftwareVaultInvitation.Employee.Email):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Employee.Email) : query.OrderByDescending(x => x.Employee.Email);
                break;

            case nameof(SoftwareVault.Employee):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Employee.FirstName).ThenBy(x => x.Employee.LastName) : query.OrderByDescending(x => x.Employee.FirstName).ThenByDescending(x => x.Employee.LastName);
                break;

            case nameof(SoftwareVault.Employee.Department.Company):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Employee.Department.Company.Name) : query.OrderByDescending(x => x.Employee.Department.Company.Name);
                break;

            case nameof(SoftwareVault.Employee.Department):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.Employee.Department.Name) : query.OrderByDescending(x => x.Employee.Department.Name);
                break;
            }

            return(await query.Skip(skip).Take(take).AsNoTracking().ToListAsync());
        }
Exemplo n.º 4
0
 private async Task ClearAsync()
 {
     Filter = new SoftwareVaultInvitationFilter();
     await FilterChanged.Invoke(Filter);
 }