public void Publish()
{
AssertValidAction(StateAction.Publish);
if (!HasApproving)
{
//-- Approving OFF
switch (VersioningMode)
{
case VersioningMode.None:
DeleteVersionsAndApprove();
break;
case VersioningMode.Major:
ExpectedVersion = GetNextPublicVersion(VersionStatus.Approved);
ExpectedVersionId = CurrentVersionId;
break;
case VersioningMode.Full:
ExpectedVersion = GetNextPublicVersion(VersionStatus.Approved);
ExpectedVersionId = CurrentVersionId;
break;
}
}
else
{
//-- Approving ON
if (VersioningMode != VersioningMode.Full)
throw new NotImplementedException();
if (CurrentVersion.Status == VersionStatus.Rejected)
{
ExpectedVersion = GetNextNonpublicVersion(VersionStatus.Pending);
}
else
{
ExpectedVersion = CurrentVersion.ChangeStatus(VersionStatus.Pending);
ExpectedVersionId = CurrentVersionId;
}
}
//-- Unlock
this.LockerUserId = 0;
}
public void Approve()