public async Task <ActionResult <EmployeeDto> > GetEmployeeCollection(
            [FromQuery] EmployeeDtoParameter employeeDtoParameter)
        {
            Expression <Func <Employee, bool> > expression = null;

            if (employeeDtoParameter.Search != null)
            {
                var entity = _mapper.Map <Employee>(employeeDtoParameter.Search);
                //Expression<Func<Regist, bool>> expression = m=>m.Phone=="123";
                expression = entity.AsExpression();
            }

            Dictionary <string, PropertyMappingValue> mappingDictionary = null;

            if (employeeDtoParameter.OrderBy != null)
            {
                if (!_propertyMappingService.ValidMappingExistsFor <EmployeeDto, Employee>(employeeDtoParameter.OrderBy))
                {
                    return(BadRequest("无法找到对应的属性"));
                }

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

            var entities = await _employeeRepository.GetAsync(employeeDtoParameter.Ids, expression, employeeDtoParameter.OrderBy, mappingDictionary);

            if (employeeDtoParameter.Ids != null && employeeDtoParameter.Ids.Count() != entities.Count())
            {
                List <string> idNotFounds = employeeDtoParameter.Ids.Where(x => !entities.Select(p => p.RegistId).ToList().Contains(x)).ToList();
                return(NotFound(JsonSerializer.Serialize(idNotFounds)));
            }

            var listDto = _mapper.Map <IEnumerable <EmployeeDto> >(entities);

            return(Ok(listDto.ShapeData(employeeDtoParameter.Fields)));
        }
Exemple #2
0
        public async Task <ActionResult <IEnumerable <EmployeeDto> > > GetEmployees(Guid companyId, [FromQuery] EmployeeDtoParameter parameters)
        {
            if (!await _companyRepository.CompanyExistsAsync(companyId))
            {
                return(NotFound());
            }
            var employees = await _companyRepository.GetEmployeesAsync(companyId, parameters);

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

            return(Ok(employeeDtos));
        }
Exemple #3
0
        public async Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId, EmployeeDtoParameter parameters)
        {
            if (companyId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(companyId));
            }
            //if (string.IsNullOrWhiteSpace(parameters.Gender) && string.IsNullOrWhiteSpace(parameters.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(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));
            }

            if (!string.IsNullOrWhiteSpace(parameters.Gender))
            {
                parameters.Gender = parameters.Gender.Trim();
                //替换成枚举里的gender
                var gender = Enum.Parse <Gender>(parameters.Gender);
                items = items.Where(x => x.Gender == gender);
            }

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

            //把dictionary取出来
            var mappingDictionary = _propertyMappingService.GetPropertyMapping <EmployeeDto, Employee>();

            //使用属性名的字符串来按属性进行排序,有的属性名是lambda表达, 属性映射服务,可以映射Entity多个属性,映射可能翻转顺序。(age asc: dateofbirth desc)
            items = items.ApplySort(parameters.OrderBy, mappingDictionary);

            //return await items.OrderBy(x => x.EmployeeNo).ToListAsync();
            return(await items.ToListAsync());
        }
Exemple #4
0
        public async Task <ActionResult <IEnumerable <EmployeeDto> > > GetEmployeesForCompany(Guid companyId, EmployeeDtoParameter employeeDtoParameter)
        {
            if (!await _companyRepository.CompanyExistsAsync(companyId))
            {
                return(NotFound());
            }
            var employees = await _companyRepository.GetEmployeesAsync(companyId, employeeDtoParameter);

            return(Ok(_mapper.Map <IEnumerable <EmployeeDto> >(employees)));
        }
Exemple #5
0
        public async Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId, EmployeeDtoParameter employeeDtoParameter)
        {
            if (companyId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(companyId));
            }
            var items = _context.employees.Where(x => x.companyId == companyId);

            if (!string.IsNullOrWhiteSpace(employeeDtoParameter.gender))
            {
                employeeDtoParameter.gender = employeeDtoParameter.gender.Trim();
                var gender = Enum.Parse <Gender>(employeeDtoParameter.gender);
                items = items.Where(x => x.gender == gender);
            }
            if (!string.IsNullOrWhiteSpace(employeeDtoParameter.q))
            {
                employeeDtoParameter.q = employeeDtoParameter.q.Trim();
                items = items.Where(x => x.employeeNo.Contains(employeeDtoParameter.q) || x.firstName.Contains(employeeDtoParameter.q) || x.lastName.Contains(employeeDtoParameter.q));
            }
            if (!string.IsNullOrWhiteSpace(employeeDtoParameter.orderBy))
            {
                if (employeeDtoParameter.orderBy.ToLowerInvariant() == "name")
                {
                    items = items.OrderBy(x => x.firstName).ThenBy(x => x.lastName);
                }
            }
            return(await items.ToListAsync());
        }
Exemple #6
0
        public async Task <IEnumerable <Employee> > GetEmployeesAsync(Guid companyId, EmployeeDtoParameter parameters)
        {
            if (companyId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(companyId));
            }

            if (string.IsNullOrWhiteSpace(parameters.Gender) && string.IsNullOrWhiteSpace(parameters.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(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());
        }