private void DeleteVersionsAndPreserveLastWorking()
{
if (VersioningMode != VersioningMode.None)
throw new NotSupportedException();
//-- Remove unnecessary working versions. Preserve the last approved or rejected row
var lastApprovedOrRejectedVersion = GetLastApprovedOrRejectedVersion();
ExpectedVersionId = CurrentVersionId;
List<NodeHead.NodeVersion> irrelevantVersions;
if (lastApprovedOrRejectedVersion == null)
{
irrelevantVersions = new List<NodeHead.NodeVersion>(VersionHistory);
ExpectedVersion = ComputeNewVersion();
}
else
{
if (lastApprovedOrRejectedVersion.VersionId == CurrentVersionId)
ExpectedVersionId = 0;
irrelevantVersions = GetNewerVersions(lastApprovedOrRejectedVersion);
ExpectedVersion = GetNextVersion(lastApprovedOrRejectedVersion.VersionNumber, VersionStatus.Pending);
}
var irrelevantIds = irrelevantVersions.Select(x => x.VersionId);
DeletableVersionIds.AddRange(irrelevantIds);
DeletableVersionIds.Remove(CurrentVersionId); // remove this version
}