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

            // Filter
            if (filter != null)
            {
                if (!string.IsNullOrWhiteSpace(filter.OS))
                {
                    query = query.Where(x => x.OS.Contains(filter.OS, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrWhiteSpace(filter.Model))
                {
                    query = query.Where(x => x.Model.Contains(filter.Model, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrWhiteSpace(filter.ClientAppVersion))
                {
                    query = query.Where(x => x.ClientAppVersion.Contains(filter.ClientAppVersion, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Status != null)
                {
                    query = query.Where(x => x.Status == filter.Status);
                }
                if (filter.LicenseStatus != null)
                {
                    query = query.Where(x => x.LicenseStatus == filter.LicenseStatus);
                }
                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.OS.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Model.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.ClientAppVersion.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());
        }
Exemplo n.º 2
0
 private async Task ClearAsync()
 {
     Filter = new SoftwareVaultFilter();
     await FilterChanged.Invoke(Filter);
 }
Exemplo n.º 3
0
        public async Task <List <SoftwareVault> > GetSoftwareVaultsAsync(int skip, int take, string sortColumn, ListSortDirection sortDirection, string searchText, SoftwareVaultFilter filter)
        {
            var query = _softwareVaultRepository
                        .Query()
                        .Include(x => x.Employee.Department.Company)
                        .AsQueryable();

            // Filter
            if (filter != null)
            {
                if (!string.IsNullOrWhiteSpace(filter.OS))
                {
                    query = query.Where(x => x.OS.Contains(filter.OS, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrWhiteSpace(filter.Model))
                {
                    query = query.Where(x => x.Model.Contains(filter.Model, StringComparison.OrdinalIgnoreCase));
                }
                if (!string.IsNullOrWhiteSpace(filter.ClientAppVersion))
                {
                    query = query.Where(x => x.ClientAppVersion.Contains(filter.ClientAppVersion, StringComparison.OrdinalIgnoreCase));
                }
                if (filter.Status != null)
                {
                    query = query.Where(x => x.Status == filter.Status);
                }
                if (filter.LicenseStatus != null)
                {
                    query = query.Where(x => x.LicenseStatus == filter.LicenseStatus);
                }
                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.OS.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.Model.Contains(searchText, StringComparison.OrdinalIgnoreCase) ||
                                    x.ClientAppVersion.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(SoftwareVault.OS):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.OS) : query.OrderByDescending(x => x.OS);
                break;

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

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

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

            case nameof(SoftwareVault.LicenseStatus):
                query = sortDirection == ListSortDirection.Ascending ? query.OrderBy(x => x.LicenseStatus) : query.OrderByDescending(x => x.LicenseStatus);
                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 FilterChangedAsync(SoftwareVaultFilter filter)
 {
     Filter = filter;
     await LoadTableDataAsync();
 }