strICT.InFlow.Web.Controllers.PDesignerAPIController.PostState C# (CSharp) Method

PostState() private method

private PostState ( PD_State item, int id, int sid ) : HttpResponseMessage
item strict.InFlow.Designer.Db.Contracts.PD_State
id int
sid int
return System.Net.Http.HttpResponseMessage
        public HttpResponseMessage PostState(PD_State 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_State newState = null;
                 if (item.Type == PD_StateTypes.FunctionState)
                 {
                     newState = new PD_FunctionState() { Name = "Function State", EndState = false };
                 }
                 if (item.Type == PD_StateTypes.SendState)
                 {
                     newState = new PD_SendState() { Name = "Send State", EndState = false };
                 }
                 if (item.Type == PD_StateTypes.ReceiveState)
                 {
                     newState = new PD_ReceiveState() { Name = "Receive State", EndState = false };
                 }
                 if (item.Type == PD_StateTypes.RefinementState)
                 {
                     newState = new PD_RefinementState() { Name = "Refinement State", EndState = false };
                 }
                 newState.Id = IdHelper.getStateId(_db, id,sid);

                 newState.PositionLeft = item.PositionLeft;
                 newState.PositionTop = item.PositionTop;

                 newState.StartState = false;
                 if (subject.States.Count == 0)
                 {
                     newState.StartState = true;
                 }

                 subject.States.Add(newState);
                 _db.SaveChanges();
                 var response = Request.CreateResponse<PD_StateDTO>(HttpStatusCode.Created, new PD_StateDTO { Id = newState.Id, Name = newState.Name, PositionLeft = newState.PositionLeft, PositionTop = newState.PositionTop, Type = newState.Type });

                 string uri = Url.Content("Designer" + id + "/Subjects/" + sid + "/States/" + newState.Id);
                 response.Headers.Location = new Uri(uri);
                 return response;
             }
             else
             {
                 return null;
             }
        }