using Microsoft.AspNetCore.Mvc; using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; using Nop.Plugin.Misc.FruitBankPlugin; using Nop.Services.Configuration; using Nop.Web.Framework.Controllers; using Nop.Services.Messages; using System.Threading.Tasks; namespace Nop.Plugin.Misc.FruitBankPlugin.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 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"); } } }