public IEnumerable <PD_TransitionDTO> GetAllTransitions(int id, int sid) { PD_Subject i = _db.PD_Subjects.Find(id, sid); List <PD_TransitionDTO> t = new List <PD_TransitionDTO>(); foreach (var tr in i.Transitions) { var temp = new PD_TransitionDTO() { Id = tr.Id, Source = tr.Source, Target = tr.Target, Type = tr.Type, LabelPosition = tr.LabelPosition }; if (tr.Type == PD_TransitionTypes.RegularTransition) { temp.Label = ((PD_RegularTransition)tr).Name; } if (tr.Type == PD_TransitionTypes.ReceiveTransition) { try { PD_Message m = _db.PD_Messages.Find(id, ((PD_ReceiveTransition)tr).Message); PD_MessageType mt = m.PD_MessageType; PD_Subject s = _db.PD_Subjects.Find(id, m.From); temp.Label = s.Name + "|" + mt.Name; } catch (Exception e) { temp.Label = "Receive"; } } if (tr.Type == PD_TransitionTypes.TimeoutTransition) { temp.Label = ((PD_TimeoutTransition)tr).TimeSpan; } if (temp.Label == null) { temp.Label = "EMPTY"; } t.Add(temp); } return(t.ToArray()); }
public void PutTransition(PD_TransitionDTO item, int id, int sid, int tid) { var _p = _db.PD_Processes.Find(id); if (User.Identity.Name.Equals(_p.LockedBy)) { var transition = _db.PD_Transitions.Find(id, sid, tid); if (transition != null) { transition.Source = item.Source; transition.Target = item.Target; transition.LabelPosition = item.LabelPosition; _db.SaveChanges(); } else { throw new HttpResponseException(HttpStatusCode.NotFound); } } }
public HttpResponseMessage PostTransition(PD_TransitionDTO item, int id, int sid) { var _p = _db.PD_Processes.Find(id); if (User.Identity.Name.Equals(_p.LockedBy)) { var subject = _db.PD_Subjects.Find(id, sid); PD_Transition newTransition = null; if (item.Type == PD_TransitionTypes.RegularTransition) { var from = _db.PD_States.Find(id, sid, item.Source); var to = _db.PD_States.Find(id, sid, item.Target); if (from.Type == PD_StateTypes.SendState && to.Type == PD_StateTypes.ReceiveState) { var state = _db.PD_SendStates.Find(id, sid, item.Source); var messages = _db.PD_Messages.Where(result => result.PD_Process_Id == id && result.From == sid).ToList(); foreach (var message in messages) { if (state.Message == message.Id) { newTransition = new PD_RegularTransition() { Name = message.PD_MessageType.Name.ToString() }; } } if (newTransition == null) { newTransition = new PD_RegularTransition() { Name = "No message used" }; } } else { PD_State s = _db.PD_States.Find(id, sid, item.Source); if (s.Type == PD_StateTypes.SendState) { var state = _db.PD_SendStates.Find(id, sid, item.Source); var messages = _db.PD_Messages.Where(result => result.PD_Process_Id == id && result.From == sid).ToList(); if (messages.Count() > 0) { var name = messages.Find(result => result.Id == state.Message).PD_MessageType.Name; newTransition = new PD_RegularTransition() { Name = name }; } else { newTransition = new PD_RegularTransition() { Name = "Transition" }; } } else { newTransition = new PD_RegularTransition() { Name = "Transition" }; } } } if (item.Type == PD_TransitionTypes.ReceiveTransition) { newTransition = new PD_ReceiveTransition() { Message = -1 }; } if (item.Type == PD_TransitionTypes.TimeoutTransition) { newTransition = new PD_TimeoutTransition() { TimeSpan = "dd:hh:mm" }; } newTransition.Id = IdHelper.getTransitionId(_db, id, sid); newTransition.Source = item.Source; newTransition.Target = item.Target; newTransition.LabelPosition = item.LabelPosition; subject.Transitions.Add(newTransition); _db.SaveChanges(); var response = Request.CreateResponse <PD_TransitionDTO>(HttpStatusCode.Created, new PD_TransitionDTO() { Id = newTransition.Id, Source = newTransition.Source, Target = newTransition.Target, Type = newTransition.Type, Label = "Transition" + newTransition.Type }); string uri = Url.Content("Designer" + id + "/Subjects/" + sid + "/States/" + newTransition.Id); response.Headers.Location = new Uri(uri); return(response); } else { return(null); } }