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);
 }
Example #2
0
        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);
        }