コード例 #1
0
        /// <summary>
        /// Send SMS notification by message template
        /// </summary>
        /// <param name="messageTemplate">Message template</param>
        /// <param name="tokens">Tokens</param>
        private async Task SendSmsNotificationAsync(MessageTemplate messageTemplate, IEnumerable <Token> tokens)
        {
            //get plugin settings
            var storeId            = (int?)tokens.FirstOrDefault(token => token.Key == "Store.Id")?.Value;
            var sendinBlueSettings = await _settingService.LoadSettingAsync <SendinBlueSettings>(storeId ?? 0);

            //ensure SMS notifications enabled
            if (!sendinBlueSettings.UseSmsNotifications)
            {
                return;
            }

            //whether to send SMS by the passed message template
            var sendSmsForThisMessageTemplate = await _genericAttributeService
                                                .GetAttributeAsync <bool>(messageTemplate, SendinBlueDefaults.UseSmsAttribute);

            if (!sendSmsForThisMessageTemplate)
            {
                return;
            }

            //get text with replaced tokens
            var text = await _genericAttributeService.GetAttributeAsync <string>(messageTemplate, SendinBlueDefaults.SmsTextAttribute);

            if (!string.IsNullOrEmpty(text))
            {
                text = _tokenizer.Replace(text, tokens, false);
            }

            //get phone number send to
            var phoneNumberTo = string.Empty;
            var phoneType     = await _genericAttributeService.GetAttributeAsync <int>(messageTemplate, SendinBlueDefaults.PhoneTypeAttribute);

            switch (phoneType)
            {
            case 0:
                //merchant phone
                phoneNumberTo = sendinBlueSettings.StoreOwnerPhoneNumber;
                break;

            case 1:
                //customer phone
                phoneNumberTo = tokens.FirstOrDefault(token => token.Key == "Customer.PhoneNumber")?.Value?.ToString();
                break;

            case 2:
                //order billing address phone
                phoneNumberTo = tokens.FirstOrDefault(token => token.Key == "Order.BillingPhoneNumber")?.Value?.ToString();
                break;
            }

            //try to send SMS
            await _sendinBlueEmailManager.SendSMSAsync(phoneNumberTo, sendinBlueSettings.SmsSenderName, text);
        }