private DatasetVersion getDatasetLatestVersion(Dataset dataset)
{
/// the latest checked in version should be returned.
/// if dataset is checked out, exception
/// If the dataset is marked as deleted its like that it is not there at all
if (dataset == null)
throw new Exception(string.Format("Provided dataset is null"));
if (dataset.Status == DatasetStatus.Deleted)
throw new Exception(string.Format("Dataset {0} is deleted", dataset.Id));
if (dataset.Status == DatasetStatus.CheckedOut)
{
throw new Exception(string.Format("Dataset {0} is checked out.", dataset.Id));
}
if (dataset.Status == DatasetStatus.CheckedIn)
{
DatasetVersion dsVersion = dataset.Versions
.OrderByDescending(t => t.Timestamp)
.First(p => p.Status == DatasetVersionStatus.CheckedIn); // indeed the versions collection is ordered and there should be no need for ordering, but is just to prevent any side effects
return (dsVersion);
}
return null;
}