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; }