/// <summary> /// Convert to document model /// </summary> /// <returns></returns> public static ApplicationDocument ToDocumentModel( this ApplicationInfoModel model, string etag = null) { var document = new ApplicationDocument { ID = 0, ApplicationState = model.State, ApplicationId = model.ApplicationId, ApplicationUri = model.ApplicationUri, ApplicationName = model.ApplicationName ?? model.LocalizedNames.FirstOrDefault().Value, ApplicationType = model.ApplicationType, SiteId = model.SiteId, ApplicationNames = GetLocalizedText(model.LocalizedNames), ProductUri = model.ProductUri, DiscoveryUrls = model.DiscoveryUrls?.ToArray(), ServerCapabilities = GetServerCapabilitiesAsString(model.Capabilities), GatewayServerUri = model.GatewayServerUri, DiscoveryProfileUri = model.DiscoveryProfileUri, UpdateTime = model.Updated?.Time, NotSeenSince = model.NotSeenSince, CreateTime = model.Created?.Time, ApproveTime = model.Approved?.Time, UpdateAuthorityId = model.Updated?.AuthorityId, CreateAuthorityId = model.Created?.AuthorityId, ApproveAuthorityId = model.Approved?.AuthorityId, ETag = etag }; document.Validate(); return(document); }
/// <summary> /// Convert to service model /// </summary> /// <returns></returns> public static ApplicationDocument ToDocumentModel( this ApplicationRegistrationRequestModel model, uint id) { var document = new ApplicationDocument { ID = id, ApplicationState = ApplicationState.New, CreateTime = DateTime.UtcNow, SiteId = model.SiteId, ApplicationId = ApplicationInfoModelEx.CreateApplicationId( model.SiteId, model.ApplicationUri, model.ApplicationType), ApplicationUri = model.ApplicationUri, ApplicationName = model.ApplicationName ?? model.LocalizedNames.FirstOrDefault().Value, ApplicationType = model.ApplicationType ?? ApplicationType.ClientAndServer, ApplicationNames = GetLocalizedText(model.LocalizedNames), ProductUri = model.ProductUri, DiscoveryUrls = model.DiscoveryUrls?.ToArray(), ServerCapabilities = GetServerCapabilitiesAsString(model.Capabilities), GatewayServerUri = model.GatewayServerUri, DiscoveryProfileUri = model.DiscoveryProfileUri, }; document.Validate(); return(document); }
/// <summary> /// Patch document /// </summary> /// <param name="document"></param> /// <param name="request"></param> public static void Patch(this ApplicationDocument document, ApplicationRegistrationUpdateModel request) { // Patch if (!string.IsNullOrEmpty(request.ApplicationName)) { document.ApplicationName = request.ApplicationName; } if (request.Capabilities != null) { document.ServerCapabilities = GetServerCapabilitiesAsString(request.Capabilities); } if (!string.IsNullOrEmpty(request.DiscoveryProfileUri)) { document.DiscoveryProfileUri = request.DiscoveryProfileUri; } if (!string.IsNullOrEmpty(request.GatewayServerUri)) { document.GatewayServerUri = request.GatewayServerUri; } if (!string.IsNullOrEmpty(request.ProductUri)) { document.ProductUri = request.ProductUri; } if (request.DiscoveryUrls != null) { document.DiscoveryUrls = request.DiscoveryUrls.ToArray(); } if (request.LocalizedNames != null) { var table = GetLocalizedText(document.ApplicationNames); foreach (var item in request.LocalizedNames) { if (item.Value == null) { table.Remove(item.Key); } else { table.AddOrUpdate(item.Key, item.Value); } } document.ApplicationNames = GetLocalizedText(table); } document.Validate(); }