public ActionResult Search(string Text) { //TODO: 完成超级搜索逻辑,适用于搜索ID和子串关系的标题 var result = new SuperSearchViewModel(); result.Users = new List <SuperSearchUserViewModel>(); result.Projects = new List <SuperSearchProjectViewModel>(); result.Enterprises = new List <SuperSearchEnterpriseViewModel>(); result.Customers = new List <SuperSearchCustomerViewModel>(); result.Files = new List <SuperSearchFileViewModel>(); var users = new List <UserModel>(); var projects = new List <ProjectModel>(); var enterprises = new List <EnterpriseModel>(); var customers = new List <CustomerModel>(); var files = new List <FileModel>(); decimal price = -1; try { price = Convert.ToDecimal(Text); } catch { } users = (from u in DB.Users where u.Username.Contains(Text) || u.ID.ToString().Equals(Text) select u).ToList(); projects = (from p in DB.Projects where p.Title.Contains(Text) || p.RefNum.Contains(Text) || p.Charge == price select p).ToList(); enterprises = (from e in DB.Enterprises where e.Title.Contains(Text) || e.ID.ToString().Equals(Text) select e).ToList(); customers = (from c in DB.Customers where c.Name.Contains(Text) || c.ID.ToString().Equals(Text) select c).ToList(); files = (from f in DB.Files where f.Filename.Contains(Text) select f).ToList(); foreach (var u in users) { result.Users.Add((SuperSearchUserViewModel)u); } foreach (var project in projects) { result.Projects.Add((SuperSearchProjectViewModel)project); } foreach (var en in enterprises) { result.Enterprises.Add((SuperSearchEnterpriseViewModel)en); } foreach (var customer in customers) { result.Customers.Add((SuperSearchCustomerViewModel)customer); } foreach (var file in files) { result.Files.Add((SuperSearchFileViewModel)file); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Index(SuperSearchViewModel viewModel) { var searchResults = await _searchService.SearchAsync(CurrentUserIdOrDefault, viewModel.SearchRequest); Dictionary <int, ProjectListItemViewModel> projectDetails = (await _projectRepository.GetAllProjectsWithClaimCount()) .ToDictionary( p => p.ProjectId, p => new ProjectListItemViewModel(p, CurrentUserIdOrDefault)); return(searchResults.Count == 1 ? RedirectToAction(searchResults.Single().GetRouteTarget()) : View( new SearchResultViewModel( viewModel.SearchRequest, searchResults, projectDetails))); }