Beispiel #1
0
        public Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId, EmployeeDtoParameters parameters)
        {
            //if (string.IsNullOrWhiteSpace(parameters.Gender) && string.IsNullOrWhiteSpace(parameters.Q))
            //    return Task.FromResult(context.Employees.Where(x => x.CompanyId == companyId).OrderBy(x => x.EmployeeNo).AsEnumerable());

            var query = context.Employees.Where(x => x.CompanyId == companyId);

            if (!string.IsNullOrWhiteSpace(parameters.Gender))
            {
                var gender = Enum.Parse <Gender>(parameters.Gender.Trim());
                query = query.Where(x => x.Gender == gender);
            }
            if (!string.IsNullOrWhiteSpace(parameters.Q))
            {
                parameters.Q = parameters.Q.Trim();
                query        = query.Where(x => x.EmployeeNo.Contains(parameters.Q) || x.FirstName.Contains(parameters.Q) || x.LastName.Contains(parameters.Q));
            }
            //if (!string.IsNullOrWhiteSpace(parameters.OrderBy))
            //{
            //    if (parameters.OrderBy.ToLower() == "name")
            //        query = query.OrderBy(x => x.FirstName).ThenBy(x => x.LastName);
            //}

            return(Task.FromResult(query.AsEnumerable()));
        }
        public async Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId,
                                                                      EmployeeDtoParameters parameters)
        {
            if (companyId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(companyId));
            }

            var items = _context.Employees.Where(x => x.CompanyId == companyId);

            if (!string.IsNullOrWhiteSpace(parameters.Gender))
            {
                parameters.Gender = parameters.Gender.Trim();
                var gender = Enum.Parse <Gender>(parameters.Gender);

                items = items.Where(x => x.Gender == gender);
            }

            if (!string.IsNullOrWhiteSpace(parameters.Q))
            {
                parameters.Q = parameters.Q.Trim();

                items = items.Where(x => x.EmployeeNo.Contains(parameters.Q) ||
                                    x.FirstName.Contains(parameters.Q) ||
                                    x.LastName.Contains(parameters.Q));
            }

            var mappingDictionary = _propertyMappingService.GetPropertyMapping <EmployeeDto, Employee>();

            items = items.ApplySort(parameters.OrderBy, mappingDictionary);

            return(await items.ToListAsync());
        }
        public async Task<IEnumerable<Employee>> GetEmployeesAsync(Guid companyId,EmployeeDtoParameters parameters)
        {
            if (companyId == null)
            {
                throw new ArgumentNullException(nameof(companyId));
            }

            var items = _context.Employees.Where(x => x.CompanyId == companyId);        //先预设一个所有数据的集合IQueryable(此时并不会立即查询数据库,而是相当于拼SQL语句的过程)

            if (!string.IsNullOrWhiteSpace(parameters.Gender))                          //如果筛选条件 genderDisplay不为空,返回过滤后的List
            {
                parameters.Gender = parameters.Gender.Trim();
                var gender = Enum.Parse<Gender>(parameters.Gender);     //转换为枚举类型

                items = items.Where(x => x.Gender == gender);
            }

            if (!string.IsNullOrWhiteSpace(parameters.Q))                                      //如果搜索条件 q 不为空,返回全文搜索后的List
            {
                parameters.Q = parameters.Q.Trim();
                items = items.Where(x => x.EmployeeNo.Contains(parameters.Q)
                        || x.FirstName.Contains(parameters.Q)
                        || x.LastName.Contains(parameters.Q)
                );
            }

            if (!string.IsNullOrWhiteSpace(parameters.OrderBy))
            {
                if (parameters.OrderBy.ToLowerInvariant() == "name")
                {
                    items = items.OrderBy(x => x.FirstName).ThenBy(x => x.LastName);
                }
            }

            var mappingDictionary = _propertyMappingService.GetPropertyMapping<EmployeeDto, Employee>();
            items = items.ApplySort(parameters.OrderBy, mappingDictionary);

            return await items.ToListAsync();
        }