Example #1
0
        /// <summary>
        /// delete a record
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static Msg Delete(Guid id)
        {
            var msg = new Msg();

            try
            {
                var goOn = TopicElected.Exists(id);
                if (!goOn)
                {
                    msg.Error = true;
                    msg.Body  = string.Format("Topic {0} doesn't exist!", id);
                }
                else
                {
                    var dbm = ListAll().Single(x => x.Id.Equals(id));
                    using (var db = new GarfielderEntities())
                    {
                        db.Attach(dbm);
                        db.DeleteObject(dbm);
                        db.SaveChanges();
                        ClearCache();
                    }//using
                }
            }
            catch (Exception ex)
            {
                msg.Error = true;
                msg.Body  = ex.Message;
            }
            return(msg);
        }
        [HttpPost, ValidateInput(false)]/* TODO:MVC3正式版时可以将ValidateInput注释掉,因为ContentX有AllowHtml属性 */
        public ActionResult EditTopic(VMCampTopicShow obj)
        {
            if (this.ModelState.IsValid)
            {
                var dbm = default(Topic);
                using (var db = new GarfielderEntities())
                {
                    if (obj.IsNew)
                    {
                        obj.CreateAt  = DateTime.Now;
                        obj.Id        = Guid.NewGuid();
                        dbm           = new Topic();
                        dbm.CreatedAt = dbm.PublishedAt = obj.CreateAt;
                        dbm.Published = true;
                        dbm.Id        = obj.Id;
                        db.AddToTopics(dbm);
                    }
                    else
                    {
                        dbm = db.Topics.SingleOrDefault(x => x.Id == obj.Id);
                        if (dbm == null)
                        {
                            obj.Error = true;
                            obj.Msg   = string.Format("Topic with id [{0}] has been deleted!", obj.Id);
                            return(View(obj));
                        }
                    }
                    dbm.Title    = obj.Title;
                    dbm.ContentX = obj.ContentX;

                    dbm.Slug        = string.IsNullOrWhiteSpace(obj.Slug) ? obj.Title.CHSToPinyin("-") : obj.Slug.CHSToPinyin("-");
                    dbm.Description = dbm.ContentX;
                    //save to db
                    var msg = Topic.ValidateSlug(dbm.Slug, db);
                    dbm.Slug       = msg.Context["Slug"].ToString();
                    dbm.ModifiedAt = DateTime.Now;

                    obj.Logo = dbm.Logo;

                    db.Attach(CurrentUser);
                    dbm.User = CurrentUser;
                    db.SaveChanges();

                    //tags
                    if (obj.TagID != null && obj.TagID.Count > 0)
                    {
                        dbm.Tags.Clear();

                        obj.TagID.ForEach(x => dbm.Tags.Add(db.Tags.Single(y => y.Id.Equals(x))));
                    }
                    //groups
                    if (obj.GroupID != null && obj.GroupID.Count > 0)
                    {
                        dbm.Groups.Clear();

                        obj.GroupID.ForEach(
                            x => dbm.Groups.Add(db.Groups.Single(y => y.Id.Equals(x)))
                            );
                    }
                    //保存关系表

                    db.SaveChanges();

                    //update tags and groups
                    obj.Groups = dbm.Groups.ToList();
                    obj.Tags   = dbm.Tags.ToList();
                }//using
            }
            ;
            return(View(obj));
        }//edit topic