Exemple #1
0
        public static void UpdateArticle(int ArticleID, string Subject, string Message, ArticleStatus status, int CategoryID)
        {
            SqlConnection conn = CARETTA.DBI.DBHelper.getConnection();

            conn.Open();

            SqlTransaction Tran = conn.BeginTransaction(IsolationLevel.Serializable);

            try
            {
                ForumArticle mArticle = new ForumArticle();
                if (mArticle.Load(ArticleID))
                {
                    bool CategoryChanged = false;
                    int  OldCategoryID   = 0;
                    if (mArticle.CategoryID != CategoryID)
                    {
                        CategoryChanged = true;
                        OldCategoryID   = mArticle.CategoryID;
                    }

                    bool StatusChanged = false;
                    if (mArticle.ArticleStatus != (int)status)
                    {
                        StatusChanged = true;
                    }

                    bool SyncNeeded = false;
                    if (mArticle.ArticleSubject != Subject || mArticle.ArticleMessage != Message)
                    {
                        SyncNeeded = true;
                    }

                    mArticle.ArticleSubject = Subject;
                    mArticle.ArticleMessage = Message;
                    mArticle.ArticleStatus  = (int)status;
                    mArticle.CategoryID     = CategoryID;
                    mArticle.Save();

                    if (CategoryChanged)
                    {
                        ForumArticle.CategoryChange(OldCategoryID, CategoryID);
                    }

                    if (SyncNeeded)
                    {
                        ForumArticle.SyncMainItem(ArticleID, Subject, Message);
                    }

                    if (StatusChanged && (!CategoryChanged))
                    {
                        ForumCategory.ArrangeCategory(CategoryID);
                    }

                    Tran.Commit();
                }
            }
            catch (Exception ex)
            {
                Tran.Rollback();
                throw;
            }
            finally
            {
                conn.Close();
            }
        }