public ActionResult SearchResultsRead([DataSourceRequest] DataSourceRequest request) { EmployeeSearchAdditionalData employeeSearchAdditionalData = new EmployeeSearchAdditionalData(); TryUpdateModel(employeeSearchAdditionalData); int searchType = FindSearchType(employeeSearchAdditionalData); if (searchType == 0) { return(null); } string domain = ConfigurationManager.AppSettings["LDAPDomain"]; string serviceUser = ConfigurationManager.AppSettings["ServiceUser"]; string servicePassword = ConfigurationManager.AppSettings["ServicePassword"]; LdapDirectoryIdentifier ldapDirectoryIdentifier = new LdapDirectoryIdentifier(domain); NetworkCredential myCredentials = new NetworkCredential(serviceUser, servicePassword); LdapConnection connection = new LdapConnection(ldapDirectoryIdentifier, myCredentials, AuthType.Basic); connection.SessionOptions.ProtocolVersion = 3; DirectoryContext context = new DirectoryContext(connection); var orders = context.Query <User>(); switch (searchType) { case 1: orders = orders.Where(u => (u.FirstName.Contains(employeeSearchAdditionalData.Keyword)) || (u.LastName.Contains(employeeSearchAdditionalData.Keyword))); break; case 2: orders = orders.Where(u => (u.CountryCode == employeeSearchAdditionalData.CountryCode1)); break; case 3: orders = orders.Where(u => ((u.FirstName.Contains(employeeSearchAdditionalData.Keyword)) || (u.LastName.Contains(employeeSearchAdditionalData.Keyword))) && (u.CountryCode == employeeSearchAdditionalData.CountryCode1)); break; case 4: if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName)) { orders = orders.Where(u => (u.FirstName.Contains(employeeSearchAdditionalData.FirstName))); } if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName)) { orders = orders.Where(u => (u.LastName.Contains(employeeSearchAdditionalData.LastName))); } if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2)) { orders = orders.Where(u => (u.CountryCode == employeeSearchAdditionalData.CountryCode2)); } if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location)) { orders = orders.Where(u => (u.Location == employeeSearchAdditionalData.Location)); } if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle)) { orders = orders.Where(u => (u.PositionTitle.Contains(employeeSearchAdditionalData.PositionTitle))); } if (!String.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea)) { orders = orders.Where(u => (u.FunctionalArea == employeeSearchAdditionalData.FunctionalArea)); } break; } orders = orders.Where(c => (c.Status == "Actif")); var total = orders.Count(); orders = orders.ApplyOrdersSorting(request.Groups, request.Sorts); var x = orders.ApplyOrdersPaging(request.Page, request.PageSize, total); var result = new DataSourceResult() { Data = x, Total = total }; return(Json(result)); }
public int FindSearchType(EmployeeSearchAdditionalData employeeSearchAdditionalData) { //Blank if ( string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Keyword) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode1) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea) ) { return(0); } //Keyword if ( !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Keyword) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode1) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea) ) { return(1); } //Country if ( string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Keyword) && !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode1) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea) ) { return(2); } //Keyword and Country if ( !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Keyword) && !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode1) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea) ) { return(3); } //First if ( (string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Keyword) && string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode1)) && ( !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FirstName) || !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.LastName) || !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.CountryCode2) || !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.Location) || !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.PositionTitle) || !string.IsNullOrWhiteSpace(employeeSearchAdditionalData.FunctionalArea)) ) { return(4); } return(0); }