コード例 #1
0
        public void Update(string id, JObject body)
        {
            PatchRequest2Compliant patchRequest = null;
            PatchRequestSimple     patchSimple  = null;

            try
            {
                patchRequest = body.ToObject <PatchRequest2Compliant>();
            }
            catch (Newtonsoft.Json.JsonException) { }
            if (patchRequest == null)
            {
                patchSimple = body.ToObject <PatchRequestSimple>();
            }
            if (null == patchRequest && null == patchSimple)
            {
                string unsupportedPatchTypeName = patchRequest.GetType().FullName;
                throw new NotSupportedException(unsupportedPatchTypeName);
            }

            Core2User usertoModify = this._context.CompleteUsers().FirstOrDefault((user) => user.Identifier.Equals(id, StringComparison.Ordinal));

            if (patchRequest != null)
            {
                if (usertoModify != null)
                {
                    foreach (PatchOperation2SingleValued op in patchRequest.Operations)
                    {
                        if (op is PatchOperation2SingleValued singleValued)
                        {
                            PatchOperation patchOp = PatchOperation.Create(OperationValue.getOperationName(singleValued.OperationName), singleValued.Path.ToString(), singleValued.Value);
                            usertoModify.Apply(patchOp);
                            usertoModify.Metadata.LastModified = DateTime.Now;
                        }
                    }
                }
            }
            else if (patchSimple != null)
            {
                if (usertoModify != null)
                {
                    foreach (PatchOperation op in patchSimple.Operations)
                    {
                        usertoModify.Apply(op);
                        usertoModify.Metadata.LastModified = DateTime.Now;
                    }
                }
            }
            this._context.SaveChanges();
        }