public virtual ActionResult List(FeedListModel model) { var centralFeedType = _centralFeedTypeProvider[model.TypeId]; var items = GetCentralFeedItems(centralFeedType).ToList(); if (IsEmptyFilters(model.FilterState, _feedFilterStateService.CentralFeedCookieExists())) { model.FilterState = GetFilterStateModel(); } var tabSettings = _centralFeedService.GetSettings(centralFeedType); var filteredItems = _centralFeedFilterService.ApplyFilters(items, model.FilterState, tabSettings).ToList(); var currentVersion = _centralFeedService.GetFeedVersion(filteredItems); if (model.Version.HasValue && currentVersion == model.Version.Value) { return(null); } var centralFeedModel = GetFeedListViewModel(model, filteredItems, centralFeedType); var filterState = MapToFilterState(centralFeedModel.FilterState); _feedFilterStateService.SaveFiltersState(filterState); return(PartialView(ListViewPath, centralFeedModel)); }
private FeedTabSettings GetTabSettings(FeedListModel model) { return(_centralFeedService .GetAllSettings() .Single(s => s.Type.ToInt() == model.TypeId) .Map <FeedTabSettings>()); }
public FeedListResponse Handle(FeedListRequest message) { NugetFeed[] feeds = _repository.Feeds.PerformQuery <NugetFeed>(); var deployments = _repository.Deployments.PerformQuery <Domain.Deployment>(); var model = new FeedListModel(feeds, deployments); return(new FeedListResponse(model)); }
public JsonResult GetSearchResults(string guidString, string category, string searchterm, bool telecommute, bool contract) { var feed = new FeedEntity(Guid.Parse(guidString)); var list = new FeedListModel(); list.Site = feed.Name; list.FeedUrl = feed.FeedUrl; list.Category = category; list.SearchTerm = searchterm; list.Telecommute = telecommute; list.Contract = contract; var addOn = string.Empty; if (telecommute) { addOn = "is_telecommuting=1"; } else { addOn = "is_telecommuting=0"; } if (contract) { addOn += "&is_contract=1"; } if (!feed.FeedUrl.EndsWith("/")) { feed.FeedUrl += "/"; } var url = string.Format("{0}search/{1}?{2}&query={3}&format=rss", feed.FeedUrl, category, addOn, searchterm); list.FeedItems = CraigslistReader.GetFeedItems(url); var jss = new JavaScriptSerializer(); string output = jss.Serialize(list.FeedItems); return(Json(output, JsonRequestBehavior.AllowGet)); }
private FeedListViewModel GetFeedListModel(FeedListModel model, List <IFeedItem> filteredItems, Enum centralFeedType) { var centralFeedPanel = GetCentralFeedPanel(); var feed = SortForFeed(filteredItems, centralFeedType) .Skip(centralFeedPanel.ItemsPerRequest * (model.Page - 1)) .Take(centralFeedPanel.ItemsPerRequest) .Select(fi => _feedPresentationService.GetPreviewModel(fi, model.GroupId.HasValue)) .ToList(); return(new FeedListViewModel { Feed = feed, TabSettings = GetTabSettings(model), Type = centralFeedType, BlockScrolling = filteredItems.Count < centralFeedPanel.ItemsPerRequest, }); }
public FeedListViewModel FeedList(FeedListModel model) { var centralFeedType = _feedTypeProvider[model.TypeId]; var items = model.GroupId.HasValue ? _centralFeedHelper.GetGroupFeedItems(centralFeedType, model.GroupId.Value).ToList() : _centralFeedHelper.GetCentralFeedItems(centralFeedType).ToList(); if (!items.Any()) { return(new FeedListViewModel()); } var tabSettings = GetTabSettings(model.GroupId.HasValue, centralFeedType); var filteredItems = _feedFilterService.ApplyFilters(items, model.FilterState, tabSettings).ToList(); var centralFeedModel = GetFeedListModel(model, filteredItems, centralFeedType); return(centralFeedModel); }
protected virtual FeedListViewModel GetFeedListViewModel(FeedListModel model, List <IFeedItem> filteredItems, Enum centralFeedType) { var take = model.Page * ItemsPerPage; var pagedItemsList = SortForFeed(filteredItems, centralFeedType).Take(take).ToList(); var settings = _centralFeedService .GetAllSettings() .AsList(); var tabSettings = settings .Single(s => s.Type.ToInt() == model.TypeId) .Map <FeedTabSettings>(); return(new FeedListViewModel { Version = _centralFeedService.GetFeedVersion(filteredItems), Feed = GetFeedItems(pagedItemsList, settings), TabSettings = tabSettings, Type = centralFeedType, BlockScrolling = filteredItems.Count < take, FilterState = MapToFilterStateViewModel(model.FilterState) }); }
public FeedListResponse(FeedListModel model) { Model = model; }
public ActionResult SearchResults(string feeds, string categories, string searchterm, bool telecommute = false, bool contract = false) { var model = new SearchResultsModel(); var sites = feeds.Split(','); var cats = categories.Split(','); foreach (var guidString in sites) { foreach (var category in cats) { var feed = new FeedEntity(Guid.Parse(guidString)); var list = new FeedListModel(); model.Results.Add(list); list.Site = feed.Name; list.FeedUrl = feed.FeedUrl; list.Category = category; list.SearchTerm = searchterm; list.Telecommute = telecommute; list.Contract = contract; var addOn = string.Empty; if (telecommute) { addOn = "is_telecommuting=1"; } else { addOn = "is_telecommuting=0"; } if (contract) { addOn += "&is_contract=1"; } var url = string.Format("{0}search/{1}?{2}&query={3}&format=rss", feed.FeedUrl, category, addOn, searchterm); list.FeedItems = CraigslistReader.GetFeedItems(url); //TODO: Add code to prevent duplicate emails getting sent //Get all the IDs of responses sent to this feed. That way we don't send duplicates //var responses = new ResponseCollection(); //var filter = new PredicateExpression(); //filter.Add(ResponseFields.FeedGuid == feed.Guid); //responses.GetMulti(filter); //list.FeedResponsesByEmail = new List<string>(); //list.FeedResponsesByID = new List<string>(); //foreach (var r in responses) //{ // if (!model.FeedResponsesByEmail.Contains(r.ToEmail)) // model.FeedResponsesByEmail.Add(r.ToEmail); // if (!model.FeedResponsesByID.Contains(r.Id)) // model.FeedResponsesByID.Add(r.Id); //} } } return(View(model)); }