public HttpResponseMessage GetMyArticlesPagedList(GetMyArticlesPagedListDTO dto) { var pageIndex = dto.offset / dto.limit; List <ArticleStatus> lStatus = new List <ArticleStatus>(); if (Enum.TryParse(dto.status, out ArticleStatus aStatus)) { lStatus.Add(aStatus); } else { lStatus.Add(ArticleStatus.Draft); lStatus.Add(ArticleStatus.Expired); lStatus.Add(ArticleStatus.Live); lStatus.Add(ArticleStatus.NeedsApproval); lStatus.Add(ArticleStatus.Upcoming); } IPagedList <Article> arts = _repository.GetPagedList(ActiveModule.ModuleID, pageIndex, dto.limit, dto.searchPhrase, lStatus, true, UserInfo.UserID, null, null, null, dto.sortBy, dto.sortAsc); var artsVM = Mapper.Map <List <Article>, List <ArticleViewModel> >(arts.ToList()); var artPerms = new ArticlePermissions(UserInfo, ActiveModule, PortalSettings); artsVM.ForEach(a => { setVwUrl(ref a); a.Actions = artPerms.GetArticleActions(Mapper.Map <ArticleViewModel, Article>(a)); }); return(Request.CreateResponse(new { data = artsVM, meta = new PagedListMetaViewModel(arts) })); }
public HttpResponseMessage Upsert(ArticleViewModel a) { var settings = Components.SettingsController.Instance.GetSettings(ActiveModule, PortalSettings); var isEditor = CommonHelper.UserHasEditorPerms(UserInfo, settings, PortalSettings); var isArticleAuthor = CommonHelper.UserHasAuthorPerms(UserInfo, settings, PortalSettings) && UserInfo.UserID == (int)a.AuthorID; if (!isEditor && !isArticleAuthor) { throw new Exception("Permission Denied - User does not have permission to Upsert Article with Id: " + a.ArticleID.ToString()); } Article art; if (a.ArticleID > 0) { art = Update(a); } else { art = Create(a); } if (art.Status == ArticleStatus.NeedsApproval) { if (settings.PermissionsAllowEditorsToSelfPublish && UserInfo.IsInRole(settings.PermissionsEditorRoles)) { art.ApproverID = UserInfo.UserID; art.IsApproved = true; _repository.Update(art); } else if (settings.NotificationNotifyEditorsOnSubmission) { //Send emails to Editors //TODO inegrate with DNN notifications system. var approvers = DotNetNuke.Security.Roles.RoleController.Instance.GetUsersByRole(PortalSettings.PortalId, settings.PermissionsEditorRoles); if (approvers.Count != 0) { var emails = approvers.Select(u => u.Email).ToArray(); DotNetNuke.Services.Mail.Mail.SendEmail(PortalSettings.Email, string.Join(",", emails), "Article requires approval", "An article requires Editor approval: " + UrlHelper.GetAdminURL(ActiveModule.TabID) ); } } } var artPerms = new ArticlePermissions(UserInfo, ActiveModule, PortalSettings); var artVm = Mapper.Map <Article, ArticleViewModel>(art); setVwUrl(ref artVm); artVm.Actions = artPerms.GetArticleActions(art); return(Request.CreateResponse(artVm)); }
public HttpResponseMessage GetPagedList(GetPagedListDTO dto) { var pageIndex = dto.offset / dto.limit; string sStatus = (string.IsNullOrWhiteSpace(dto.status) ? null : dto.status); IPagedList <Article> arts = _repository.GetPagedList(ActiveModule.ModuleID, pageIndex, dto.limit, dto.searchPhrase, null, true, -1, null, null, null, dto.sortBy, dto.sortAsc); var artsVM = Mapper.Map <List <Article>, List <ArticleViewModel> >(arts.ToList()); var artPerms = new ArticlePermissions(UserInfo, ActiveModule, PortalSettings); artsVM.ForEach(a => { setVwUrl(ref a); a.Actions = artPerms.GetArticleActions(Mapper.Map <ArticleViewModel, Article>(a)); }); return(Request.CreateResponse(new { data = artsVM, meta = new PagedListMetaViewModel(arts) })); }
public HttpResponseMessage Get(GetDTO dto) { ArticleViewModel art; if (dto.articleId <= 0) { art = new ArticleViewModel(); art.Actions.Add("Edit"); art.ArticleID = -1; art.ModuleID = ActiveModule.ModuleID; art.AuthorID = UserInfo.UserID; art.StartDate = DateTime.Now; } else { art = Mapper.Map <Article, ArticleViewModel>(_repository.Get(dto.articleId, ActiveModule.ModuleID)); var artPerms = new ArticlePermissions(UserInfo, ActiveModule, PortalSettings); setVwUrl(ref art); art.Actions = artPerms.GetArticleActions(Mapper.Map <ArticleViewModel, Article>(art)); } return(Request.CreateResponse(art)); }