Try your search with a different keyword or use * as a wildcard.
using Microsoft.AspNetCore.Mvc;
using Nop.Core;
using Nop.Plugin.Widgets.What3words.Models;
using Nop.Plugin.Widgets.What3words.Services;
using Nop.Services.Configuration;
using Nop.Services.Localization;
using Nop.Services.Logging;
using Nop.Services.Messages;
using Nop.Services.Security;
using Nop.Web.Framework;
using Nop.Web.Framework.Controllers;
using Nop.Web.Framework.Mvc.Filters;
namespace Nop.Plugin.Widgets.What3words.Controllers;
[AuthorizeAdmin]
[Area(AreaNames.ADMIN)]
[AutoValidateAntiforgeryToken]
public class What3wordsController : BasePluginController
{
#region Fields
protected readonly ILocalizationService _localizationService;
protected readonly ILogger _logger;
protected readonly INotificationService _notificationService;
protected readonly IPermissionService _permissionService;
protected readonly ISettingService _settingService;
protected readonly IStoreContext _storeContext;
protected readonly IWorkContext _workContext;
protected readonly What3wordsHttpClient _what3WordsHttpClient;
protected readonly What3wordsSettings _what3WordsSettings;
#endregion
#region Ctor
public What3wordsController(ILocalizationService localizationService,
ILogger logger,
INotificationService notificationService,
IPermissionService permissionService,
ISettingService settingService,
IStoreContext storeContext,
IWorkContext workContext,
What3wordsHttpClient what3WordsHttpClient,
What3wordsSettings what3WordsSettings)
{
_localizationService = localizationService;
_logger = logger;
_notificationService = notificationService;
_permissionService = permissionService;
_settingService = settingService;
_storeContext = storeContext;
_workContext = workContext;
_what3WordsHttpClient = what3WordsHttpClient;
_what3WordsSettings = what3WordsSettings;
}
#endregion
#region Methods
public async Task Configure()
{
if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageWidgets))
return AccessDeniedView();
var model = new ConfigurationModel
{
Enabled = _what3WordsSettings.Enabled
};
return View("~/Plugins/Widgets.What3words/Views/Configure.cshtml", model);
}
[HttpPost]
public async Task Configure(ConfigurationModel model)
{
if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageWidgets))
return AccessDeniedView();
if (!ModelState.IsValid)
return await Configure();
//request client API key if doesn't exist
if (string.IsNullOrEmpty(_what3WordsSettings.ApiKey))
{
try
{
var store = await _storeContext.GetCurrentStoreAsync();
var storeUrl = $"{store.Url?.TrimEnd('/')}/";
var apiKey = await _what3WordsHttpClient.RequestClientApiAsync(storeUrl);
_what3WordsSettings.ApiKey = apiKey;
}
catch (Exception exception)
{
await _logger.ErrorAsync($"what3words error: {exception.Message}.", exception, await _workContext.GetCurrentCustomerAsync());
_notificationService
.ErrorNotification(await _localizationService.GetResourceAsync("Plugins.Widgets.What3words.Configuration.Failed"));
return await Configure();
}
}
_what3WordsSettings.Enabled = model.Enabled;
await _settingService.SaveSettingAsync(_what3WordsSettings);
_notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.Plugins.Saved"));
return await Configure();
}
}
#endregion