public ActionResult _EditSendState(PD_SendState_ViewModel model) { var _p = _db.PD_Processes.Find(model.PD_Process_Id); if (User.Identity.Name.Equals(_p.LockedBy)) { PD_SendState state = _db.PD_SendStates.Find(model.PD_Process_Id, model.PD_Subject_Id, model.Id); state.Name = model.Name; state.EndState = model.EndState; state.StartState = model.StartState; state.Message = Int32.Parse(model.SelectedMessage); _db.SaveChanges(); if (model.AvailableEditableParameters == null) return RedirectToAction("ViewSubject", new { processid = model.PD_Process_Id, subjectid = model.PD_Subject_Id, edit = 1 }); model.SelectedEditableParameters = new List<string>(); foreach (var i in model.AvailableEditableParameters) { if (i.Selected == true) model.SelectedEditableParameters.Add(i.Value); } model.SelectedReadableParameters = new List<string>(); foreach (var i in model.AvailableReadableParameters) { if (i.Selected == true) model.SelectedReadableParameters.Add(i.Text); } state.ReadableParameters = new PersistableStringCollection(); if (model.SelectedReadableParameters != null) { model.SelectedReadableParameters.ForEach(item => state.ReadableParameters.Add(item)); } state.EditableParameters = new PersistableStringCollection(); if (model.SelectedEditableParameters != null) { model.SelectedEditableParameters.ForEach(item => state.EditableParameters.Add(item)); } _db.SaveChanges(); return RedirectToAction("ViewSubject", new { processid = model.PD_Process_Id, subjectid = model.PD_Subject_Id, edit = 1 }); } else { return null; } }
public ActionResult _EditSendState(int processid, int subjectid, int stateid, int edit) { var state = _db.PD_SendStates.Find(processid, subjectid, stateid); PD_SendState_ViewModel Model = new PD_SendState_ViewModel() { PD_Process_Id = state.PD_Process_Id, PD_Subject_Id = state.PD_Subject_Id, Id = state.Id, Name = state.Name, EndState = state.EndState, SelectedMessage = "" + state.Message, StartState = state.StartState }; var messages = _db.PD_Messages.Where(result => result.PD_Process_Id == processid && result.From == subjectid).ToList(); var j = 0; var mtid = ""; foreach (var message in messages) { if (message.PD_MessageType_Id != null) { var to = _db.PD_Subjects.Find(processid, message.To); Model.AvailableMessages.Add(new SelectListItem() { Value = "" + message.Id, Text = to.Name + "|" + message.PD_MessageType.Name }); if (Model.SelectedMessage == "0" && j == 0) { Model.SelectedMessage = message.Id.ToString(); } j++; } } try { Model.AvailableMessages.Find(result => result.Value == Model.SelectedMessage).Selected = true; } catch (Exception e) { } List<SelectListItem> AvailableParameters = new List<SelectListItem>(); List<SelectListItem> SelectedEditableParameters2 = new List<SelectListItem>(); List<SelectListItem> SelectedReadableParameters2 = new List<SelectListItem>(); //List<string> SelectedEditableParameters = new List<string>(); //List<string> SelectedReadableParameters = new List<string>(); var parameters = _db.PD_Subjects.Find(processid, subjectid).GlobalParameters; try { bool exists = false; foreach(var am in Model.AvailableMessages){ if(Model.SelectedMessage == am.Value) exists = true; } if (exists) { mtid = _db.PD_Messages.Find(processid, Int32.Parse(Model.SelectedMessage)).PD_MessageType.Name; } else { mtid = _db.PD_Messages.Find(processid, Int32.Parse(Model.AvailableMessages[0].Value)).PD_MessageType.Name; } //mtid = messages[Int32.Parse(Model.SelectedMessage)-1].PD_MessageType.Name; var patch = _db.PD_MessageTypes.Where(result => result.Name == mtid && result.PD_Process_Id == processid); foreach (var a in patch){ j = a.Id;} //there is only 1... var parameters2 = _db.PD_MessageTypes.Find(processid, j).Parameters; foreach (var i in parameters2) { var eNewSelectItem = new SelectListItem() { Value = i, Text = i, Selected = false }; var rNewSelectItem = new SelectListItem() { Value = i, Text = i, Selected = false }; AvailableParameters.Add(new SelectListItem() { Value = i, Text = i, Selected=true }); foreach (var f in state.ReadableParameters.ToList()) { if (f == i) rNewSelectItem.Selected = true; } foreach (var g in state.EditableParameters.ToList()) { if (g == i) eNewSelectItem.Selected = true; } SelectedReadableParameters2.Add(rNewSelectItem); SelectedEditableParameters2.Add(eNewSelectItem); } }catch(Exception e){} //state.EditableParameters.ToList().ForEach(e => SelectedEditableParameters.Add(e)); Model.AvailableEditableParameters = SelectedEditableParameters2; //Model.SelectedEditableParameters = SelectedEditableParameters; //state.ReadableParameters.ToList().ForEach(e => SelectedReadableParameters.Add(e)); Model.AvailableReadableParameters = SelectedReadableParameters2; //Model.SelectedReadableParameters = SelectedReadableParameters; ViewBag.Edit = edit; return PartialView(Model); }