public async Task <ActionResult> Index() { var vm = new IndexPageViewModel(); if (Request.IsAuthenticated) { var user = GetUser(); var cond = new PageCondition(0, WebConsts.RefListsPageSize); var result = await _favoriteHandler.GetAllFavoriteRefListsAsync(user.Id, cond, RefListSortKind.PublishedDateDescending); Mapper.Map <PagedRefLists, PagedRefListsViewModel>(result, vm); return(View(vm)); } else { if (Request.IsGoogleCrawl()) { var req = new GetRefListsRequest( null, null, null, null, null, null, PublishingStatusConditionKind.PublishOnly, 0, WebConsts.RefListsPageSize, RefListSortKind.PublishedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); vm.RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists); return(View("IndexStatic", vm)); } else { return(View(vm)); } } }
public async Task <ActionResult> AddByBookmarklet(string url) { /// bindするとvalidateで「<」とか「>」とかがだめになる var title = Request.Unvalidated.QueryString["title"]; SystemContract.RequireNotNullOrWhiteSpace(url, "url"); BusinessContract.Require(url.Length <= WebConsts.MaxRefLinkUrlLength, Errors.UrlTooLong); if (!string.IsNullOrWhiteSpace(title) && title.Length > WebConsts.MaxRefLinkTitleLength) { title = title.Substring(0, WebConsts.MaxRefLinkTitleLength); } var model = new AddByBookmarkletPageViewModel() { Uri = url, Title = title, }; var user = GetUser(); var req = new GetRefListsRequest( user.Id, null, null, null, "", null, PublishingStatusConditionKind.All, 0, 500, RefListSortKind.UpdatedDateDescending ); var resp = await _refListHandler.GetRefListsAsync(req); model.RefLists = Mapper.Map <ICollection <RefListViewModel> >(resp.RefLists); return(View(model)); }
/// <summary> /// createdUserIdが作成したRefListを返します。 /// </summary> public async Task <PagedRefLists> GetRefListsAsync(GetRefListsRequest req) { var query = _refsContext.RefLists.Include("Author").Include("TagUses.Tag").Include("Statistics").AsNoTracking(); query = AppendQueryForAuthorId(query, req.AuthorId); query = AppendQueryForAuthorUserName(query, req.AuthorUserName); query = AppendQueryForTagUseId(query, req.TagUseId); query = AppendQueryForTagName(query, req.TagName, req.TagUseId); query = AppendQueryForFromDate(query, req.FromDate); query = AppendQueryForSearchText(query, req.TitleSearch); query = AppendQueryForPublishingStatus(query, req.PublishingStatusCondition); var storedRefListCount = await query.CountAsync(); query = QueryUtil.AppendQueryForRefListSort(query, req.Sort); query = query.Skip(req.PageIndex * req.PageSize); query = query.Take(req.PageSize); var storedLists = await query.ToArrayAsync(); var ret = new PagedRefLists() { PageIndex = req.PageIndex, PageCount = IndexUtil.GetPageCount(storedRefListCount, req.PageSize), AllRefListCount = storedRefListCount, RefLists = storedLists, }; return(ret); }
public async Task <ActionResult> Sitemap() { var req = new GetRefListsRequest( null, null, null, null, null, null, PublishingStatusConditionKind.PublishOnly, 0, 500, RefListSortKind.UpdatedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); var xml = SitemapUtil.GetXmlString(result.RefLists, Url); return(Content(xml, "text/xml", Encoding.UTF8)); }
public async Task <ActionResult> GetRefLists() { var user = GetUser(); var req = new GetRefListsRequest( user.Id, null, null, null, null, null, PublishingStatusConditionKind.All, 0, 500, RefListSortKind.UpdatedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); var lists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists); return(JsonNet(lists, JsonRequestBehavior.AllowGet)); }
[OutputCache(Duration = 600)] /// 10分 public ActionResult NewlyArrivedRefLists() { var refListHandler = MochaContainer.Resolve <IRefListHandler>(); var req = new GetRefListsRequest( null, null, null, null, null, null, PublishingStatusConditionKind.PublishOnly, 0, 10, RefListSortKind.PublishedDateDescending ); var task = Task.Run(() => refListHandler.GetRefListsAsync(req)); var result = task.Result; var vm = Mapper.Map <IEnumerable <RefListViewModel> >(result.RefLists); return(View("Action/_NewlyArrivedRefLists", vm)); }
private async Task <ManagePageViewModel> PrepareManagePageViewModel( long?authorId, string userName, string titleSearch, string tag, PublishingStatusConditionKind publishingStatusCondition, int pageIndex, int pageSize, RefListSortKind sort ) { var req = new GetRefListsRequest( authorId, userName, null, tag, titleSearch, null, publishingStatusCondition, pageIndex, pageSize, sort ); var resp = await _refListHandler.GetRefListsAsync(req); var vm = Mapper.Map <ManagePageViewModel>(resp); ++vm.PageIndex; vm.TitleSearch = titleSearch; vm.TagUse = tag; return(vm); }
public async Task <ActionResult> Index(string userName = "", string titleSearch = "", string tag = "") { var req = new GetRefListsRequest( null, userName, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, 0, WebConsts.RefListsPageSize, RefListSortKind.PublishedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); var vm = new IndexPageViewModel() { Tag = tag, PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; return(View(vm)); }
public async Task <ActionResult> Detail(string userName, string titleSearch = "", string tag = null) { if (string.IsNullOrWhiteSpace(userName)) { return(RedirectToAction("Index", "User")); } var author = await _UserHandler.GetUserByUserNameAsync(userName); BusinessContract.Require(author != null, Errors.UserNotFound, userName); /// 非公開設定の確認のため本人でもPublishしか見れないようにする。 var req = new GetRefListsRequest( author.Id, null, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, 0, WebConsts.RefListsPageSize, RefListSortKind.PublishedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); var tagUses = await _tagHandler.GetAllTagUsesAsync(author.Id); var vm = new DetailPageViewModel() { Author = Mapper.Map <UserViewModel>(author), OwnedTagUses = Mapper.Map <ICollection <TagUseViewModel> >(tagUses), TitleSearch = titleSearch, TagUse = tag, PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; var isFavored = false; if (IsAuthenticated()) { var user = GetUser(); isFavored = await _favoriteHandler.ExistsFavoriteUserAsync(user.Id, author.Id); } vm.IsFavored = isFavored; return(View(vm)); }
public async Task <ActionResult> Detail(string tag, string titleSearch = "") { if (string.IsNullOrWhiteSpace(tag) || tag == CoreConsts.UnsetTagName) { return(RedirectToAction("Index")); } var tagEntity = await _tagHandler.GetTagAsync(tag); if (tagEntity == null) { return(HttpNotFound()); } var tagVm = Mapper.Map <TagViewModel>(tagEntity); /// 非公開設定の確認のため本人でもPublishしか見れないようにする。 var req = new GetRefListsRequest( null, null, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, 0, WebConsts.RefListsPageSize, RefListSortKind.PublishedDateDescending ); var result = await _refListHandler.GetRefListsAsync(req); var vm = new DetailPageViewModel() { Tag = tagVm, TitleSearch = titleSearch, PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; var isFavored = false; if (IsAuthenticated()) { var user = GetUser(); isFavored = await _favoriteHandler.ExistsFavoriteTagAsync(user.Id, tagVm.Id); } vm.IsFavored = isFavored; return(View(vm)); }
public async Task <ActionResult> NarrowIndex( long?authorId, string titleSearch = "", string tag = "", int pageIndex = 1, RefListSortKind sort = RefListSortKind.PublishedDateDescending ) { var req = new GetRefListsRequest( authorId, null, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, pageIndex - 1, WebConsts.RefListsPageSize, sort ); var result = await _refListHandler.GetRefListsAsync(req); var vm = new IndexPageViewModel() { Tag = tag, PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; return(JsonNet(vm, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> NarrowDetail( string tag, string titleSearch = "", int pageIndex = 1, RefListSortKind sort = RefListSortKind.PublishedDateDescending ) { SystemContract.RequireNotNull(tag, "tag"); SystemContract.Require(tag != CoreConsts.UnsetTagName, "$unsetが指定されました"); /// 非公開設定の確認のため本人でもPublishしか見れないようにする。 var req = new GetRefListsRequest( null, null, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, pageIndex - 1, WebConsts.RefListsPageSize, sort ); var result = await _refListHandler.GetRefListsAsync(req); var vm = new PagedRefListsViewModel() { PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; return(JsonNet(vm, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> NarrowDetail( long?id, string titleSearch = "", string tag = null, int pageIndex = 1, RefListSortKind sort = RefListSortKind.PublishedDateDescending ) { SystemContract.RequireNotNull(id, "id"); //var isPublishOnly = !IsCurrentUserId(id.Value); /// Author以外のユーザーの場合、Publishなリストだけを対象にする /// 非公開設定の確認のため本人でもPublishしか見れないようにする。 var req = new GetRefListsRequest( id.Value, null, null, tag, titleSearch, null, PublishingStatusConditionKind.PublishOnly, pageIndex - 1, WebConsts.RefListsPageSize, sort ); var result = await _refListHandler.GetRefListsAsync(req); var vm = new PagedRefListsViewModel() { PageIndex = result.PageIndex + 1, PageCount = result.PageCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; return(JsonNet(vm, JsonRequestBehavior.AllowGet)); }