/// <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); }