Ejemplo n.º 1
0
        private BWebServiceResponse UpdateRevisionInfo(HttpListenerContext _Context, Action <string> _ErrorMessageAction)
        {
            if (!CommonMethods.TryParsingRequestFor(
                    _Context,
                    out JObject UpdatedRevisionJson,
                    true, out Revision UpdatedRevision,
                    out BWebServiceResponse FailureResponse,
                    _ErrorMessageAction))
            {
                return(FailureResponse);
            }

            if (!CommonMethods.TryGettingModelInfo(
                    DatabaseService,
                    RequestedModelID,
                    out JObject _,
                    true, out ModelDBEntry Model,
                    out FailureResponse,
                    _ErrorMessageAction))
            {
                return(FailureResponse);
            }

            if (!CommonMethods.DoesRevisionExist(
                    Model,
                    RequestedRevisionIndex,
                    out Revision RevisionObject,
                    out int _))
            {
                return(BWebResponse.NotFound("Revision does not exist."));
            }

            if (UpdatedRevision.RevisionName != null && UpdatedRevision.RevisionName.Length > 0 &&
                RevisionObject.RevisionName != UpdatedRevision.RevisionName)
            {
                //There is a change in the revision name
                foreach (var CurrentRev in Model.ModelRevisions)
                {
                    if (CurrentRev.RevisionName.ToUpper() == UpdatedRevision.RevisionName)
                    {
                        return(BWebResponse.Conflict("A revision with same " + Revision.REVISION_NAME_PROPERTY + " already exists."));
                    }
                }
            }

            RevisionObject.Merge(UpdatedRevisionJson);
            Model.MRVLastUpdateTime = CommonMethods.GetTimeAsCreationTime();

            Controller_DeliveryEnsurer.Get().DB_UpdateItem_FireAndForget(
                _Context,
                ModelDBEntry.DBSERVICE_MODELS_TABLE(),
                ModelDBEntry.KEY_NAME_MODEL_ID,
                new BPrimitiveType(RequestedModelID),
                JObject.Parse(JsonConvert.SerializeObject(Model)));

            Controller_ModelActions.Get().BroadcastModelAction(new Action_ModelRevisionUpdated
                                                               (
                                                                   RequestedModelID,
                                                                   RequestedRevisionIndex,
                                                                   Model.ModelOwnerUserID,
                                                                   Model.ModelSharedWithUserIDs,
                                                                   AuthorizedUser.UserID,
                                                                   UpdatedRevisionJson
                                                               ),
                                                               _ErrorMessageAction);

            return(BWebResponse.StatusOK("Revision has been updated."));
        }