private static MetadataIndexViewModel ParseSearchResults(int offset, int limit, SearchResultsType results)
{
var model = new MetadataIndexViewModel();
var metadata = new Dictionary<string, MetadataItemViewModel>();
if (results.Items != null)
{
foreach (var item in results.Items)
{
RecordType record = (RecordType)item;
string title = null;
string uuid = null;
string publisher = null;
string creator = null;
string organization = null;
string type = null;
string relation = null;
for (int i = 0; i < record.ItemsElementName.Length; i++)
{
var name = record.ItemsElementName[i];
var value = record.Items[i].Text != null ? record.Items[i].Text[0] : null;
if (name == ItemsChoiceType24.title)
title = value;
else if (name == ItemsChoiceType24.identifier)
uuid = value;
else if (name == ItemsChoiceType24.creator)
creator = value;
else if (name == ItemsChoiceType24.publisher)
publisher = value;
else if (name == ItemsChoiceType24.type)
type = value;
else if (name == ItemsChoiceType24.relation)
relation = value;
}
if (!string.IsNullOrWhiteSpace(publisher))
{
organization = publisher;
}
else
{
organization = creator;
}
var metadataItem = new MetadataItemViewModel
{
Title = title,
Uuid = uuid,
Organization = organization,
Type = type,
Relation = relation,
GeoNetworkViewUrl = GeoNetworkUtil.GetViewUrl(uuid),
GeoNetworkXmlDownloadUrl = GeoNetworkUtil.GetXmlDownloadUrl(uuid)
};
if (uuid != null)
metadata.Add(uuid, metadataItem);
}
model.MetadataItems = metadata.Values.ToList();
model.Limit = limit;
model.Offset = offset;
model.NumberOfRecordsReturned = int.Parse(results.numberOfRecordsReturned);
model.TotalNumberOfRecords = int.Parse(results.numberOfRecordsMatched);
}
return model;
}