public Attempt <OperationResult> SaveContainer(EntityContainer container, int userId = Cms.Core.Constants.Security.SuperUserId) { var evtMsgs = EventMessagesFactory.Get(); if (container.ContainedObjectType != Cms.Core.Constants.ObjectTypes.DataType) { var ex = new InvalidOperationException("Not a " + Cms.Core.Constants.ObjectTypes.DataType + " container."); return(OperationResult.Attempt.Fail(evtMsgs, ex)); } if (container.HasIdentity && container.IsPropertyDirty("ParentId")) { var ex = new InvalidOperationException("Cannot save a container with a modified parent, move the container instead."); return(OperationResult.Attempt.Fail(evtMsgs, ex)); } using (var scope = ScopeProvider.CreateScope()) { var savingEntityContainerNotification = new EntityContainerSavingNotification(container, evtMsgs); if (scope.Notifications.PublishCancelable(savingEntityContainerNotification)) { scope.Complete(); return(OperationResult.Attempt.Cancel(evtMsgs)); } _dataTypeContainerRepository.Save(container); scope.Notifications.Publish(new EntityContainerSavedNotification(container, evtMsgs).WithStateFrom(savingEntityContainerNotification)); scope.Complete(); } // TODO: Audit trail ? return(OperationResult.Attempt.Succeed(evtMsgs)); }
public Attempt <OperationResult <OperationResultType, EntityContainer> > CreateContainer(int parentId, Guid key, string name, int userId = Cms.Core.Constants.Security.SuperUserId) { EventMessages eventMessages = EventMessagesFactory.Get(); using (IScope scope = ScopeProvider.CreateScope()) { scope.WriteLock(WriteLockIds); // also for containers try { var container = new EntityContainer(ContainedObjectType) { Name = name, ParentId = parentId, CreatorId = userId, Key = key }; var savingNotification = new EntityContainerSavingNotification(container, eventMessages); if (scope.Notifications.PublishCancelable(savingNotification)) { scope.Complete(); return(OperationResult.Attempt.Cancel(eventMessages, container)); } _containerRepository.Save(container); scope.Complete(); var savedNotification = new EntityContainerSavedNotification(container, eventMessages); savedNotification.WithStateFrom(savingNotification); scope.Notifications.Publish(savedNotification); // TODO: Audit trail ? return(OperationResult.Attempt.Succeed(eventMessages, container)); } catch (Exception ex) { scope.Complete(); return(OperationResult.Attempt.Fail <OperationResultType, EntityContainer>(OperationResultType.FailedCancelledByEvent, eventMessages, ex)); } } }
public Attempt <OperationResult> SaveContainer(EntityContainer container, int userId = Cms.Core.Constants.Security.SuperUserId) { EventMessages eventMessages = EventMessagesFactory.Get(); Guid containerObjectType = ContainerObjectType; if (container.ContainerObjectType != containerObjectType) { var ex = new InvalidOperationException("Not a container of the proper type."); return(OperationResult.Attempt.Fail(eventMessages, ex)); } if (container.HasIdentity && container.IsPropertyDirty("ParentId")) { var ex = new InvalidOperationException("Cannot save a container with a modified parent, move the container instead."); return(OperationResult.Attempt.Fail(eventMessages, ex)); } using (IScope scope = ScopeProvider.CreateScope()) { var savingNotification = new EntityContainerSavingNotification(container, eventMessages); if (scope.Notifications.PublishCancelable(savingNotification)) { scope.Complete(); return(OperationResult.Attempt.Cancel(eventMessages)); } scope.WriteLock(WriteLockIds); // also for containers _containerRepository.Save(container); scope.Complete(); var savedNotification = new EntityContainerSavedNotification(container, eventMessages); savedNotification.WithStateFrom(savingNotification); scope.Notifications.Publish(savedNotification); } // TODO: Audit trail ? return(OperationResult.Attempt.Succeed(eventMessages)); }
public Attempt <OperationResult <OperationResultType, EntityContainer> > CreateContainer(int parentId, Guid key, string name, int userId = Cms.Core.Constants.Security.SuperUserId) { var evtMsgs = EventMessagesFactory.Get(); using (var scope = ScopeProvider.CreateScope()) { try { var container = new EntityContainer(Cms.Core.Constants.ObjectTypes.DataType) { Name = name, ParentId = parentId, CreatorId = userId, Key = key }; var savingEntityContainerNotification = new EntityContainerSavingNotification(container, evtMsgs); if (scope.Notifications.PublishCancelable(savingEntityContainerNotification)) { scope.Complete(); return(OperationResult.Attempt.Cancel(evtMsgs, container)); } _dataTypeContainerRepository.Save(container); scope.Complete(); scope.Notifications.Publish(new EntityContainerSavedNotification(container, evtMsgs).WithStateFrom(savingEntityContainerNotification)); // TODO: Audit trail ? return(OperationResult.Attempt.Succeed(evtMsgs, container)); } catch (Exception ex) { return(OperationResult.Attempt.Fail <EntityContainer>(evtMsgs, ex)); } } }