Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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)));
        }