public void Approve()
{
AssertValidAction(StateAction.Approve);
if (HasApproving)
{
//-- Approving ON
switch (VersioningMode)
{
case VersioningMode.None:
DeleteVersionsAndApprove();
break;
case VersioningMode.Major:
var workingIds = GetLastWorkingVersions().Select(x => x.VersionId);
DeletableVersionIds.AddRange(workingIds);
DeletableVersionIds.Remove(CurrentVersionId);
var lastApproved = GetLastApprovedVersion();
ExpectedVersion = lastApproved == null ?
ComputeNewVersion().ChangeStatus(VersionStatus.Approved) :
GetNextPublicVersion(lastApproved.VersionNumber, VersionStatus.Approved);
ExpectedVersionId = CurrentVersionId;
break;
case VersioningMode.Full:
ExpectedVersion = GetNextPublicVersion(VersionStatus.Approved);
ExpectedVersionId = this.CurrentVersionId;
break;
}
}
}
public void Reject()