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); }
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 List <SmsGatewayDto> GetAll() { var items = _typeFinder.Find(t => typeof(ISmsGateway).IsAssignableFrom(t)) .Select(t => new { Type = t, ClassAttribute = t.GetAttribute <ClassUidAttribute>() }) .Where(i => i.ClassAttribute != null) .OrderBy(i => i.Type.Name) .Select(t => new SmsGatewayDto { Uid = t.ClassAttribute.Uid, Alias = SmsUtils.GetGatewayAlias(t.Type), Name = ReflectionHelper.GetDisplayName(t.Type), Description = ReflectionHelper.GetDescription(t.Type) }) .ToList(); return(items); }