private NodeSetFileModel GetProfileModel(ModelNameAndVersion nameVersion, object userId) { NodeSetFileModel myModel = (nameVersion.CCacheId as NodeSetFileModel); if (myModel != null) { return(myModel); } var userToken = userId as UserToken; myModel = _dalNodeSetFile?.Where(s => s.FileName == nameVersion.ModelUri /*&& (TenantID == null || s.AuthorId == null || s.AuthorId == (int)TenantID)*/, userToken, verbose: true)?.Data?.OrderByDescending(s => s.PublicationDate)?.FirstOrDefault(); if (myModel != null) { nameVersion.CCacheId = myModel; } return(myModel); }
public ModelValue GetNodeSetByID(string id) { var tns = _dalNodeSetFile.GetById(int.Parse(id), _userToken); if (tns != null) { var tmav = new ModelNameAndVersion { ModelUri = tns.FileName, ModelVersion = tns.Version, PublicationDate = tns.PublicationDate, CCacheId = tns.ID }; UANodeSetImportResult res = new UANodeSetImportResult(); AddNodeSet(res, tns.FileCache, _userToken); if (res?.Models?.Count > 0) { return(res.Models[0]); } } return(null); }
public bool GetNodeSet(UANodeSetImportResult results, ModelNameAndVersion nameVersion, object AuthorID) { var authorToken = AuthorID as UserToken; NodeSetFileModel myModel = GetProfileModel(nameVersion, authorToken); if (myModel != null) { // workaround for bug https://github.com/dotnet/runtime/issues/67622 var fileCachepatched = myModel.FileCache.Replace("<Value/>", "<Value xsi:nil='true' />"); using (var nodeSetStream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileCachepatched))) { //nodeSetStream.Write(Encoding.UTF8.GetBytes(myModel.FileCache)); //nodeSetStream.Position = 0; UANodeSet nodeSet = UANodeSet.Read(nodeSetStream); foreach (var ns in nodeSet.Models) { results.AddModelAndDependencies(nodeSet, ns, null, false); foreach (var model in results.Models) { if (model.NameVersion.CCacheId == null) { if (model.NameVersion.ModelUri == nameVersion.ModelUri && model.NameVersion.PublicationDate == nameVersion.PublicationDate) { model.NameVersion.CCacheId = myModel; } else { GetProfileModel(model.NameVersion, authorToken); } } } } } return(true); } return(false); }