コード例 #1
0
        public static void DeleteArticle(int ArticleID)
        {
            ForumArticle mArticle = new ForumArticle();

            mArticle.ArticleID = ArticleID;
            mArticle.CustomDelete();
        }
コード例 #2
0
        public void AddWatch(int Id)
        {
            ForumArticle data = Find(Id);

            data.Watch++;
            repo.UnitOfWork.Commit();
        }
コード例 #3
0
        public async Task <bool> CreateAnswerAsync
            (string title,
            string content,
            string authorId,
            DateTime publishedDate,
            int motherArticleId)
        {
            if (content == null || motherArticleId == 0)
            {
                return(false);
            }

            var article = new ForumArticle
            {
                Title           = "Re: " + title,
                Content         = content,
                AuthorId        = authorId,
                MotherArticleId = motherArticleId,
                PublishedDate   = publishedDate
            };

            this.db.Add(article);

            await this.db.SaveChangesAsync();

            return(true);
        }
コード例 #4
0
ファイル: HomeController.cs プロジェクト: qo4rmp1/MemoBoard
        public ActionResult Article(int Id)
        {
            ForumArticle data = service.Find(Id);

            // 將觀看人數+1
            service.AddWatch(Id);
            return(View());
        }
コード例 #5
0
        public ActionResult AddForum(ForumArticle data)
        {
            var service = new ForumService();

            service.Add(data);

            return(View("Contact"));
        }
コード例 #6
0
        public static DataTable GetArticle(int ArticleID)
        {
            ForumArticle mArticle = new ForumArticle();

            mArticle.ArticleID = ArticleID;

            return(mArticle.LoadByParams().Tables[0]);
        }
コード例 #7
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]);
        }
コード例 #8
0
        public static void UpdateArticleStatus(int ArticleID, ArticleStatus status)
        {
            ForumArticle mArticle = new ForumArticle();

            mArticle.Load(ArticleID);

            mArticle.ArticleStatus = (int)status;
            mArticle.Save();
        }
コード例 #9
0
        public static int InsertArticleItem(int CategoryID, int ArticleID, string Subject, string Reply, ArticleItemStatus status, int UserID, string NickName)
        {
            SqlConnection conn = CARETTA.DBI.DBHelper.getConnection();

            conn.Open();

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

            int ArticleItemID;

            try
            {
                DateTime CreateDate = DateTime.Now;
                string   LastPost   = LastPostTemplate.Replace("||MemberID||", UserID.ToString()).Replace("||NickName||", NickName).Replace("||Date||", CreateDate.ToShortDateString() + " " + CreateDate.ToShortTimeString());

                ForumArticleItems mArticleItem = new ForumArticleItems();
                mArticleItem.ArticleID  = ArticleID;
                mArticleItem.CreateDate = CreateDate;
                mArticleItem.CreatedBy  = UserID;
                mArticleItem.Reply      = Reply;
                mArticleItem.Score      = 0;
                mArticleItem.ScoreCount = 0;
                mArticleItem.Status     = (int)status;
                mArticleItem.Subject    = Subject;
                mArticleItem.Save();
                ArticleItemID = mArticleItem.ArticleItemID;

                ForumArticle mArticle = new ForumArticle();
                mArticle.Load(ArticleID);
                mArticle.LastPost     = LastPost;
                mArticle.LastPostDate = CreateDate;
                mArticle.Replies     += 1;
                mArticle.Save();

                ForumCategory mCategory = new ForumCategory();
                mCategory.Load(CategoryID);
                mCategory.LastPost     = LastPost;
                mCategory.LastPostDate = CreateDate;
                mCategory.Save();

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

            return(ArticleItemID);
        }
コード例 #10
0
        public static ArticleStatus GetArticleStatus(int ArticleID)
        {
            ForumArticle mArticle = new ForumArticle();

            if (mArticle.Load(ArticleID))
            {
                return((ArticleStatus)mArticle.ArticleStatus);
            }

            return(ArticleStatus.Active);
        }
コード例 #11
0
ファイル: HomeController.cs プロジェクト: qo4rmp1/MemoBoard
        //public ActionResult Create([Bind(Include = "Title,Content")]ForumArticle Data)
        //{
        //    Data.Account = User.Identity.Name;
        //    service.Insert(Data);
        //    return RedirectToAction("Index");
        //}
        public ActionResult Create(FormCollection form)//[Bind(Include = "Title, Content")]ForumArticle Data
        {
            ForumArticle Data = new ForumArticle();

            if (TryUpdateModel(Data, new string[] { "Title", "Content" }))
            {
                Data.Account = User.Identity.Name;
                service.Insert(Data);
                return(RedirectToAction("Index"));
            }
            return(View(form));
        }
コード例 #12
0
ファイル: HomeController.cs プロジェクト: qo4rmp1/MemoBoard
        public ActionResult Edit(int Id, FormCollection Form)
        {
            if (service.CheckUpdate(Id))
            {
                ForumArticle data = service.Find(Id);
                if (TryUpdateModel(data, new string[] { "Content" }))
                {
                    service.Save();
                }
            }

            return(RedirectToAction("Index", new { Id = Id }));
        }
        public async Task ByThemeIdAsyncShouldReturnCorrectAnswerAndOrderCorrectly()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <UndergroundStationDbContext>()
                            .UseInMemoryDatabase("UndergroundStationTestDb")
                            .Options;

            var db = new UndergroundStationDbContext(dbOptions);

            var articleService = new ArticleService(db);

            var firstArticle = new ForumArticle
            {
                Id            = 2,
                PublishedDate = DateTime.UtcNow,
                ForumThemeId  = 1
            };

            var secondArticle = new ForumArticle
            {
                Id            = 3,
                PublishedDate = DateTime.UtcNow.AddDays(-1),
                ForumThemeId  = 1
            };

            var thirdArticle = new ForumArticle
            {
                Id            = 4,
                PublishedDate = DateTime.UtcNow,
                ForumThemeId  = 2
            };

            db.AddRange(firstArticle, secondArticle, thirdArticle);

            await db.SaveChangesAsync();

            //Act
            var result = await articleService.ByThemeIdAsync(1, 1);

            //Assert
            result
            .Should()
            .Match
                (r => r.ElementAt(0).Id == 3 &&
                r.ElementAt(1).Id == 2)
            .And
            .HaveCount(2);
        }
コード例 #14
0
        public static void UpdateArticleItem(int ArticleItemID, int ArticleID, string Subject, string Reply, ArticleItemStatus status)
        {
            SqlConnection conn = CARETTA.DBI.DBHelper.getConnection();

            conn.Open();

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

            try
            {
                ForumArticleItems mArticleItem = new ForumArticleItems();
                mArticleItem.Load(ArticleItemID);

                bool StatusChanged = false;
                if (mArticleItem.Status != (int)status)
                {
                    StatusChanged = true;
                }

                mArticleItem.Reply   = Reply;
                mArticleItem.Status  = (int)status;
                mArticleItem.Subject = Subject;
                mArticleItem.Save();

                ForumArticle mArticle = new ForumArticle();
                mArticle.Load(ArticleID);
                mArticle.ArticleMessage = Reply;
                mArticle.ArticleSubject = Subject;
                mArticle.Save();

                if (StatusChanged)
                {
                    ForumArticle.ArrangeArticle(mArticleItem.ArticleID);
                }

                Tran.Commit();
            }
            catch (Exception ex)
            {
                Tran.Rollback();
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
コード例 #15
0
        public void Delete(int Id)
        {
            ForumArticle data = Find(Id);

            if (data != null)
            {
                // 先刪除文章內留言
                List <ForumMessage> MsgList = data.ForumMessage.ToList();
                foreach (var item in MsgList)
                {
                    repo_Msg.Delete(item);
                }
                repo_Msg.UnitOfWork.Commit();

                // 再刪除文章
                repo.Delete(data);
                repo.UnitOfWork.Commit();
            }
        }
コード例 #16
0
        public void Add(ForumArticle data)
        {
            if (data == null)
            {
                return;
            }

            data.RecId       = Guid.NewGuid();
            data.CreateTime  = DateTime.Now;
            data.LikeCount   = 0;
            data.UnlikeCount = 0;

            try
            {
                HomePageEntities db = new HomePageEntities();
                db.ForumArticle.Add(data);
                db.SaveChanges();
            }
            catch
            {
                throw new ApplicationException();
            }
        }
コード例 #17
0
        public bool CheckUpdate(int Id)
        {
            ForumArticle data = Find(Id);

            return(data != null && data.ForumMessage.Count == 0);
        }
コード例 #18
0
 public void Insert(ForumArticle FArticle)
 {
     FArticle.CreateTime = DateTime.Now;
     repo.Add(FArticle);
     repo.UnitOfWork.Commit();
 }
コード例 #19
0
ファイル: HomeController.cs プロジェクト: qo4rmp1/MemoBoard
        public ActionResult Edit(int Id)
        {
            ForumArticle data = service.Find(Id);

            return(PartialView(data));
        }
コード例 #20
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();
            }
        }
コード例 #21
0
 public static DataTable GetArticleTitles(int ArticleID)
 {
     return(ForumArticle.GetArticlesTitles(ArticleID));
 }