Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }