Beispiel #1
0
        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());
        }
        GetEmployeesForCompany(Guid companyId, [FromQuery] EmployeeDtoParameters parameters)
        {
            if (!await _companyRepository.CompanyExistAsync(companyId))
            {
                return(NotFound());
            }
            var employees = await _companyRepository.GetEmployeesAsync(companyId, parameters);

            return(Ok(_mapper.Map <IEnumerable <EmployeeDto> >(employees)));
        }
Beispiel #3
0
        private async void GetEmployeesForCompany(CompanyDto obj)
        {
            Employees.Clear();

            var parameters = new EmployeeDtoParameters();
            var result     = await enterpriseApi.GetEmployeesForCompany(obj.Id, parameters).RunApi();

            foreach (var item in result)
            {
                Employees.Add(item);
            }
        }
        public async Task <ActionResult <IEnumerable <EmployeeDto> > > GetEmployeesForCompany(
            Guid companyId,
            [FromQuery] EmployeeDtoParameters parameters)
        {
            if (!await companyRepository.Where(t => t.Id.Equals(companyId)).AnyAsync())
            {
                return(NotFound());
            }

            var employees = await employeeService.GetEmployeesForCompany(companyId, parameters);

            return(Ok(employees));
        }
Beispiel #5
0
        public async Task <IActionResult> GetEmployeesForCompany(Guid companyId,
                                                                 [FromQuery] EmployeeDtoParameters parameters)
        {
            //判断Uri query string 中的 orderby 是否合法(视频P38)
            if (!_propertyMappingService.ValidMappingExistsFor <CompanyDto, Company>(parameters.OrderBy))
            {
                return(BadRequest());  //返回状态码400
            }

            if (await _companyRepository.CompanyExistsAsync(companyId))
            {
                var employees = await _companyRepository.GetEmployeesAsync(companyId, parameters);

                var employeeDtos = _mapper.Map <IEnumerable <EmployeeDto> >(employees);
                return(Ok(employeeDtos));
            }
            else
            {
                return(NotFound());
            }
        }
Beispiel #6
0
        public async Task <ActionResult <IEnumerable <EmployeeDto> > > GetEmployeesFromCompany
        (
            Guid companyId,
            [FromQuery] EmployeeDtoParameters parameters
        )
        {
            if (!await _companyRepository.CompanyExistsAsync(companyId))
            {
                return(NotFound());
            }

            var employees = await _companyRepository.GetEmployeesAsync(companyId, parameters);

            if (employees == null)
            {
                return(NotFound());
            }

            var employeeDtos = _mapper.Map <IEnumerable <EmployeeDto> >(employees);

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

            var genderDisplay = parameters.Gender;
            var q             = parameters.Q;
            //if (string.IsNullOrWhiteSpace(genderDisplay) && string.IsNullOrWhiteSpace(q))
            //{
            //    return await _context.Employees.Where(x => x.CompanyId == companyId).OrderBy(x => x.EmployeeNo).ToListAsync();
            //}

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

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

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

            if (!string.IsNullOrWhiteSpace(q))
            {
                q     = q.Trim();
                items = items.Where(x => x.EmployeeNo.Contains(q) ||
                                    x.FirstName.Contains(q) ||
                                    x.LastName.Contains(q));
            }

            //if (!string.IsNullOrWhiteSpace(parameters.OrderBy))
            //{
            //    if (parameters.OrderBy.ToLowerInvariant()=="name")
            //    {
            //        items = items.OrderBy(x => x.FirstName).ThenBy(x => x.FirstName);
            //    }
            //}
            var mappingDictionary = _propertyMappingService.GetPropertyMapping <EmployeeDto, Employee>();

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


            return(await items.ToListAsync());
        }
Beispiel #8
0
        /// <summary>
        /// 公司id条件查询
        /// </summary>
        /// <param name="companyId"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public async Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId, EmployeeDtoParameters parameters)
        {
            if (companyId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(companyId));
            }

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

            //性别筛选
            if (!string.IsNullOrWhiteSpace(parameters.Gender))
            {
                parameters.Gender = parameters.Gender.Trim();
                var gender = Enum.Parse <Gender>(parameters.Gender);
                queryExpression = queryExpression.Where(x => x.Gender == gender);
            }

            //查询
            if (!string.IsNullOrWhiteSpace(parameters.Q))
            {
                parameters.Q    = parameters.Q.Trim();
                queryExpression = queryExpression.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")
            //    {
            //        queryExpression = queryExpression.OrderBy(x => x.FirstName).ThenBy(x => x.LastName);
            //    }
            //}

            //排序(P36 P37)
            if (!string.IsNullOrWhiteSpace(parameters.OrderBy))
            {
                //取得映射关系字典
                var mappingDictionary = _propertyMappingService.GetPropertyMapping <EmployeeDto, Employee>();
                //ApplySort是一个自己定义的拓展方法
                //传入 FormQuery 中的 OrderBy 字符串与映射关系字典
                //返回排序好的字符串
                queryExpression = queryExpression.ApplySort(parameters.OrderBy, mappingDictionary);
            }

            return(await queryExpression.ToListAsync());
        }
Beispiel #9
0
        /// <summary>
        /// Gets the employees for company.
        /// </summary>
        /// <param name="companyId">The company identifier.</param>
        /// <param name="parameters">The parameters.</param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task <PagedList <EmployeeDto> > GetEmployeesForCompany(Guid companyId, EmployeeDtoParameters parameters)
        {
            Guards.ThrowIfNull(parameters);

            var query = employeeRepository.Select.Where(t => t.CompanyId.Equals(companyId));

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

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

            var pagedEmployees = await PagedList <EmployeeDto> .CreateAsync(
                query,
                parameters.PageNumber,
                parameters.PageSize,
                Mapper);

            return(pagedEmployees);
        }