/// <summary> /// create a record /// </summary> /// <param name="id"></param> /// <param name="begin"></param> /// <param name="end"></param> /// <param name="who"></param> /// <returns></returns> public static Msg Create(Guid id, DateTime begin, DateTime end, string who) { var msg = new Msg(); try { using (var db = new GarfielderEntities()) { var dbm = new TopicElected() { CreatedAt = DateTime.Now, CreatedBy = who, DateBegin = begin, DateEnd = end, Id = id }; db.AddToTopicElecteds(dbm); db.SaveChanges(); ClearCache(); } } catch (Exception ex) { msg.Error = true; msg.Body = ex.Message; } return(msg); }
/// <summary> /// save a item.update if exists /// </summary> /// <param name="obj"></param> /// <returns></returns> public static dynamic Save(VMGroupEdit obj) { var msg = new Msg(); var dbm = default(Group); obj.Slug = string.IsNullOrEmpty(obj.Slug) ? obj.Name.CHSToPinyin("-").ToLower() : obj.Slug.ToLower(); //validate name existence if (!ValidateName(obj.Name, obj.Id.ToString())) { msg.Error = true; msg.Body = string.Format("Name [{0}] exists,please choose another one!", obj.Name); return(msg); } ; using (var db = new GarfielderEntities()) { if (obj.IsNew)//add new { obj.Id = Guid.NewGuid(); dbm = new Group(); dbm.Id = obj.Id; dbm.CreatedAt = DateTime.Now; //TODO dbm.CreatedBy = "Sys"; db.AddToGroups(dbm); } else { //update dbm = db.Groups.SingleOrDefault(x => x.Id.Equals(obj.Id)); if (dbm == null) { //has been deleted! msg.Error = true; msg.Body = string.Format("Obj {0} has been deleted!", obj.Id); return(msg); } }//if dbm.Name = obj.Name; dbm.Slug = Group.CheckSlug(db, obj.Slug); dbm.Description = obj.Description; dbm.ParentID = obj.ParentID.Equals(Guid.Empty) ? default(Guid?) : obj.ParentID; dbm.Level = obj.Level; db.CommandTimeout = 0; db.SaveChanges(); //clear cache ClearCache(); if (dbm.Parent != null) { obj.ParentName = dbm.Parent.Name; } };//using return(obj); }
/// <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); }
/// <summary> /// delete by specified id /// </summary> /// <param name="id"></param> /// <returns></returns> public static Msg DeleteByID(params Guid[] id) { var r = new Msg(); if (id == null || id.Length == 0) { r.Error = true; r.Body = "No selected items to be deleted!"; return(r); } using (var db = new GarfielderEntities()) { try { var items = db.XFiles.Where(x => id.Contains(x.Id)).ToList(); items.ForEach(obj => { obj.Topics.Clear(); db.XFiles.DeleteObject(obj); }); db.SaveChanges(); ClearCache(); } catch (Exception ex) { r.Error = true; r.Body = ex.Message; } } //using return(r); }
/// <summary> /// update logo field /// </summary> /// <param name="img"></param> /// <param name="id"></param> /// <returns></returns> public static Msg UpdateLogo(string img, string id) { var msg = new Msg(); if (string.IsNullOrWhiteSpace(img)) { msg.Error = true; msg.Body = "No Logo specified!"; return(msg); } try { var gid = Guid.Parse(id); var topic = default(Topic); using (var db = new GarfielderEntities()) { topic = db.Topics.SingleOrDefault(x => x.Id.Equals(gid)); if (topic != null) { topic.Logo = img; db.SaveChanges(); } } }catch (Exception ex) { msg.Error = true; msg.Body = ex.Message; } return(msg); }
} //ListFileData /// <summary> /// Detach files /// </summary> /// <param name="topicID"></param> /// <param name="fileID"></param> /// <returns></returns> public static Msg DetachFiles(Guid topicID, params Guid[] fileID) { var msg = new Msg(); try { using (var db = new GarfielderEntities()) { var obj = db.Topics.SingleOrDefault(x => x.Id.Equals(topicID)); if (obj == null || obj.XFiles.Count == 0) { msg.Error = true; msg.Body = string.Format("Topic with id [{0}] not exists or it has no attachments!", topicID); return(msg); }//if //delete all attached files if (fileID == null || fileID.Length == 0) { obj.XFiles.Clear(); db.SaveChanges(); return(msg); }//if //delete specified files var items = obj.XFiles.Where(x => !fileID.Contains(x.Id)); obj.XFiles.Clear(); items.ToList().ForEach(x => obj.XFiles.Add(x)); db.SaveChanges(); } //using }catch (Exception ex) { //TODO:log msg.Error = true; msg.Body = ex.Message; }//try return(msg); }
/// <summary> /// save a tag object.Update if exists /// </summary> /// <param name="obj"></param> /// <returns></returns> public static dynamic Save(VMTagEdit obj) { var dbm = default(Tag); obj.Slug = string.IsNullOrEmpty(obj.Slug) ? obj.Name.CHSToPinyin("-").ToLower() : obj.Slug.ToLower(); var msg = new Msg(); //validate name if (!ValidateName(obj.Name, obj.Id.ToString())) { msg.Error = true; msg.Body = string.Format("Name [{0}] exists!Please choose another one!", obj.Name); return(msg); } ; using (var db = new GarfielderEntities()) { if (obj.IsNew)//add new { obj.Id = Guid.NewGuid(); dbm = new Tag(); dbm.Id = obj.Id; dbm.CreatedAt = DateTime.Now; //TODO dbm.CreatedBy = "Sys"; db.AddToTags(dbm); } else { //update dbm = db.Tags.SingleOrDefault(x => x.Id.Equals(obj.Id)); if (dbm == null) { //has been deleted! msg.Error = true; msg.Body = string.Format("Obj {0} has been deleted!", obj.Id); return(msg); } }//if dbm.Name = obj.Name; dbm.Slug = Tag.CheckSlug(db, obj.Slug); db.CommandTimeout = 0; db.SaveChanges(); ClearCache(); };//using return(obj); }
/// <summary> /// add a simple tag /// </summary> /// <param name="name"></param> /// <param name="slug"></param> /// <returns></returns> public static VMTagEdit QuickAddTag(string name, string slug = null, string user = "******") { var retVal = new VMTagEdit(); if (string.IsNullOrWhiteSpace(name)) { retVal.Error = true; retVal.Msg = "Tag name can't be blank"; return(retVal); } ; retVal.Name = name; retVal.Slug = string.IsNullOrWhiteSpace(slug) ? name.CHSToPinyin("-") : slug.CHSToPinyin("-"); retVal.Slug = retVal.Slug.ToLower(); using (var db = new GarfielderEntities()) { var dbm = db.Tags.SingleOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); if (dbm != null) { retVal.Id = dbm.Id; } else { retVal.Id = Guid.NewGuid(); //add a new tag dbm = new Tag(); dbm.Id = retVal.Id; dbm.Name = retVal.Name; dbm.Slug = CheckSlug(db, retVal.Slug); dbm.CreatedAt = DateTime.Now; //TODO: dbm.CreatedBy = user; db.AddToTags(dbm); //persist db.CommandTimeout = 0; db.SaveChanges(); ClearCache(); }; };//using return(retVal); }
}//SaveFile private static void AttachToTopic(string topicID, GarfielderEntities db, XFile file) { //refID proccess var objID = Guid.Parse(topicID); if (objID == Guid.Empty) { return; } var obj = file.Topics.SingleOrDefault(x => x.Id == objID); //exists if (obj != null) { return; } //attach file.Topics.Add(db.Topics.Single(x => x.Id.Equals(objID))); db.SaveChanges(); }
public ActionResult EditFile(VMXFileEdit obj) { if (this.ModelState.IsValid) { using (var db = new GarfielderEntities()) { var dbm = db.XFiles.SingleOrDefault(x => x.Id == obj.Id); if (dbm != null) { dbm.Title = obj.Title; dbm.Description = obj.Description; db.CommandTimeout = 0; db.SaveChanges(); } ; }; } ; return(View(obj)); }
public ActionResult EditUser(VMUserEdit obj) { if (this.ModelState.IsValid) { var dbm = new User(); dbm.Id = Guid.NewGuid(); dbm.Name = obj.Name; dbm.Nickname = obj.Nickname; dbm.Email = obj.Email; dbm.Password = obj.Password; dbm.CreatedAt = DateTime.Now; //TODO: dbm.CreatedBy = "Sys"; using (var db = new GarfielderEntities()) { db.CommandTimeout = 0; db.AddToUsers(dbm); db.SaveChanges(); }; } ; return(View(obj)); }
/// <summary> /// Save current file uploaded /// </summary> /// <param name="req"></param> /// <returns></returns> public static VMXFileEdit SaveFile(HttpRequestBase req) { var vm = new VMXFileEdit(); vm.NoFlash = true; if (req.Files.Count == 0 || req.Files[0].FileName == "" || req.Files[0].ContentLength == 0) { vm.Error = true; vm.Msg = "No file selected!Please select a file to upload!"; return(vm); } ; var refid = req.Params["RefId"]; var uid = req.Params["UserID"]; var uname = req.Params["UserName"]; var fileName = req.Files[0].FileName.CHSToPinyin("-").ToLower(); var path0 = getFileName(uname, fileName); //虚拟路径 var path1 = Path.Combine(_uploadsFolder, uname, DateTime.Now.ToString("yyyyMMdd")); //物理路径 //db op using (var db = new GarfielderEntities()) { var dbm = db.XFiles.SingleOrDefault(x => x.Name == path0); if (dbm == null) { //save to disk vm.Name = path0; if (!Directory.Exists(path1)) { Directory.CreateDirectory(path1); } try { vm.Title = req.Files[0].FileName; vm.Description = vm.Title; vm.Extension = vm.Name.Substring(vm.Name.LastIndexOf(".")); vm.Id = Guid.NewGuid(); vm.CreatedAt = DateTime.Now; path1 = string.Format("{0}\\{1}", path1, fileName); req.Files[0].SaveAs(path1); //图片缩略图处理); if (IsImg(vm.Extension)) { //大图800x600 var tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.L800X600), 800, 600, true); vm.MetaData.Width = tempObj.RawSize.Width; vm.MetaData.Height = tempObj.RawSize.Height; //原图 vm.MetaData.AddThumb(ImageFlags.RAW, string.Format("{0}{1}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name), vm.MetaData.Width, vm.MetaData.Height); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.L800X600, string.Format("{0}{1}_800x600{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } //中大图500x500 tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.L500X500), 500, 500, true); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.L500X500, string.Format("{0}{1}_500x500{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } //中 tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.M300X300), 300, 300, true); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.M300X300, string.Format("{0}{1}_300x300{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } //中小图 tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.M160X160), 160, 160, true); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.M160X160, string.Format("{0}{1}_160x160{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.S160X100), 160, 100); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.S160X100, string.Format("{0}{1}_160x100{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } //小 tempObj = ImageResizer.GetThumbnail(path1, GetImgName(path1, ImageFlags.S64X64), 64, 64); if (!tempObj.Error) { vm.MetaData.AddThumb(ImageFlags.S64X64, string.Format("{0}{1}_64x64{2}", Garfielder.Web.Utils.AbsoluteWebRoot, vm.Name1, vm.Extension), tempObj.NewSize.Width, tempObj.NewSize.Height); } } ; //IsImg dbm = new XFile(); dbm.Id = vm.Id; dbm.Name = path0; dbm.Url = path0; dbm.Title = vm.Title; dbm.Description = vm.Description; dbm.Extension = vm.Extension; dbm.CreatedAt = dbm.ModifiedAt = vm.CreatedAt; dbm.Meta = vm.Meta; dbm.UserID = Guid.Parse(uid); db.CommandTimeout = 0; db.AddToXFiles(dbm); db.SaveChanges(); ClearCache(); //attach to topic AttachToTopic(refid, db, dbm); } catch (Exception ex) { //TODO:log vm.Error = true; vm.Msg = ex.Message; }//TRY } else { //FILE Exists vm.Error = true; vm.Msg = string.Format("File {0} exists!", path0); //attach to topic AttachToTopic(refid, db, dbm); }; };//using return(vm); }//SaveFile
[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