/// <summary> /// Patch registration /// </summary> /// <param name="registration"></param> /// <param name="request"></param> public static void Patch(this ApplicationRegistration registration, ApplicationRegistrationUpdateModel request) { // Patch if (!string.IsNullOrEmpty(request.ApplicationName)) { registration.ApplicationName = request.ApplicationName; } if (request.Capabilities != null) { registration.Capabilities = request.Capabilities.EncodeAsDictionary(); } if (!string.IsNullOrEmpty(request.DiscoveryProfileUri)) { registration.DiscoveryProfileUri = request.DiscoveryProfileUri; } if (!string.IsNullOrEmpty(request.GatewayServerUri)) { registration.GatewayServerUri = request.GatewayServerUri; } if (!string.IsNullOrEmpty(request.ProductUri)) { registration.ProductUri = request.ProductUri; } if (request.DiscoveryUrls != null) { registration.DiscoveryUrls = request.DiscoveryUrls?.ToList().EncodeAsDictionary(); } if (request.LocalizedNames != null) { var table = registration.LocalizedNames; if (table == null) { table = new Dictionary <string, string>(); } foreach (var item in request.LocalizedNames) { if (item.Value == null) { table.Remove(item.Key); } else { table.AddOrUpdate(item.Key, item.Value); } } registration.LocalizedNames = table; } registration.Validate(); }
/// <summary> /// Patch application /// </summary> /// <param name="application"></param> /// <param name="request"></param> public static ApplicationInfoModel Patch(this ApplicationInfoModel application, ApplicationRegistrationUpdateModel request) { // Update from update request if (request.ApplicationName != null) { application.ApplicationName = string.IsNullOrEmpty(request.ApplicationName) ? null : request.ApplicationName; } if (request.LocalizedNames != null) { application.LocalizedNames = request.LocalizedNames; } if (request.ProductUri != null) { application.ProductUri = string.IsNullOrEmpty(request.ProductUri) ? null : request.ProductUri; } if (request.GatewayServerUri != null) { application.GatewayServerUri = string.IsNullOrEmpty(request.GatewayServerUri) ? null : request.GatewayServerUri; } if (request.Certificate != null) { application.Certificate = request.Certificate.Length == 0 ? null : request.Certificate; } if (request.Capabilities != null) { application.Capabilities = request.Capabilities.Count == 0 ? null : request.Capabilities; } if (request.DiscoveryUrls != null) { application.DiscoveryUrls = request.DiscoveryUrls.Count == 0 ? null : request.DiscoveryUrls; } if (request.Locale != null) { application.Locale = string.IsNullOrEmpty(request.Locale) ? null : request.Locale; } if (request.DiscoveryProfileUri != null) { application.DiscoveryProfileUri = string.IsNullOrEmpty(request.DiscoveryProfileUri) ? null : request.DiscoveryProfileUri; } return(application); }
/// <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(); }