public ArticleRelatedToEditedArticleModel(int articleId, ArticleStatus status, DateTime changedOn, string changedBy)
 {
     ArticleId = articleId;
     Status = status;
     ChangedOn = changedOn;
     ChangedBy = changedBy;
 }
예제 #2
0
        public List <ArticleStatus> GetAll()
        {
            ArticleStatusDAC     _articleStatusComponent = new ArticleStatusDAC();
            IDataReader          reader             = _articleStatusComponent.GetAllArticleStatus().CreateDataReader();
            List <ArticleStatus> _articleStatusList = new List <ArticleStatus>();

            while (reader.Read())
            {
                if (_articleStatusList == null)
                {
                    _articleStatusList = new List <ArticleStatus>();
                }
                ArticleStatus _articleStatus = new ArticleStatus();
                if (reader["ArticleStatusId"] != DBNull.Value)
                {
                    _articleStatus.ArticleStatusId = Convert.ToInt32(reader["ArticleStatusId"]);
                }
                if (reader["Name"] != DBNull.Value)
                {
                    _articleStatus.Name = Convert.ToString(reader["Name"]);
                }
                if (reader["RowGuid"] != DBNull.Value)
                {
                    _articleStatus.RowGuid = new Guid(reader["RowGuid"].ToString());
                }
                if (reader["ModifiedDate"] != DBNull.Value)
                {
                    _articleStatus.ModifiedDate = Convert.ToDateTime(reader["ModifiedDate"]);
                }
                _articleStatus.NewRecord = false;
                _articleStatusList.Add(_articleStatus);
            }
            reader.Close();
            return(_articleStatusList);
        }
예제 #3
0
파일: Article.cs 프로젝트: jimfim/Sproggit
 public void When(ArticleCreated articleCreated)
 {
     Id      = articleCreated.Id;
     Title   = articleCreated.Title;
     Content = articleCreated.Content;
     Status  = ArticleStatus.Creating;
 }
예제 #4
0
        public ArticleStatus GetByID(int _articleStatusId)
        {
            ArticleStatusDAC _articleStatusComponent = new ArticleStatusDAC();
            IDataReader      reader         = _articleStatusComponent.GetByIDArticleStatus(_articleStatusId);
            ArticleStatus    _articleStatus = null;

            while (reader.Read())
            {
                _articleStatus = new ArticleStatus();
                if (reader["ArticleStatusId"] != DBNull.Value)
                {
                    _articleStatus.ArticleStatusId = Convert.ToInt32(reader["ArticleStatusId"]);
                }
                if (reader["Name"] != DBNull.Value)
                {
                    _articleStatus.Name = Convert.ToString(reader["Name"]);
                }
                if (reader["RowGuid"] != DBNull.Value)
                {
                    _articleStatus.RowGuid = new Guid(reader["RowGuid"].ToString());
                }
                if (reader["ModifiedDate"] != DBNull.Value)
                {
                    _articleStatus.ModifiedDate = Convert.ToDateTime(reader["ModifiedDate"]);
                }
                _articleStatus.NewRecord = false;
            }
            reader.Close();
            return(_articleStatus);
        }
예제 #5
0
        private void UpdateStatus(ArticleUser reading, ArticleStatus newStatus)
        {
            if (reading.Status >= newStatus)
            {
                // cant downgrade status
                return;
            }

            switch (newStatus)
            {
            case ArticleStatus.New:
                reading.CreatedAt = DateTime.UtcNow;
                break;

            case ArticleStatus.Sent:
                reading.SentAt = DateTime.UtcNow;
                break;

            case ArticleStatus.Read:
                reading.ReadAt = DateTime.UtcNow;
                break;

            default:
                throw new Exception($"Unknown status: {newStatus}");
            }
            reading.Status = newStatus;
        }
예제 #6
0
파일: Article.cs 프로젝트: geeking/Jiavs
 public Article(ArticleContent content, ArticleStatus status, ArticleSettings settings, uint ownerId) : this(content, status, settings)
 {
     this.Author = new ArticleUser()
     {
         Id = ownerId
     };
 }
예제 #7
0
        /// <summary>
        /// 更新文章状态
        /// </summary>
        /// <param name="articleId">文章Id</param>
        /// <param name="status">状态值</param>
        /// <returns></returns>
        public async Task <Article> UpdateArticleStatus(int articleId, ArticleStatus status)
        {
            var updateArticle = await discoveryDbContext.Article.FirstOrDefaultAsync(article => article.PKID == articleId);

            if (updateArticle == null)
            {
                throw new Exception("文章不存在");
            }

            updateArticle.Status             = status.ToString();
            updateArticle.LastUpdateDateTime = DateTime.Now;
            //如果将文章撤回,并且当前文章为置顶状态,则设置为非置顶
            if (status == ArticleStatus.Withdrew && updateArticle.IsTopMost.HasValue && updateArticle.IsTopMost.Value == true)
            {
                updateArticle.IsTopMost = false;
            }

            await discoveryDbContext.SaveChangesAsync();

            if (status == ArticleStatus.Withdrew)
            {
                await InsertDataChangeRecord(updateArticle, DataOperationEnum.Withdrew);
            }
            return(updateArticle);
        }
예제 #8
0
        public Article(string Subject, DateTime Date, string Poster, string[] Groups, string ImportFile)
            : this()
        {
            m_Subject       = Subject;
            m_Date          = Date;
            m_Poster        = Poster;
            m_Groups        = Groups;
            m_Segments      = new ArrayList();
            m_Status        = ArticleStatus.Loading;
            m_Filename      = "";
            m_Size          = 0;
            m_FinishedParts = 0;
            m_DownloadCnt   = 0;
            m_ImportFile    = ImportFile;

            m_StatusItem = new System.Windows.Forms.ListViewItem();
            while (m_StatusItem.SubItems.Count < Global.ArticleListCols)
            {
                m_StatusItem.SubItems.Add("");
            }
            m_StatusItem.Tag = this;

            UpdateStatus();

            OnDownloadedHandler = new OnDownloadedDelegate(DownloadedHandler);
        }
        public override IList <Article> GetArticles(Category category, ArticleStatus status, bool recursive)
        {
            IList <Article> articles = null;

            using (TransactionScope transaction = new TransactionScope(mConfiguration))
            {
                ArticleDataStore dataStore = new ArticleDataStore(transaction);
                articles = dataStore.FindByCategoryAndOwner(category, null, status);
                if (recursive)
                {
                    // Find children of this parent category.
                    CategoryDataStore ds = new CategoryDataStore(transaction);
                    IList <Category>  childCategories = ds.FindByChildOfCategory(category.Id);
                    foreach (Category subCategory in childCategories)
                    {
                        IList <Article> subArticles = dataStore.FindByCategoryAndOwner(subCategory, null, status);
                        foreach (Article subArticle in subArticles)
                        {
                            articles.Add(subArticle);
                        }
                    }
                }
            }
            return(articles);
        }
예제 #10
0
        public virtual IQueryable <ArticleFeedback> GetArticleStatQuery(ArticleStatus status)
        {
            var query = from it in dbContext.Set <ArticleFeedback>()
                        where it.Status == status
                        select it;

            return(query);
        }
예제 #11
0
 /// <summary>
 /// 搜索文章
 /// </summary>
 /// <param name="status">文章状态</param>
 /// <param name="keyword">文章标题</param>
 /// <param name="startCreateDateTime">创建开始时间</param>
 /// <param name="endCreateDateTime">创建结束时间</param>
 /// <param name="pager">分页模型</param>
 /// <returns>文章列表</returns>
 public static async Task <List <Article> > SearchArticle(ArticleStatus status, PagerModel pager, DateTime?startCreateDateTime, DateTime?endCreateDateTime, string pkid = null, string keyword = null, int type = 5, int category = -1)
 {
     if (string.IsNullOrWhiteSpace(keyword) || string.IsNullOrEmpty(keyword))
     {
         keyword = string.Empty;
     }
     return(await articleDal.SearchArticle(ProcessConnection.OpenMarketingReadOnly, status, pager, startCreateDateTime, endCreateDateTime, pkid, keyword, type, category));
 }
예제 #12
0
 public abstract IList <Article> FindArticles(Filter <string> categoryName,
                                              Filter <string> searchFor,
                                              Filter <string> author,
                                              Filter <string> owner,
                                              Filter <string> tag,
                                              DateTime?fromDate, DateTime?toDate,
                                              ArticleStatus status,
                                              PagingInfo paging);
예제 #13
0
 public CreateArticleRequest(string title, string description, ArticleStatus status, SeoData?seoData = null, string[]?tags = null)
 {
     Title       = title;
     Description = description;
     Status      = status;
     SeoData     = seoData;
     Tags        = tags;
 }
예제 #14
0
 public abstract IList<Article> FindArticles(Filter<string> categoryName,
                                    Filter<string> searchFor,
                                    Filter<string> author,
                                    Filter<string> owner,
                                    Filter<string> tag, 
                                    DateTime? fromDate, DateTime? toDate,
                                    ArticleStatus status,
                                    PagingInfo paging);
예제 #15
0
        public async Task <PaginationEntity <ArticleFavorite> > GetUserFavoriteArticleAsync(int pageIndex, int pageSize, int userId)
        {
            ArticleStatus[] status = new ArticleStatus[] { ArticleStatus.Confirmed };

            var result = (from f in DnaCoreContext.ArticleFavorite
                          join a in DnaCoreContext.Article on f.ArticleId equals a.Id
                          join c in DnaCoreContext.ArticleCategory on a.CategoryId equals c.Id
                          join user in DnaCoreContext.UserDetail on a.CreatedById equals user.UserId
                          where status.Contains(a.Status) && c.IsVisible == true
                          orderby f.CreatedDate descending
                          select new ArticleFavorite
            {
                Id = f.Id,
                Article = new Article
                {
                    Id = a.Id,
                    ShortDescription = a.ShortDescription,
                    Slug = a.Slug,
                    Title = a.Title,
                    CategoryId = a.CategoryId,
                    CreatedById = a.CreatedById,
                    CreatedDate = a.CreatedDate,
                    Author = new UserDetail
                    {
                        FirstName = user.FirstName,
                        LastName = user.LastName
                    },
                    Category = new ArticleCategory
                    {
                        Id = c.Id,
                        Name = c.Name
                    },
                    ImageMaps = (from i in DnaCoreContext.Image
                                 join map in DnaCoreContext.ArticleImage on i.Id equals map.ImageId
                                 where map.ArticleId == a.Id && i.IsPrimary == true
                                 select new ArticleImage
                    {
                        Id = map.Id,
                        Image = new Image
                        {
                            Id = i.Id,
                            FileName = i.FileName,
                            FileExtension = i.FileExtension,
                            ImageUrl = i.ImageUrl,
                            IsPrimary = true
                        }
                    }).ToList()
                }
            });

            return(new PaginationEntity <ArticleFavorite>
            {
                Page = pageIndex,
                PageSize = pageSize,
                TotalCount = await result.CountAsync(),
                Items = await result.Skip((pageIndex - 1) *pageSize).Take(pageSize).ToListAsync()
            });
        }
 public IList<Entities.Article> GetArticlesByStatus(ArticleStatus articleStatus)
 {
     var articles = (from a in DbContext().Article
                         .Include(y => y.Comments)
                    //// where (a.Status == articleStatus)
                     select a)
                         .OrderByDescending(x => x.CreatedDate).ToList();
     return articles;
 }
예제 #17
0
        public static DataTable GetArticles(int CategoryID, ArticleStatus status)
        {
            ForumArticle mArticles = new ForumArticle();

            mArticles.CategoryID    = CategoryID;
            mArticles.ArticleStatus = (int)status;

            return(mArticles.LoadArticlesByParams().Tables[0]);
        }
        public override IList <Article> GetAllArticlesByOwner(string owner, ArticleStatus status)
        {
            using (TransactionScope transaction = new TransactionScope(mConfiguration))
            {
                ArticleDataStore dataStore = new ArticleDataStore(transaction);

                return(dataStore.FindByOwner(owner, status));
            }
        }
예제 #19
0
        public static void UpdateArticleStatus(int ArticleID, ArticleStatus status)
        {
            ForumArticle mArticle = new ForumArticle();

            mArticle.Load(ArticleID);

            mArticle.ArticleStatus = (int)status;
            mArticle.Save();
        }
예제 #20
0
        private async Task <IHttpActionResult> SaveArticleFeedbackAsync(int id, ArticleStatus status)
        {
            var user = membershipService.GetCurrentLoggedInUser();

            if (user.UserType == UserType.Employer)
            {
                await articleService.SaveArticleFeedbackAsync(id, user.Id, status);
            }
            return(Ok(await articleService.GetArticleWithStatQuery(id).SingleOrDefaultAsync()));
        }
예제 #21
0
        public IList <Entities.Article> GetArticlesByStatus(ArticleStatus articleStatus)
        {
            var articles = (from a in DbContext().Article
                            .Include(y => y.Comments)
                            //// where (a.Status == articleStatus)
                            select a)
                           .OrderByDescending(x => x.CreatedDate).ToList();

            return(articles);
        }
예제 #22
0
파일: Article.cs 프로젝트: geeking/Jiavs
 private Article(ArticleContent content, ArticleStatus status, ArticleSettings settings)
 {
     if (status.CreatedTime == null)
     {
         Status.CreatedTime = DateTime.UtcNow;
         Status.ModifyTime  = DateTime.UtcNow;
     }
     this.Content  = content;
     this.Status   = status;
     this.Settings = settings;
 }
예제 #23
0
        public bool Insert(ArticleStatus articlestatus)
        {
            int autonumber = 0;
            ArticleStatusDAC articlestatusComponent = new ArticleStatusDAC();
            bool             endedSuccessfuly       = articlestatusComponent.InsertNewArticleStatus(ref autonumber, articlestatus.Name, articlestatus.RowGuid, articlestatus.ModifiedDate);

            if (endedSuccessfuly)
            {
                articlestatus.ArticleStatusId = autonumber;
            }
            return(endedSuccessfuly);
        }
 public ArticleDisplayForEditModel(string body, Language language, ArticleStatus status, string code, int id, bool disableBodyEdit, IEnumerable<ArticleRelatedToEditedArticleModel> relatedToEdited, ICollection<Language> articleLanguages, ICollection<SupportedLanguage> supportedLanguages )
 {
     Body = body;
     Language = language;
     Status = status;
     Code = code;
     ArticleId = id;
     DisableBodyEdit = disableBodyEdit;
     RelatedAricles = relatedToEdited;
     ExistingArticleLanguages = articleLanguages;
     SupportedLanguages = supportedLanguages;
 }
예제 #25
0
        /// <summary>
        /// Search for articles with the specified filters.
        /// The filters are aggregated with an AND expression.
        /// </summary>
        /// <param name="categoryName"></param>
        /// <param name="searchFor"></param>
        /// <param name="author"></param>
        /// <param name="owner"></param>
        /// <param name="tag"></param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <param name="status"></param>
        /// <param name="paging"></param>
        /// <returns></returns>
        public IList <Article> FindByFields(Filter <string> categoryName,
                                            Filter <string> searchFor,
                                            Filter <string> author,
                                            Filter <string> owner,
                                            Filter <string> tag,
                                            DateTime?fromDate, DateTime?toDate,
                                            ArticleStatus status,
                                            PagingInfo paging)
        {
            ICriteria criteria = CreateCriteria();

            if (author != null)
            {
                criteria.Add(author.ToCriterion("Author"));
            }

            if (owner != null)
            {
                criteria.Add(owner.ToCriterion("Owner"));
            }

            if (tag != null)
            {
                criteria.Add(tag.ToCriterion("Tag"));
            }

            if (searchFor != null)
            {
                criteria.Add(Expression.Or(searchFor.ToCriterion("Body"), searchFor.ToCriterion("Title")));
            }

            if (fromDate != null)
            {
                criteria.Add(Expression.Ge("UpdateDate", fromDate));
            }

            if (toDate != null)
            {
                criteria.Add(Expression.Le("UpdateDate", toDate));
            }

            if (categoryName != null)
            {
                ICriteria categoryCriteria = criteria.CreateCriteria("Category");
                categoryCriteria.Add(categoryName.ToCriterion("Name"));
            }

            AddCriteriaForStatus(criteria, status);

            criteria.AddOrder(Order.Desc("UpdateDate"));

            return(Find(criteria, paging, false));
        }
예제 #26
0
        public async Task <IActionResult> GetAllArticleAsync(int page, int pageSize)
        {
            ArticleStatus[] status   = new ArticleStatus[] { ArticleStatus.Confirmed, ArticleStatus.UnConfirmed };
            var             response = await _articleService.FindByStatus(page, pageSize, status);

            if (response.Success)
            {
                return(Ok(response.Item));
            }
            else
            {
                return(BadRequest(response.Message));
            }
        }
예제 #27
0
        public ArticleModel(
            int articleId
            , int articleGroupThreadId
            , int articleGroupId
            , string friendlyName
            , DateTime dateCreatedUtc
            , int totalComments
            , XElement extraInfo
            , int authorUserId
            , ArticleStatus articleStatus
            , string subject
            , string formattedBody
            , int messageBoardThreadId
            , bool isMessageBoardEnabled
            , int?contentLevelNodeId
            , string breadCrumbs
            , string breadCrumbsSplitIndexes
            )
            : base(
                articleId
                , articleGroupThreadId
                , articleGroupId
                , friendlyName
                , dateCreatedUtc
                , totalComments
                , extraInfo)
        {
            this.ArticleStatus         = articleStatus;
            this.AuthorUserId          = authorUserId;
            this.Subject               = subject;
            this.FormattedBody         = formattedBody;
            this.MessageBoardThreadId  = messageBoardThreadId;
            this.IsMessageBoardEnabled = isMessageBoardEnabled;
            this.Attachments           = new List <IArticleAttachmentModel>();

            this.ContentLevelNodeId = contentLevelNodeId;
            this.ContentLevelNodes  = new List <string>();
            if (!string.IsNullOrEmpty(breadCrumbs) &&
                !string.IsNullOrEmpty(breadCrumbsSplitIndexes))
            {
                int index;
                int lastIndex = 0;
                foreach (string split in breadCrumbsSplitIndexes.Split(','))
                {
                    index = int.Parse(split);
                    this.ContentLevelNodes.Add(breadCrumbs.Substring(lastIndex, index));
                    lastIndex += index;
                }
            }
        }
예제 #28
0
        public async Task <IActionResult> ChangeArticleStatusAsync(int id, [FromBody] ArticleStatus status)
        {
            AssignModelState();
            var response = await _articleService.ChangeStatusAsync(id, status);

            if (response.Success)
            {
                return(Ok(response.Item));
            }
            else
            {
                return(BadRequest(response.Message));
            }
        }
예제 #29
0
 public static bool UpdateArticleStatus(SqlConnection conn, int articleId, ArticleStatus status, int isShow)
 {
     using (conn)
     {
         const string sql       = @"UPDATE Marketing..tbl_Article SET Status=@Status,IsShow=@IsShow,LastUpdateDateTime=GETDATE() WHERE PKID=@PKID";
         var          parameter = new SqlParameter[]
         {
             new SqlParameter("@PKID", articleId),
             new SqlParameter("@Status", status.ToString()),
             new SqlParameter("@IsShow", isShow)
         };
         return(SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, parameter) > 0);
     }
 }
예제 #30
0
        public IList <Article> FindByOwner(string owner, ArticleStatus status)
        {
            ICriteria criteria = CreateCriteria();

            criteria.AddOrder(Order.Asc("Title"));

            AddCriteriaForStatus(criteria, status);

            if (owner != null)
            {
                criteria.Add(Expression.Eq("Owner", owner));
            }

            return(Find(criteria, false));
        }
예제 #31
0
 public ArticleMetadataModel(
     ArticleStatus status,
     Version version,
     NodaTime.LocalDate firstRevision,
     NodaTime.LocalDate lastRevision,
     NodaTime.LocalDate lastReview,
     NodaTime.LocalDate nextReview)
 {
     Status        = status;
     Version       = version;
     FirstRevision = firstRevision;
     LastRevision  = lastRevision;
     LastReview    = lastReview;
     NextReview    = nextReview;
 }
예제 #32
0
 public ArticleAddCommand(ArticleContent content, ArticleSettings settings, ArticleStatus status, uint authorId)
 {
     this.Content  = content;
     this.Settings = settings;
     this.Status   = status;
     this.AuthorId = authorId;
     if (this.Status != null)
     {
         Status.CreatedTime = DateTime.UtcNow;
         if (Status.IsPublished)
         {
             Status.PublishTime = DateTime.UtcNow;
         }
     }
 }
예제 #33
0
        public async Task <IActionResult> Details(int id, ArticleStatus status)
        {
            var articleToUpdate = await _context.Article.SingleOrDefaultAsync(a => a.ArticleID == id);

            if (articleToUpdate == null)
            {
                return(NotFound());
            }

            var opeartion    = (status == ArticleStatus.Approved ? ArticleOperations.Approve : ArticleOperations.Reject);
            var isAuthorized = await _aus.AuthorizeAsync(
                User, articleToUpdate,
                opeartion);

            if (!isAuthorized.Succeeded)
            {
                return(new ChallengeResult());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    await TryUpdateModelAsync <Article>(articleToUpdate, "",
                                                        a => a.Status
                                                        );

                    await _context.SaveChangesAsync();

                    _toaster.ToastSuccess("文章审核成功");
                }
                catch (DbUpdateConcurrencyException)
                {
                    _toaster.ToastError("文章审核失败");

                    if (!ArticleExists(id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(articleToUpdate));
        }
예제 #34
0
 public static IList <Article> FindArticles(Filter <string> categoryName,
                                            Filter <string> searchFor,
                                            Filter <string> author,
                                            Filter <string> owner,
                                            Filter <string> tag,
                                            DateTime?fromDate, DateTime?toDate,
                                            ArticleStatus status,
                                            PagingInfo paging)
 {
     return(Provider.FindArticles(categoryName, searchFor,
                                  author, owner,
                                  tag,
                                  fromDate, toDate,
                                  status,
                                  paging));
 }
예제 #35
0
        public Article( string Subject, DateTime Date, string Poster, string[] Groups, string ImportFile)
        {
            m_Subject = Subject;
            m_Date = Date;
            m_Poster = Poster;
            m_Groups = Groups;
            m_Segments = new ArrayList();
            m_Status = ArticleStatus.Loading;
            m_Filename = "";
            m_Size = 0;
            m_FinishedParts = 0;
            m_DownloadCnt = 0;
            m_ImportFile = ImportFile;

            m_StatusItem = new System.Windows.Forms.ListViewItem();
            while(m_StatusItem.SubItems.Count < Global.ArticleListCols)
                m_StatusItem.SubItems.Add("");
            m_StatusItem.Tag = this;

            UpdateStatus();

            OnDownloadedHandler = new OnDownloadedDelegate(DownloadedHandler);
        }
예제 #36
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="id">The ID of the article.</param>
 /// <param name="title">The title of the article.</param>
 /// <param name="type">The type of the article.</param>
 /// <param name="originalDate">The creation date of the article.</param>
 /// <param name="originalUser">The user that created the article.</param>
 /// <param name="lastModifiedDate">The last modification date of the article.</param>
 /// <param name="lastModifiedUser">The last user to modify the article.</param>
 /// <param name="status">The status of the article.</param>
 /// <param name="lockedBy">The acronym of the user that has locked the article (if any).</param>
 /// <param name="lockedAt">The date and time at which the article was locked.</param>
 /// <param name="validationDate">The date at which the last change of status was made.</param>
 /// <param name="validationUser">The user that made the last change on the status of the article.</param>
 /// <param name="summary">The summary of the article.</param>
 /// <param name="text">The text of the article.</param>
 public WikiArticle(int id, string title, ArticleType type, DateTime originalDate, string originalUser, DateTime lastModifiedDate, string lastModifiedUser, ArticleStatus status, string lockedBy, DateTime lockedAt, DateTime validationDate, string validationUser, string summary, string text)
     : base(id, title, type, originalDate, originalUser, lastModifiedDate, lastModifiedUser, status, lockedBy, lockedAt, validationDate, validationUser, summary)
 {
     this.m_Text = text;
 }
예제 #37
0
        public void IncreaseFinishedParts()
        {
            lock( this)
            {
                m_FinishedParts++;
            }

            if(m_FinishedParts == m_Segments.Count)
                if(m_Status != ArticleStatus.Loading)
                {
                    m_Status = ArticleStatus.DecodeQueued;
                    Decoder.DecodeQueue.Enqueue(this);
                }

            UpdateStatus();
        }
예제 #38
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="baseArticle">A BaseArticle upon which this object is created.</param>
 /// <param name="id">The id of the article.</param>        
 /// <param name="originalDate">The date at which the article was created.</param>
 /// <param name="originalUser">The user that created the article.</param>
 /// <param name="lastModifiedDate">The date at which the article was last modified.</param>
 /// <param name="lastModifiedUser">The user that made the last modifications to the article.</param>
 /// <param name="status">The status of the article.</param>
 /// <param name="lockedBy">The user that currently has locked the article (if any).</param>
 /// <param name="lockedAt">The date and time at which the article was locked (if it is locked).</param>
 /// <param name="validationDate">The date at which the last change of status was made.</param>
 /// <param name="validationUser">The user that made the last change on the status of the article.</param>
 /// <param name="summary">The summary of the article.</param>
 public WikiArticleInfo(BaseArticle baseArticle, int id, DateTime originalDate, string originalUser, DateTime lastModifiedDate, string lastModifiedUser, ArticleStatus status, string lockedBy, DateTime lockedAt, DateTime validationDate, string validationUser, string summary)
     : this(id, baseArticle.Title, baseArticle.Type, originalDate, originalUser, lastModifiedDate, lastModifiedUser, status, lockedBy, lockedAt, validationDate, validationUser, summary)
 {
 }
예제 #39
0
 public static IList<Article> FindArticles(Filter<string> categoryName,
                                    Filter<string> searchFor,
                                    Filter<string> author,
                                    Filter<string> owner,
                                    Filter<string> tag,  
                                    DateTime? fromDate, DateTime? toDate,
                                    ArticleStatus status,
                                    PagingInfo paging)
 {
     return Provider.FindArticles(categoryName, searchFor,
                                 author, owner,
                                 tag,
                                  fromDate, toDate,
                                  status,
                                  paging);
 }
예제 #40
0
 public static IList<Article> GetArticles(Category category,
                     ArticleStatus status)
 {
     return Provider.GetArticles(category, status);
 }
예제 #41
0
        public override IList<Article> GetArticlesByOwner(Category category,
                            string owner, ArticleStatus status)
        {
            using (TransactionScope transaction = new TransactionScope(mConfiguration))
            {
                ArticleDataStore dataStore = new ArticleDataStore(transaction);

                return dataStore.FindByCategoryAndOwner(category, owner, status);
            }
        }
예제 #42
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="id">The id of the article.</param>
 /// <param name="title">The title of the article.</param>
 /// <param name="type">The type of the article.</param>
 /// <param name="creationDate">The date at which the article was created.</param>
 /// <param name="creationUser">The user that created the article.</param>
 /// <param name="lastModifiedDate">The date at which the article was last modified.</param>
 /// <param name="lastModifiedUser">The user that made the last modifications to the article.</param>
 /// <param name="status">The status of the article.</param>
 /// <param name="lockedBy">The user that currently has locked the article (if any).</param>
 /// <param name="lockedAt">The date and time at which the article was locked (if it is locked).</param>
 /// <param name="validationDate">The date at which the last change of status was made.</param>
 /// <param name="validationUser">The user that made the last change on the status of the article.</param>
 /// <param name="summary">The summary of the article.</param>
 public WikiArticleInfo(int id, string title, ArticleType type, DateTime creationDate, string creationUser, DateTime lastModifiedDate, string lastModifiedUser, ArticleStatus status, string lockedBy, DateTime lockedAt, DateTime validationDate, string validationUser, string summary)
     : base(title, type)
 {
     this.m_Id = id;
     this.m_CreationDate = creationDate;
     this.m_CreationUser = creationUser;
     this.m_LastModificationDate = lastModifiedDate;
     this.m_LastModificationUser = lastModifiedUser;
     this.m_Status = status;
     this.m_LockedBy = lockedBy;
     this.m_LockedAt = lockedAt;
     this.m_Summary = summary;
     this.m_ValidationDate = validationDate;
     this.m_ValidationUser = validationUser;
 }
예제 #43
0
 public abstract IList<Article> GetArticles(Category category,
                     ArticleStatus status);
예제 #44
0
        public override IList<Article> FindArticles(Filter<string> categoryName,
                                           Filter<string> searchFor,
                                           Filter<string> author,
                                           Filter<string> owner,
                                           Filter<string> tag,  
                                           DateTime? fromDate, DateTime? toDate,
                                           ArticleStatus status,
                                           PagingInfo paging)
        {
            using (TransactionScope transaction = new TransactionScope(mConfiguration))
            {
                ArticleDataStore dataStore = new ArticleDataStore(transaction);

                return dataStore.FindByFields(categoryName, searchFor,
                                                author, owner,
                                                tag,
                                                fromDate, toDate,
                                                status,
                                                paging);
            }
        }
예제 #45
0
 /// <summary>
 /// Update the status of an article.
 /// This method is private because it does not perform any user rights checks, which must be thus done before calling it.
 /// </summary>
 /// <param name="article">An article whose status is updated.</param>
 /// <param name="user">The user updating the status of an article.</param>
 /// <param name="articleStatus">The new status of the article.</param>
 /// <param name="mustReleaseLock">Indicates that the lock that user has on the article must be released.</param>
 /// <returns>True if the query was successful.</returns>
 private static bool UpdateArticleStatus(WikiArticle article, User user, ArticleStatus articleStatus, bool mustReleaseLock)
 {
     // No user rights are checked except that the article is not locked by another user.
     // The last modification user is also updated so that we can check whether the user can undo the article afterwards.
     string query = string.Format(@"UPDATE tbl_articles SET art_status = {2}, art_modification_user = '******', art_validation_date = GETDATE(), art_validation_user = '******', art_locked_by = '{3}'
         WHERE art_id_pkey = {0} AND (art_locked_by = '{1}' OR art_locked_by = '')",
         article.Id, user.UserLogin, (int)articleStatus, mustReleaseLock ? string.Empty : user.UserLogin);
     bool isSuccessful = Convert.ToBoolean(DataAccess.ExecuteOwnStatement(query));
     if (isSuccessful)
     {
         // If the query was successful, update the current article.
         article.Status = articleStatus;
         if (mustReleaseLock)
             article.LockedBy = string.Empty;
         else
             article.LockedBy = user.UserLogin;
     }
     return isSuccessful;
 }
예제 #46
0
 public static IList<Article> GetArticlesByOwner(Category category,
                     string owner, ArticleStatus status)
 {
     return Provider.GetArticlesByOwner(category, owner, status);
 }
예제 #47
0
        /// <summary>
        /// Gets a list of all the articles that are currently in a given status.
        /// </summary>
        /// <param name="articleStatus">An article status.</param>
        /// <returns>A list of articles in the given status.</returns>
        public static List<WikiArticleInfo> GetArticles(ArticleStatus articleStatus)
        {
            // Approved articles originate from a different source.
            if (articleStatus == ArticleStatus.Approved)
                return GetApprovedArticles();

            string query = string.Format(@"SELECT {1} FROM tbl_articles WHERE art_status = '{0}' ORDER BY art_title", (int)articleStatus, ARTICLE_INFO_FIELDS);
            return GetArticleInfosFromQuery(query);
        }
예제 #48
0
 public abstract IList<Article> GetArticlesByOwner(Category category,
                     string owner, ArticleStatus status);
예제 #49
0
        /// <summary>
        /// Copy constructor.
        /// </summary>
        /// <param name="info">The underlying WikiArticleInfo from which this object is constructed.</param>
        public WikiArticleInfo(WikiArticleInfo info)
            : base(info.Title, info.Type)
        {
            this.m_Id = info.Id;
            this.m_CreationDate = info.CreationDate;
            this.m_CreationUser = info.CreationUser;
            this.m_LastModificationDate = info.LastModificationDate;
            this.m_LastModificationUser = info.LastModificationUser;
            this.m_Status = info.Status;
            this.m_LockedBy = info.LockedBy;
            this.m_LockedAt = info.LockedAt;
            this.m_ValidationDate = info.ValidationDate;
            this.m_ValidationUser = info.ValidationUser;

            this.m_ParentCategories = info.ParentCategories;
            this.m_ParentApprovedCategories = info.ParentApprovedCategories;
            this.m_ChildPortals = info.ChildPortals;
            this.m_ChildCategories = info.ChildCategories;
            this.m_ChildArticles = info.ChildArticles;
            this.m_ChildHowTo = info.ChildHowTo;
            this.m_ChildSamples = info.ChildSamples;
            this.m_ChildApprovedPortals = info.ChildApprovedPortals;
            this.m_ChildApprovedCategories = info.ChildApprovedCategories;
            this.m_ChildApprovedArticles = info.ChildApprovedArticles;
            this.m_ChildApprovedHowTo = info.ChildApprovedHowTo;
            this.m_ChildApprovedSamples = info.ChildApprovedSamples;
            this.m_Summary = info.Summary;
        }