public GetDatasetLatestMetadataVersion ( System.Int64 datasetId, bool includeCheckouts = false ) : |
||
datasetId | System.Int64 | The dataset whose latest metadata version is returned. |
includeCheckouts | bool | Determines whether the method should return the metadata if the dataset is checked-out. |
리턴 |
public XmlDocument GetDatasetLatestMetadataVersion(Int64 datasetId, bool includeCheckouts = false)
{
if (includeCheckouts) // the working copy version of checked out dataset is also included
{
var q1 = DatasetVersionRepo.Query(p =>
(p.Dataset.Status == DatasetStatus.CheckedIn || p.Dataset.Status == DatasetStatus.CheckedOut)
&& (p.Status == DatasetVersionStatus.CheckedIn || p.Status == DatasetVersionStatus.CheckedOut)
&& (p.Dataset.Id == datasetId)
).Select(p => p.Metadata);
return (q1.FirstOrDefault());
}
else //just latest checked in version of the checked in dataset
{
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)
&& (p.Dataset.Id == datasetId)
).Select(p => p.Metadata);
return (q1.FirstOrDefault());
}
//// 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());
}
public ActionResult Cancel() { //public ActionResult LoadMetadata(long datasetId, bool locked = false, bool created = false, bool fromEditMode = false, bool resetTaskManager = false, XmlDocument newMetadata = null) TaskManager = (CreateTaskmanager)Session["CreateDatasetTaskmanager"]; if (TaskManager != null) { DatasetManager dm = new DatasetManager(); long datasetid = -1; bool resetTaskManager = true; XmlDocument metadata = null; bool editmode = false; bool created = false; if (TaskManager.Bus.ContainsKey(CreateTaskmanager.ENTITY_ID)) { datasetid = Convert.ToInt64(TaskManager.Bus[CreateTaskmanager.ENTITY_ID]); } if (datasetid > -1 && dm.IsDatasetCheckedIn(datasetid)) { metadata = dm.GetDatasetLatestMetadataVersion(datasetid); editmode = true; created = true; } return RedirectToAction("LoadMetadata", "Form", new { area = "DCM", entityId = datasetid, created = created, locked = true, fromEditMode = editmode, resetTaskManager = resetTaskManager, newMetadata = metadata }); } return RedirectToAction("StartMetadataEditor", "Form"); }