public async Task <ActionResult> Subscribed(Domain.Models.DomainType domainType) { switch (domainType) { case Domain.Models.DomainType.Subverse: var domainReference = new Domain.Models.DomainReference(Domain.Models.DomainType.Set, Domain.Models.SetType.Front.ToString(), User.Identity.Name); return(RedirectToAction("Details", "Set", new { name = domainReference.FullName })); break; case Domain.Models.DomainType.Set: var options = new SearchOptions(Request.QueryString.Value); var q = new QueryUserSubscribedSets(options).SetUserContext(User); var results = await q.ExecuteAsync(); var paged = new Utilities.PaginatedList <Domain.Models.DomainReferenceDetails>(results, options.Page, options.Count); ViewBag.NavigationViewModel = new Models.ViewModels.NavigationViewModel() { Description = "Subscribed Sets", Name = "No Idea", MenuType = Models.ViewModels.MenuType.Discovery, BasePath = null, Sort = null }; ViewBag.DomainType = Voat.Domain.Models.DomainType.Set; return(View(paged)); break; default: case Domain.Models.DomainType.User: throw new NotImplementedException("This isn't done yet!"); break; } }
// GET: show a subverse index public async Task <ActionResult> SubverseIndex(string subverse, string sort = "hot", bool?previewMode = null) { const string cookieName = "NSFWEnabled"; var viewProperties = new ListViewModel <Domain.Models.Submission>(); viewProperties.PreviewMode = previewMode ?? false; ViewBag.PreviewMode = viewProperties.PreviewMode; //Set to DEFAULT if querystring is present if (Request.Query["frontpage"] == "guest") { subverse = AGGREGATE_SUBVERSE.DEFAULT; } if (String.IsNullOrEmpty(subverse)) { subverse = AGGREGATE_SUBVERSE.FRONT; } SetFirstTimeCookie(); var logVisit = new LogVisitCommand(subverse, null, IpHash.CreateHash(Request.RemoteAddress())).SetUserContext(User); await logVisit.Execute(); //Parse query var options = new SearchOptions(Request.QueryString.Value); //Set sort because it is part of path if (!String.IsNullOrEmpty(sort)) { options.Sort = (Domain.Models.SortAlgorithm)Enum.Parse(typeof(Domain.Models.SortAlgorithm), sort, true); } //set span to day if not specified explicitly if (options.Sort == Domain.Models.SortAlgorithm.Top && !Request.Query.ContainsKey("span")) { options.Span = Domain.Models.SortSpan.Day; } //reset count incase they try to change it with querystrings those sneaky snakes options.Count = 25; viewProperties.Sort = options.Sort; viewProperties.Span = options.Span; var routeName = ROUTE_NAMES.SUBVERSE_INDEX; try { PaginatedList <Domain.Models.Submission> pageList = null; if (AGGREGATE_SUBVERSE.IsAggregate(subverse)) { if (AGGREGATE_SUBVERSE.FRONT.IsEqual(subverse)) { //Check if user is logged in and has subscriptions, if not we convert to default query if (!User.Identity.IsAuthenticated || (User.Identity.IsAuthenticated && !UserData.HasSubscriptions())) { subverse = AGGREGATE_SUBVERSE.DEFAULT; } else { subverse = AGGREGATE_SUBVERSE.FRONT; } //viewProperties.Title = "Front"; //ViewBag.SelectedSubverse = "frontpage"; } else if (AGGREGATE_SUBVERSE.DEFAULT.IsEqual(subverse)) { //viewProperties.Title = "Front"; //ViewBag.SelectedSubverse = "frontpage"; } else { // selected subverse is ALL, show submissions from all subverses, sorted by rank viewProperties.Title = "all subverses"; if (AGGREGATE_SUBVERSE.ANY.IsEqual(subverse)) { viewProperties.Context = new Domain.Models.DomainReference(Domain.Models.DomainType.Subverse, AGGREGATE_SUBVERSE.ANY); subverse = AGGREGATE_SUBVERSE.ANY; } else { viewProperties.Context = new Domain.Models.DomainReference(Domain.Models.DomainType.Subverse, "all"); subverse = AGGREGATE_SUBVERSE.ALL; } } } else { // check if subverse exists, if not, send to a page not found error //Can't use cached, view using to query db var subverseObject = _db.Subverse.FirstOrDefault(x => x.Name.ToLower() == subverse.ToLower()); if (subverseObject == null) { ViewBag.SelectedSubverse = "404"; return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.SubverseNotFound))); } //Set to proper cased name subverse = subverseObject.Name; //HACK: Disable subverse if (subverseObject.IsAdminDisabled.HasValue && subverseObject.IsAdminDisabled.Value) { //viewProperties.Subverse = subverseObject.Name; ViewBag.Subverse = subverseObject.Name; return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.SubverseDisabled))); } //Check NSFW Settings if (subverseObject.IsAdult) { if (User.Identity.IsAuthenticated) { if (!UserData.Preferences.EnableAdultContent) { // display a view explaining that account preference is set to NO NSFW and why this subverse can not be shown return(RedirectToAction("AdultContentFiltered", "Subverses", new { destination = subverseObject.Name })); } } // check if user wants to see NSFW content by reading NSFW cookie else if (!ControllerContext.HttpContext.Request.Cookies.ContainsKey(cookieName)) { return(RedirectToAction("AdultContentWarning", "Subverses", new { destination = subverseObject.Name, nsfwok = false })); } } viewProperties.Context = new Domain.Models.DomainReference(Domain.Models.DomainType.Subverse, subverseObject.Name); viewProperties.Title = subverseObject.Title; routeName = ROUTE_NAMES.SUBVERSE_INDEX; } //what to query var domainReference = new Domain.Models.DomainReference(Domain.Models.DomainType.Subverse, subverse); var q = new QuerySubmissions(domainReference, options).SetUserContext(User); var results = await q.ExecuteAsync().ConfigureAwait(false); viewProperties.Context = domainReference; pageList = new PaginatedList <Domain.Models.Submission>(results, options.Page, options.Count, -1); pageList.RouteName = routeName; viewProperties.Items = pageList; var navModel = new NavigationViewModel() { Description = "Subverse", Name = subverse, MenuType = MenuType.Subverse, BasePath = "/v/" + subverse, Sort = null }; //Backwards compat with Views if (subverse == AGGREGATE_SUBVERSE.FRONT || subverse == AGGREGATE_SUBVERSE.DEFAULT) { navModel.BasePath = ""; navModel.Name = ""; //ViewBag.SelectedSubverse = "frontpage"; viewProperties.Context.Name = ""; pageList.RouteName = Models.ROUTE_NAMES.FRONT_INDEX; } else if (subverse == AGGREGATE_SUBVERSE.ALL || subverse == AGGREGATE_SUBVERSE.ANY) { navModel.BasePath = "/v/all"; navModel.Name = "All"; ViewBag.SelectedSubverse = "all"; viewProperties.Context.Name = "all"; } else { ViewBag.SelectedSubverse = subverse; } ViewBag.SortingMode = sort; ViewBag.NavigationViewModel = navModel; var viewPath = ViewPath(domainReference); return(View(viewPath, viewProperties)); } catch (Exception ex) { throw ex; } }
public async Task <ActionResult> Blocked(Domain.Models.DomainType blockType, int?page) { switch (blockType) { case Domain.Models.DomainType.User: var q = new QueryUserBlocks().SetUserContext(User); var blocks = await q.ExecuteAsync(); var userBlocks = blocks.Where(x => x.Type == Domain.Models.DomainType.User).OrderBy(x => x.Name); var originalUserName = User.Identity.Name; ViewBag.NavigationViewModel = new NavigationViewModel() { MenuType = MenuType.UserProfile, Name = originalUserName, BasePath = "/user/" + originalUserName, Description = originalUserName + "'s Blocked Users", }; return(View("BlockedUsers", userBlocks)); break; case Domain.Models.DomainType.Subverse: default: var domainReference = new Domain.Models.DomainReference(Domain.Models.DomainType.Set, Domain.Models.SetType.Blocked.ToString(), User.Identity.Name); return(RedirectToAction("Details", "Set", new { name = domainReference.FullName })); ////Original Code below, leaving as is bc it works //ViewBag.SelectedSubverse = "subverses"; //ViewBag.SubversesView = "blocked"; //const int pageSize = 25; //int pageNumber = (page ?? 0); //if (pageNumber < 0) //{ // return ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound)); //} //string userName = User.Identity.Name; //// get a list of user blocked subverses with details and order by subverse name, ascending //IQueryable<SubverseDetailsViewModel> blockedSubverses = from c in _db.Subverses // join a in _db.UserBlockedSubverses // on c.Name equals a.Subverse // where a.UserName.Equals(userName) // orderby a.Subverse ascending // select new SubverseDetailsViewModel // { // Name = c.Name, // Title = c.Title, // Description = c.Description, // CreationDate = c.CreationDate, // Subscribers = c.SubscriberCount // }; //var paginatedBlockedSubverses = new PaginatedList<SubverseDetailsViewModel>(blockedSubverses, page ?? 0, pageSize); //return View("BlockedSubverses", paginatedBlockedSubverses); break; } }