// Get Employee public EmployeeResponse GetEmployee(EmployeeRequest request) { var response = new EmployeeResponse(); #region *** Intercepted Method *** // Try to add employee from AlienDB to Nexus if the employee already exist then try to refresh the information request.EmployeeId = SaveEmployee(new EmployeeRequest { Employee = _employeeAdapter.GetEmployee(request).Employee}).EmployeeId; #endregion // Validate if the item is from Nexus if (request.EmployeeId > 0) { var employeeFound = Olympus._Enterprise.Employees.Where(x => x.Id == request.EmployeeId).SingleOrDefault(); response.Employee = Mapper.Map<EmployeeDto>(employeeFound); } return response; }
// Add aditional results to the search public void SearchEmployee(EmployeeRequest request, EmployeeResponse response) { var maximunResultRows = Convert.ToInt32(Resources.MaximunSearchResults); // Apply the search with the pattern given var searchResults = Asgard._Foreing.PLA_EMPLEADOS .Where(x => x.EMP_Nombre.ToUpper().Contains(request.SearchEmployeeQuery.ToUpper()) && x.CIA_Codigo.Equals("01") && x.EMP_Activo.Equals("S")) .OrderBy(y => y.EMP_Nombre) .Take(maximunResultRows) .ToList(); if (request.SearchEmployeeQuery == "") UpdateSalariesInSearch(response); // Fill the response with the result found foreach (var employee in searchResults) //Por cada empleada encontrado en DIALCOM { // Check if the employee is already binded var bindedEmployee = response.EmployeeList.Where(x => x.Code == Convert.ToString(employee.EMP_Numero)).FirstOrDefault(); if (bindedEmployee == null) { var employeeDto = new EmployeeDto { UserAccountId = 0, Code = Convert.ToString(employee.EMP_Numero), SalaryByHour = Convert.ToDecimal(employee.EMP_SalarioXHora), Person = new PersonDto { Name = employee.EMP_Nombre, LastName = "" } }; response.EmployeeList.Add(employeeDto); } else { bindedEmployee.SalaryByHour = Convert.ToDecimal(employee.EMP_SalarioXHora); //bindedEmployee.Person.Name = employee.EMP_Nombre; } } }
// Save Item public EmployeeResponse SaveEmployee(EmployeeRequest request) { var response = new EmployeeResponse(); if (request.Employee != null) { Employee employee = null; // Check if Edit or Add if (request.Employee.Id > 0) { // Edit employee = Olympus._Enterprise.Employees.Where(x => x.Id == request.Employee.Id).SingleOrDefault(); if (employee != null) { // Overrides the Salary By Hour //request.Employee.SalaryByHour = employee.SalaryByHour; //Mapper.Map(request.Employee, employee); } } else { // Add if (request.Employee.Code != null) { // Check some info from AlienDB employee = new Employee(); Mapper.Map(request.Employee, employee); Olympus._Enterprise.Employees.AddObject(employee); } } Olympus._Enterprise.SaveChanges(); if (employee != null) response.EmployeeId = employee.Id; } return response; }
// Search Employee public EmployeeResponse SearchEmployee(EmployeeRequest request) { var response = new EmployeeResponse { EmployeeList = new List<EmployeeDto>() }; // Search employee var employeesFound = Olympus._Enterprise.Employees.Where(x => x.Person.Name.Contains(request.SearchEmployeeQuery) || x.Code.Contains(request.SearchEmployeeQuery)) .OrderBy(y => y.Person.Name) .Take(Convert.ToInt32(Properties.Resources.MaximunResultRows)) .Distinct() .ToList(); if (employeesFound.Count > 0) { response.EmployeeList = Mapper.Map<List<EmployeeDto>>(employeesFound); } // Intercepted Method _employeeAdapter.SearchEmployee(request, response); // Sorted again the list response.EmployeeList = response.EmployeeList.OrderBy(x => x.Person.Name).ToList(); return response; }
// Get Employee from Alien DB public EmployeeResponse GetEmployee(EmployeeRequest request) { var response = new EmployeeResponse(); if (request.Employee != null) { // Check for update an item if (request.EmployeeId > 0) { #region Update Data var code = Convert.ToDouble(request.Employee.Code); //var code = Convert.ToDouble(request.Employee.Code.Substring(0, request.Employee.Code.Length - 2)); // Search the item to update data var bindedEmployeeFound = Asgard._Foreing.PLA_EMPLEADOS.Where(x => x.EMP_Numero.Equals(code) && x.CIA_Codigo.Equals("01") && x.EMP_Activo.Equals("S")).FirstOrDefault(); if (bindedEmployeeFound != null) { // Create an object to be mapped later response.Employee = new EmployeeDto { Id = request.EmployeeId, PersonId = request.Employee.PersonId, Code = Convert.ToString(bindedEmployeeFound.EMP_Numero).Trim(), UserAccountId = 0, SalaryByHour = Convert.ToDecimal(bindedEmployeeFound.EMP_SalarioXHora) //Falta actualizar los datos de la persona (Nombre y Apellidos) }; } #endregion } else { #region Get Item // Search the item var code = Convert.ToDouble(request.Employee.Code); //var code = Convert.ToDouble(request.Employee.Code.Substring(0, request.Employee.Code.Length - 2)); var employeeFound = Asgard._Foreing.PLA_EMPLEADOS.Where(x => x.EMP_Numero.Equals(code) && x.CIA_Codigo.Equals("01") && x.EMP_Activo.Equals("S")).FirstOrDefault(); if (employeeFound != null) { response.Employee = new EmployeeDto { Code = Convert.ToString(employeeFound.EMP_Numero).Trim(), UserAccountId = 0, SalaryByHour = Convert.ToDecimal(employeeFound.EMP_SalarioXHora), Person = new PersonDto { Name = employeeFound.EMP_Nombre, LastName = "" } }; } #endregion } } return response; }
private void Search(string query) { var request = new EmployeeRequest { SearchEmployeeQuery = query }; ShowSearchResults(new EmployeeFactory().SearchEmployee(request).EmployeeList); }
// Search public EmployeeResponse SearchEmployee(EmployeeRequest request) { return _employeeService.SearchEmployee(request); }
// Get public EmployeeResponse GetEmployee(EmployeeRequest request) { return _employeeService.GetEmployee(request); }