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