public GetDatasetLatestIds ( bool includeCheckouts = false ) : List |
||
includeCheckouts | bool | Determines whether the checked out versions should be included in the result. |
return | List |
public List<Int64> GetDatasetLatestIds(bool includeCheckouts = false)
{
if (includeCheckouts) // the datasets that their latest version is checked-in or checked-out
{
var q1 = DatasetVersionRepo.Query(p =>
(p.Dataset.Status == DatasetStatus.CheckedIn || p.Dataset.Status == DatasetStatus.CheckedOut)
&& (p.Status == DatasetVersionStatus.CheckedIn || p.Status == DatasetVersionStatus.CheckedOut)
)
.Select(p => p.Dataset.Id)
.OrderBy(p=>p)
.Distinct();
return (q1.ToList());
}
else //just the datasets that their latest version is checked-in
{
var q1 = DatasetVersionRepo.Query(p =>
(p.Dataset.Status == DatasetStatus.CheckedIn || p.Dataset.Status == DatasetStatus.CheckedOut) // include checked in (latest) versions of currently checked out datasets
&& (p.Status == DatasetVersionStatus.CheckedIn)
)
.Select(p => p.Dataset.Id)
.OrderBy(p => p)
.Distinct();
return (q1.ToList());
}
//// it works using the timestamp technique
//var qu = (from dsv in DatasetVersionRepo.Get(p => p.Dataset.Status != DatasetStatus.Deleted)
// group dsv by dsv.Dataset.Id into grp
// let maxTimestamp = grp.Max(p => p.Timestamp)
// select grp.Single(p => p.Timestamp >= maxTimestamp).Metadata);
//return (qu.ToList());
}
/// <summary> /// Show all Datasetids with export functions /// </summary> /// <returns></returns> // GET: api/Export public IEnumerable<long> Get() { DatasetManager dm = new DatasetManager(); var datasetIds = dm.GetDatasetLatestIds(); return datasetIds; }