private List<PD_Parameter_ViewModel> listofStringParametersToViewModel(int processid ,ICollection<string> parameters)
        {
            List<PD_Parameter_ViewModel> list = new List<PD_Parameter_ViewModel>();
            foreach (string parameter in parameters)
            {
                var pc = _db.PD_Parameters.Find(processid, parameter);
                var cfg = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(pc.Config);

                PD_Parameter_ViewModel pvm = new PD_Parameter_ViewModel() { Name = pc.Name, Type = cfg.Type, DefaultValue = cfg.Value.ToString() };

                list.Add(pvm);
            }

            return list;
        }
         public ActionResult _EditParameter(int processid, int subjectid, string parameter, int edit)
         {
             PD_Parameter_ViewModel pvm;
             PD_Parameter pc = new PD_Parameter() { PD_Process_Id = processid };
             if (parameter != null)
             {
                 pc = _db.PD_Parameters.Find(processid, parameter);

                 var cfg = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(pc.Config);
                 //_DeleteParameter(processid, subjectid, parameter);
                  //_EditMessageParameter(int processid, int messagetypeId, string parameter, int edit, string messageName)
                 //_db.PD_Parameters.Add(pc);


                 pvm = new PD_Parameter_ViewModel() { Name = pc.Name, Type = cfg.Type, DefaultValue = cfg.Value.ToString(), Process_Id = processid, Subject_Id = subjectid };
             }
             else
             {
                 pvm = new PD_Parameter_ViewModel() { Process_Id = processid, Subject_Id = subjectid, Type = "string" , DefaultValue = "0" };
             }
             ViewBag.Edit = edit;
             return PartialView(pvm);
         }
        public ActionResult _EditParameter(PD_Parameter_ViewModel model)
         {
             var _p = _db.PD_Processes.Find(model.Process_Id);
             if (User.Identity.Name.Equals(_p.LockedBy))
             {
                 PD_Parameter p = _db.PD_Parameters.Find(model.Process_Id, model.Name);
                 if (p == null)
                 {
                     string val = model.DefaultValue;
                     if (model.Type.Equals("string"))
                     {
                         val = "\"" + val + "\"";
                     }
                     string cfg = "{\"Type\":\"" + model.Type +"\",\"Value\":" + val + "}";
                     p = new PD_Parameter() { PD_Process_Id = model.Process_Id, Name = model.Name, Config = cfg };
                     _db.PD_Parameters.Add(p);
                 }
                 else
                 {
                     try
                     {
                         model.DefaultValue = checkDefaultValue(model.Type, model.DefaultValue);
                     }
                     catch (Exception e)
                     {
                         return RedirectToAction("ViewSubject", new { processid = model.Process_Id, subjectid = model.Subject_Id, edit = 1 });
                     }
                     string val = model.DefaultValue;
                     if (model.Type.Equals("string"))
                     {
                         val = "\"" + val + "\"";
                     }
                     p.Config = "{\"Type\":\"" + model.Type + "\",\"Value\":" + val + "}";
                 }
                 var item = _db.PD_Subjects.Find(model.Process_Id, model.Subject_Id);

                 if (!item.GlobalParameters.Contains(model.Name))
                 {
                     item.GlobalParameters.Add(model.Name);
                 }
                 _db.SaveChanges();

                 return RedirectToAction("ViewSubject", new { processid = model.Process_Id, subjectid = model.Subject_Id, edit = 1 });
             }
             else
             {
                 return null;
             }
         }