public async Task UpdateSettingsV2(SmsSettingsV2Dto input) { var gatewayType = !string.IsNullOrWhiteSpace(input.Gateway) ? _typeFinder.Find(t => typeof(ISmsGateway).IsAssignableFrom(t) && SmsUtils.GetGatewayAlias(t) == input.Gateway).FirstOrDefault() : null; var gatewayUid = gatewayType?.GetClassUid(); await ChangeSettingAsync(SheshaSettingNames.Sms.SmsGateway, gatewayUid); await ChangeSettingAsync(SheshaSettingNames.Sms.RedirectAllMessagesTo, input.RedirectAllMessagesTo); var gateway = gatewayType != null ? IocManager.Resolve(gatewayType) as ISmsGateway : null; if (gateway.SettingsType != null) { var gatewayAlias = SmsUtils.GetGatewayAlias(gateway.GetType()); var gatewaySettingsJson = input.Gateways[gatewayAlias] as JObject; var gatewaySettings = gatewaySettingsJson.ToObject(gateway.SettingsType); await gateway.SetSettingsAsync(gatewaySettings); } }
public async Task <SmsSettingsV2Dto> GetSettingsV2() { var currentGatewayType = await GetCurrentGatewayType(); var settings = new SmsSettingsV2Dto { Gateway = currentGatewayType != null?SmsUtils.GetGatewayAlias(currentGatewayType) : null, RedirectAllMessagesTo = (await GetSettingValueAsync(SheshaSettingNames.Sms.RedirectAllMessagesTo)), }; var gatewayTypes = _typeFinder.Find(t => !t.IsAbstract && typeof(ISmsGateway).IsAssignableFrom(t)); foreach (var gatewayType in gatewayTypes) { var gateway = IocManager.Resolve(gatewayType) as ISmsGateway; if (gateway.SettingsType == null) { continue; } var gatewaySettings = await gateway.GetSettingsAsync(); var gatewayAlias = SmsUtils.GetGatewayAlias(gateway.GetType()); settings.Gateways[gatewayAlias] = gatewaySettings; } return(settings); }