void UpdateSettings(string id, NotificationTarget target, bool state) { var settingsById = Settings.Program.UserNotifications.ById; string targetString = target.ToString(); if (state) { if (!settingsById.TryGetValue(id, out var values)) { values = new HashSet <string>(); settingsById[id] = values; } values.Add(targetString); } else { if (settingsById.TryGetValue(id, out var values)) { values.Remove(targetString); if (values.Count == 0) { settingsById.Remove(id); } } } // TODO: сделать сохранение настроек асинхронным // и писать не каждый раз, а время от времени Settings.Program.Save(); }
public async Task <string> GetContent(NotificationTarget target, string templatePath, dynamic model) { string templateTypePath = "Templates\\" + target.ToString(); string basePath = Path.Combine(AppDomain.CurrentDomain !.BaseDirectory !, templateTypePath); var engine = new RazorLightEngineBuilder() .UseFileSystemProject(basePath) .UseMemoryCachingProvider() .Build(); return(await engine.CompileRenderAsync(templatePath, model)); }