Beispiel #1
0
        public async Task <IActionResult> Get([FromQuery] EmployeeSearchParametrs parametrs)
        {
            var employees = await _employeeService.Get(parametrs);

            if (employees == null)
            {
                return(NotFound());
            }
            return(Ok(employees));
        }
Beispiel #2
0
        public async Task <List <EmployeeViewResult> > Get(EmployeeSearchParametrs parametrs)
        {
            var query = _dbContext.Employees
                        .Include(d => d.Department)
                        .Include(d => d.Department.Manager)
                        .AsQueryable();

            if (parametrs.Id.HasValue)
            {
                query = query.Where(e => e.Id == parametrs.Id);
            }

            if (!string.IsNullOrWhiteSpace(parametrs.Name))
            {
                query = query.Where(e => e.Name.ToLower().Contains(parametrs.Name.ToLower()));
            }

            if (!string.IsNullOrWhiteSpace(parametrs.Email))
            {
                query = query.Where(e => e.Email.Contains(parametrs.Email));
            }

            if (!string.IsNullOrWhiteSpace(parametrs.JobTitle))
            {
                query = query.Where(e => e.JobTitle.ToLower().Equals(parametrs.JobTitle.ToLower()));
            }

            if (parametrs.DepartmentId.HasValue)
            {
                query = query.Where(e => e.DepartmentId.HasValue && e.DepartmentId == parametrs.DepartmentId);
            }

            if (parametrs.ManagerId.HasValue)
            {
                query = query.Where(e => e.Department.ManagerId.HasValue && e.Department.ManagerId == parametrs.ManagerId);
            }


            var employees = await query.ToListAsync();

            if (employees.Count == 0)
            {
                return(null);
            }

            List <EmployeeViewResult> employeeViews = new List <EmployeeViewResult>();

            foreach (var employee in employees)
            {
                employeeViews.Add(new EmployeeViewResult
                {
                    Id             = employee.Id,
                    Name           = employee.Name,
                    PhoneNumber    = employee.PhoneNumber,
                    Email          = employee.Email,
                    JobTitle       = employee.JobTitle,
                    DepartmentName = employee.Department?.Name,
                    ManagerName    = employee.Department?.Manager?.Name
                });
            }
            return(employeeViews);
        }