Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/FruitBankPluginAdminControl...

69 lines
2.8 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models;
using Nop.Services.Configuration;
using Nop.Web.Framework.Controllers;
using Nop.Services.Messages;
using System.Threading.Tasks;
namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
{
[Area("Admin")]
public class FruitBankPluginAdminController : BasePluginController
{
private readonly INotificationService _notificationService;
private readonly ISettingService _settingService;
private readonly FruitBankSettings _settings;
public FruitBankPluginAdminController(INotificationService notificationService, ISettingService settingService, FruitBankSettings settings)
{
_notificationService = notificationService;
_settingService = settingService;
_settings = settings;
}
[HttpGet]
public IActionResult Configure()
{
var model = new ConfigureModel
{
ApiKey = _settings.ApiKey,
ModelName = _settings.ModelName,
OpenAIApiKey = _settings.OpenAIApiKey,
OpenAIModelName = _settings.OpenAIModelName,
IsEnabled = _settings.IsEnabled,
ApiBaseUrl = _settings.ApiBaseUrl,
MaxTokens = _settings.MaxTokens,
Temperature = _settings.Temperature,
RequestTimeoutSeconds = _settings.RequestTimeoutSeconds
};
return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Configure/Configure.cshtml", model);
}
[HttpPost]
public async Task<IActionResult> Configure(ConfigureModel model)
{
if (!ModelState.IsValid)
{
return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Configure/Configure.cshtml", model);
}
// Map model properties to settings
_settings.ApiKey = model.ApiKey ?? string.Empty;
_settings.ModelName = model.ModelName ?? string.Empty;
_settings.OpenAIApiKey = model.OpenAIApiKey ?? string.Empty;
_settings.OpenAIModelName = model.OpenAIModelName ?? string.Empty;
_settings.IsEnabled = model.IsEnabled;
_settings.ApiBaseUrl = model.ApiBaseUrl ?? string.Empty;
_settings.OpenAIApiBaseUrl = model.OpenAIApiBaseUrl ?? string.Empty;
_settings.MaxTokens = model.MaxTokens;
_settings.Temperature = model.Temperature;
_settings.RequestTimeoutSeconds = model.RequestTimeoutSeconds;
// Save settings
await _settingService.SaveSettingAsync(_settings);
_notificationService.SuccessNotification("Beállítások mentve.");
return RedirectToAction("Configure");
}
}
}