-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathVerizonSMSProvider.cs
148 lines (135 loc) · 6.31 KB
/
VerizonSMSProvider.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System;
using System.Linq;
using System.Web.Routing;
using Nop.Core;
using Nop.Core.Domain;
using Nop.Core.Domain.Messages;
using Nop.Core.Plugins;
using Nop.Services.Common;
using Nop.Services.Configuration;
using Nop.Services.Localization;
using Nop.Services.Logging;
using Nop.Services.Messages;
namespace Nop.Plugin.SMS.Verizon
{
/// <summary>
/// Represents the Verizon SMS provider
/// </summary>
public class VerizonSmsProvider : BasePlugin, IMiscPlugin
{
private readonly VerizonSettings _verizonSettings;
private readonly IQueuedEmailService _queuedEmailService;
private readonly IEmailAccountService _emailAccountService;
private readonly ILogger _logger;
private readonly ISettingService _settingService;
private readonly IStoreContext _storeContext;
private readonly EmailAccountSettings _emailAccountSettings;
public VerizonSmsProvider(VerizonSettings verizonSettings,
IQueuedEmailService queuedEmailService,
IEmailAccountService emailAccountService,
ILogger logger,
ISettingService settingService,
IStoreContext storeContext,
EmailAccountSettings emailAccountSettings)
{
this._verizonSettings = verizonSettings;
this._queuedEmailService = queuedEmailService;
this._emailAccountService = emailAccountService;
this._logger = logger;
this._settingService = settingService;
this._storeContext = storeContext;
this._emailAccountSettings = emailAccountSettings;
}
/// <summary>
/// Sends SMS
/// </summary>
/// <param name="text">SMS text</param>
/// <returns>Result</returns>
public bool SendSms(string text)
{
try
{
var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
if (emailAccount == null)
emailAccount = _emailAccountService.GetAllEmailAccounts().FirstOrDefault();
if (emailAccount == null)
throw new Exception("No email account could be loaded");
var queuedEmail = new QueuedEmail()
{
Priority = 5,
From = emailAccount.Email,
FromName = emailAccount.DisplayName,
To = _verizonSettings.Email,
ToName = string.Empty,
Subject = _storeContext.CurrentStore.Name,
Body = text,
CreatedOnUtc = DateTime.UtcNow,
EmailAccountId = emailAccount.Id
};
_queuedEmailService.InsertQueuedEmail(queuedEmail);
return true;
}
catch (Exception ex)
{
_logger.Error(ex.Message, ex);
return false;
}
}
/// <summary>
/// Gets a route for provider configuration
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="controllerName">Controller name</param>
/// <param name="routeValues">Route values</param>
public void GetConfigurationRoute(out string actionName, out string controllerName, out RouteValueDictionary routeValues)
{
actionName = "Configure";
controllerName = "SmsVerizon";
routeValues = new RouteValueDictionary() { { "Namespaces", "Nop.Plugin.SMS.Verizon.Controllers" }, { "area", null } };
}
/// <summary>
/// Install plugin
/// </summary>
public override void Install()
{
//settings
var settings = new VerizonSettings()
{
Email = "yournumber@vtext.com",
};
_settingService.SaveSetting(settings);
//locales
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.TestFailed", "Test message sending failed");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.TestSuccess", "Test message was sent (queued)");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.Enabled", "Enabled");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.Enabled.Hint", "Check to enable SMS provider");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.Email", "Email");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.Email.Hint", "Verizon email address(e.g. your_phone_number@vtext.com)");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.TestMessage", "Message text");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.Fields.TestMessage.Hint", "Text of the test message");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.SendTest", "Send");
this.AddOrUpdatePluginLocaleResource("Plugins.Sms.Verizon.SendTest.Hint", "Send test message");
base.Install();
}
/// <summary>
/// Uninstall plugin
/// </summary>
public override void Uninstall()
{
//settings
_settingService.DeleteSetting<VerizonSettings>();
//locales
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.TestFailed");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.TestSuccess");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.Enabled");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.Enabled.Hint");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.Email");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.Email.Hint");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.TestMessage");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.Fields.TestMessage.Hint");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.SendTest");
this.DeletePluginLocaleResource("Plugins.Sms.Verizon.SendTest.Hint");
base.Uninstall();
}
}
}