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))); }
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)); }
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()); }
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))); }
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()); }
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()); }