public static TokenParser ProcessThemes(Tenant tenant, ProvisioningTenant provisioningTenant, TokenParser parser, PnPMonitoredScope scope, ProvisioningMessagesDelegate messagesDelegate) { if (provisioningTenant.Themes != null && provisioningTenant.Themes.Any()) { var themes = tenant.GetAllTenantThemes(); tenant.Context.Load(themes); tenant.Context.ExecuteQueryRetry(); foreach (var theme in provisioningTenant.Themes) { var parsedName = parser.ParseString(theme.Name); if (themes.FirstOrDefault(t => t.Name == parsedName) != null) { if (theme.Overwrite) { var parsedPalette = parser.ParseString(theme.Palette); messagesDelegate?.Invoke($"Overwriting existing theme {parsedName}", ProvisioningMessageType.Progress); var palette = JsonConvert.DeserializeObject <Dictionary <string, string> >(parsedPalette); var tenantTheme = new TenantTheme() { Name = parsedName, Palette = palette, IsInverted = theme.IsInverted }; tenant.UpdateTenantTheme(parsedName, JsonConvert.SerializeObject(tenantTheme)); tenant.Context.ExecuteQueryRetry(); } else { messagesDelegate?.Invoke($"Skipped processing theme {parsedName} as it already exists and Overwrite is set to false", ProvisioningMessageType.Progress); } } else { var parsedPalette = parser.ParseString(theme.Palette); messagesDelegate?.Invoke($"Processing theme {parsedName}", ProvisioningMessageType.Progress); var palette = JsonConvert.DeserializeObject <Dictionary <string, string> >(parsedPalette); var tenantTheme = new TenantTheme() { Name = parsedName, Palette = palette, IsInverted = theme.IsInverted }; tenant.AddTenantTheme(parsedName, JsonConvert.SerializeObject(tenantTheme)); tenant.Context.ExecuteQueryRetry(); } } } return(parser); }
public static TokenParser ProcessThemes(Tenant tenant, ProvisioningTenant provisioningTenant, TokenParser parser, PnPMonitoredScope scope, ProvisioningMessagesDelegate messagesDelegate) { if (provisioningTenant.Themes != null && provisioningTenant.Themes.Any()) { foreach (var theme in provisioningTenant.Themes) { var parsedName = parser.ParseString(theme.Name); var parsedPalette = parser.ParseString(theme.Palette); messagesDelegate?.Invoke($"Processing theme {parsedName}", ProvisioningMessageType.Progress); var palette = JsonConvert.DeserializeObject <Dictionary <string, string> >(parsedPalette); var tenantTheme = new TenantTheme() { Name = parsedName, Palette = palette, IsInverted = theme.IsInverted }; tenant.UpdateTenantTheme(parsedName, JsonConvert.SerializeObject(tenantTheme)); tenant.Context.ExecuteQueryRetry(); } } return(parser); }