public async Task <UserSetting> GetSettingsForUserAsync(string userId) { var isHelpDeskUser = Context.SecurityProvider.IsTdHelpDeskUser || Context.SecurityProvider.IsTdAdministrator; var settings = await Context.UserSettings.FindAsync(userId); //ensure settings exist if (settings == null) { settings = UserSetting.GetDefaultSettingsForUser(userId, isHelpDeskUser); using (var tempCtx = new TdDomainContext()) { await tempCtx.UserSettingsManager.AddOrUpdateSettingsForUser(settings); await tempCtx.SaveChangesAsync(); } } //ensure that the user has all required lists for their role, if not blow away list settings and recreate if (!settings.ListSettings.HasRequiredDefaultListSettings(isHelpDeskUser)) { settings.ListSettings = new UserTicketListSettingsCollection { UserTicketListSetting.GetDefaultListSettings(userId, isHelpDeskUser) }; using (var tempCtx = new TdDomainContext()) { await tempCtx.UserSettingsManager.AddOrUpdateSettingsForUser(settings); await tempCtx.SaveChangesAsync(); } } return(settings); }
public async Task <UserSetting> GetSettingsForUserAsync(string userId) { var settings = await Context.UserSettings.FindAsync(userId); if (settings == null) { //settings for user not found, make default and save on separate context (so we don't commit other changes on this context as a side-effect). settings = UserSetting.GetDefaultSettingsForUser(userId, Context.SecurityProvider.IsTdHelpDeskUser || Context.SecurityProvider.IsTdAdministrator); using (var tempCtx = new TdDomainContext()) { tempCtx.UserSettingsManager.AddSettingsForUser(settings); await tempCtx.SaveChangesAsync(); } } return(settings); }