public DeleteDesiredStateResponse DeleteDesiredState(DeleteDesiredStateRequest request)
 {
     try
     {
         var desiredStae = new DesiredState { Id = request.Id };
         DataContext.DesiredStates.Attach(desiredStae);
         DataContext.DesiredStates.Remove(desiredStae);
         DataContext.SaveChanges();
         return new DeleteDesiredStateResponse
         {
             IsSuccess = true,
             Message = "The item has been deleted successfully",
         };
     }
     catch {
         return new DeleteDesiredStateResponse
         {
             IsSuccess = false,
             Message = "An error occured, please contact the administrator for further information"
         };
     }
 }
        public SavePostureConstraintResponse SavePostureConstraint(SavePostureConstraintRequest request)
        {
            try
            {
                var postureConstraint = request.MapTo<PostureConstraint>();

                if (request.Id == 0)
                {
                    var posture = new Posture { Id = request.PostureId };
                    DataContext.Postures.Attach(posture);
                    postureConstraint.Posture = posture;
                    foreach (var id in request.RelationIds)
                    {
                        var desiredState = new DesiredState { Id = id };
                        DataContext.DesiredStates.Attach(desiredState);
                        postureConstraint.DesiredStates.Add(desiredState);
                    }
                    DataContext.PostureConstraints.Add(postureConstraint);
                }
                else
                {
                    postureConstraint = DataContext.PostureConstraints.Include(x => x.DesiredStates).First(x => x.Id == request.Id);
                    request.MapPropertiesToInstance<PostureConstraint>(postureConstraint);
                    postureConstraint.DesiredStates = new List<DesiredState>();
                    foreach (var id in request.RelationIds)
                    {
                        var desiredState = DataContext.DesiredStates.Local.FirstOrDefault(x => x.Id == id);
                        if (desiredState == null)
                        {
                            desiredState = new DesiredState { Id = id };
                            DataContext.DesiredStates.Attach(desiredState);
                        }
                        postureConstraint.DesiredStates.Add(desiredState);
                    }

                }
                DataContext.SaveChanges();
                return new SavePostureConstraintResponse
                {
                    IsSuccess = true,
                    Message = "The item has been saved successfully",
                    Id = postureConstraint.Id,
                    Definition = postureConstraint.Definition,
                    RelationIds = postureConstraint.DesiredStates.Select(x => x.Id).ToArray()
                };
            }
            catch
            {
                return new SavePostureConstraintResponse
                {
                    IsSuccess = false,
                    Message = "An error occured, please contact the administrator for further information"
                };
            }
        }