public bool DeleteMeta(int metaID, bool commit = false) { try { WorkTaskMetas dbEntry = context.WorkTaskMetas.Where(x => x.MetaID == metaID).FirstOrDefault(); if (dbEntry != null) { context.Entry(dbEntry).State = System.Data.Entity.EntityState.Deleted; if (commit) { context.SaveChanges(); } } } catch { return(false); } return(true); }
public Worktask loadMetaInfoFromRequest(Worktask task, HttpRequestBase request) { int stringmetatype = catRepository.Categories.Where(c => c.CatType == (int)Contain.CatType.MetaType && c.CategoryName.Equals("metastring")).FirstOrDefault().CatValue; int numbermetatype = catRepository.Categories.Where(c => c.CatType == (int)Contain.CatType.MetaType && c.CategoryName.Equals("metanumber")).FirstOrDefault().CatValue; if (task.TaskMetas == null) { task.TaskMetas = new List <WorkTaskMetas>(); } Worktask oldtask = null; if (task.WorktaskID > 0) { oldtask = worktaskRepository.Detail(task.WorktaskID); } Type t = task.GetType(); List <PropertyInfo> props = t.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(ComparableAttribute))).ToList(); DisplayTypeE displayType; MetaValueTypeE metaInfo; foreach (var p in props) { displayType = p.GetCustomAttribute <ComparableAttribute>().DisplayType; metaInfo = p.GetCustomAttribute <ComparableAttribute>().MetaInfo; int metaType = 0; switch (displayType) { case DisplayTypeE.Text: metaType = stringmetatype; break; case DisplayTypeE.Date: metaType = stringmetatype; break; case DisplayTypeE.RelatedTask: metaType = numbermetatype; break; } switch (metaInfo) { case MetaValueTypeE.MultipleValue: string[] selectedmetavalues = request.Params.GetValues(p.Name + "Value[]"); if (selectedmetavalues != null && selectedmetavalues.Length > 0) { foreach (string code in selectedmetavalues) { task.TaskMetas.Add(new WorkTaskMetas() { MetaKey = p.Name, MetaValue = code, MetaType = metaType }); } } else { if (oldtask != null) { foreach (var item in oldtask.TaskMetas) { if (item.MetaKey.Equals(p.Name)) { task.TaskMetas.Add(item); } } } } break; case MetaValueTypeE.SingleValue: WorkTaskMetas oldmetainfo = null; WorkTaskMetas metainfo = null; if (oldtask != null) { oldmetainfo = oldtask.TaskMetas.Where(m => m.MetaKey == p.Name).FirstOrDefault(); } metainfo = task.TaskMetas.Where(m => m.MetaKey == p.Name).FirstOrDefault(); if (metainfo == null && oldmetainfo == null) { metainfo = new WorkTaskMetas(); } else if (metainfo == null && oldmetainfo != null) { metainfo = oldmetainfo; } var reqvalue = p.GetValue(task); string metavalue = null; switch (displayType) { case DisplayTypeE.Text: metavalue = (reqvalue == null ? null : reqvalue.ToString()); break; case DisplayTypeE.Date: metavalue = (reqvalue == null ? null : ((DateTime)reqvalue).ToString("yyyy-MM-dd")); break; case DisplayTypeE.RelatedTask: metavalue = (reqvalue == null ? null : reqvalue.ToString()); break; default: metavalue = (reqvalue == null ? null : reqvalue.ToString()); break; } metainfo.MetaKey = p.Name; metainfo.MetaValue = metavalue; metainfo.MetaType = metaType; task.TaskMetas.Add(metainfo); break; } } return(task); }