Example #1
0
        public async Task <ActionResult <List <GetAllEmployeeDetailsDto> > > DesignationAndSkillEmployeeSearch([FromBody] DesignationAndSkillEmployeeSearch designationAndSkillEmployeeSearch)
        {
            var result = await _employeeService.DesignationAndSkillEmployeeSearch(designationAndSkillEmployeeSearch);

            return(Ok(result));
        }
        /// <summary>
        /// this method is used to search for employee for a perticular skill and designation.
        /// skill name will be empty string instead of null
        /// </summary>
        /// <param name="designationAndSkillEmployeeSearch"></param>
        /// <returns></returns>
        public async Task <List <GetAllEmployeeDetailsDto> > DesignationAndSkillEmployeeSearch(DesignationAndSkillEmployeeSearch designationAndSkillEmployeeSearch)
        {
            string searchString       = string.Empty;
            var    employeeList       = new List <GetAllEmployeeDetailsDto>();
            var    employeeWithSkills = await _employeeSkillRepository.SearchForEmployeeSkill(designationAndSkillEmployeeSearch.SkillName);

            if (designationAndSkillEmployeeSearch.searchString != null)
            {
                searchString = designationAndSkillEmployeeSearch.searchString.ToLower();
            }

            if (designationAndSkillEmployeeSearch.DesignationId != null)
            {
                var departmentDesignation = await _departmentDesignationRepository.GetDepartmentDesignationForDesignation((int)designationAndSkillEmployeeSearch.DesignationId);

                var designationDetails = await _departmentDesignationRepository.GetDesignationByDepartmentDesignationId(departmentDesignation.Id);

                foreach (var employee in employeeWithSkills)
                {
                    var employeeDetails = await _employeeRepository.GetEmployeeInformationAsync(employee);

                    if (employeeDetails.DepartmentDesignationId == departmentDesignation.Id)
                    {
                        var emp = _mapper.Map <GetAllEmployeeDetailsDto>(employeeDetails);
                        emp.DesignationTitle = designationDetails;

                        if (designationAndSkillEmployeeSearch.searchString == null)
                        {
                            employeeList.Add(emp);
                            continue;
                        }
                        var employeeName = string.Format("{0} {1} {2}", employeeDetails.FirstName, employeeDetails.MiddleName, employeeDetails.LastName);
                        employeeName = String.Join(" ", employeeName.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
                        emp.Name     = employeeName;
                        if (employeeName.ToLower().Contains(searchString))
                        {
                            employeeList.Add(emp);
                        }
                    }
                }
            }
            else
            {
                foreach (var employee in employeeWithSkills)
                {
                    var employeeDetails = await _employeeRepository.GetEmployeeInformationAsync(employee);

                    var designationDetails = await _departmentDesignationRepository.GetDesignationByDepartmentDesignationId(employeeDetails.DepartmentDesignationId);

                    var emp = _mapper.Map <GetAllEmployeeDetailsDto>(employeeDetails);
                    emp.DesignationTitle = designationDetails;
                    if (designationAndSkillEmployeeSearch.searchString == null)
                    {
                        employeeList.Add(emp);
                        continue;
                    }
                    var employeeName = string.Format("{0} {1} {2}", employeeDetails.FirstName, employeeDetails.MiddleName, employeeDetails.LastName);
                    employeeName = String.Join(" ", employeeName.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
                    emp.Name     = employeeName;
                    if (employeeName.ToLower().Contains(searchString))
                    {
                        employeeList.Add(emp);
                    }
                }
            }
            return(employeeList);
        }