public HttpResponseMessage PostMessage(PD_MessageDTO item, int id)
 {
      //if (item.EndPoints[0] == 0.0 && item.EndPoints[1] == 0.0) return null; //older versions
      //else if (item.EndPoints.Length == 2) return null;
      var _p = _db.PD_Processes.Find(id);
      if (User.Identity.Name.Equals(_p.LockedBy))
      {
          foreach (var i in _p.Messages) //this foreach shouldnt be necessary, by doing a simple update via javascript, but doesn't seem to be working
          {
              if (i.EndPoints != null)//for older versions
              {
                  var source1 = Convert.ToDouble(i.EndPoints.Split('|')[0]);
                  var source2 = Convert.ToDouble(i.EndPoints.Split('|')[1]);
                  if (source1 == item.EndPoints[0] && source2 == item.EndPoints[1])
                  {
                      i.EndPoints = (item.EndPoints[0]).ToString() + "|" + (item.EndPoints[1]).ToString() + "|" + (item.EndPoints[2]).ToString() + "|" + (item.EndPoints[3]).ToString();
                      i.To = item.To;
                      _db.SaveChanges();
                      return null;
                  }
              }
          }
          
          
          PD_Message m = new PD_Message() { From = item.From, To = item.To };
          m.Id = IdHelper.getMessageId(_db, id);
          if (item.EndPoints.Length == 2){//si me da igual, algo hay q guardar simplemente
              m.EndPoints = (item.EndPoints[0]).ToString() + "|" + (item.EndPoints[1]).ToString() + "|0|0";                                             
          }else{
              m.EndPoints = (item.EndPoints[0]).ToString() + "|" + (item.EndPoints[1]).ToString() + "|" + (item.EndPoints[2]).ToString() + "|" + (item.EndPoints[3]).ToString();                                             
          }                 
          //m.EndPoints = item.EndPoints;
          _p.Messages.Add(m);                 
          _db.SaveChanges();
          var response = Request.CreateResponse<PD_MessageDTO>(HttpStatusCode.Created, new PD_MessageDTO() { Id = m.Id, From = m.From, To = m.To, TypeName = "newMessage", EndPoints = item.EndPoints });
          
          string uri = Url.Content("Designer" + id + "/Messages/" + m.Id);
          response.Headers.Location = new Uri(uri);
          return response;
      }
      else
      {
          return null;
      }
 }
        public void PutMessage(PD_MessageDTO item, int id, int mid)
        {
             var _p = _db.PD_Processes.Find(id);
             if (User.Identity.Name.Equals(_p.LockedBy))
             {
                 PD_Message m = _db.PD_Messages.Find(id, mid);

                 if (m != null)
                 {
                     m.From = item.From;
                     m.To = item.To;
                     _db.SaveChanges();
                 }
                 else
                 {
                     throw new HttpResponseException(HttpStatusCode.NotFound);
                 }
             }
        }
 public IEnumerable<PD_MessageDTO> GetAllMessages(int id)
 {
     var _p = _db.PD_Processes.Find(id);
     List<PD_MessageDTO> tmp = new List<PD_MessageDTO>();
     foreach (PD_Message m in _p.Messages)
     {
         PD_MessageDTO dto = new PD_MessageDTO { Id = m.Id, From = m.From, To = m.To };
         if (m.EndPoints != null)
         {
             dto.EndPoints = new double[4];
             dto.EndPoints[0] = Convert.ToDouble(m.EndPoints.Split('|')[0]);
             dto.EndPoints[1] = Convert.ToDouble(m.EndPoints.Split('|')[1]);
             dto.EndPoints[2] = Convert.ToDouble(m.EndPoints.Split('|')[2]);
             dto.EndPoints[3] = Convert.ToDouble(m.EndPoints.Split('|')[3]);
         }
         if (m.PD_MessageType != null)
         {
             dto.TypeName = m.PD_MessageType.Name;
         }
         else
         {
             dto.TypeName = "newMessage";
         }
         tmp.Add(dto);
     }
     return tmp.ToArray();
 }