diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/AIPluginAdminController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/FruitBankPluginAdminController.cs
similarity index 66%
rename from Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/AIPluginAdminController.cs
rename to Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/FruitBankPluginAdminController.cs
index 6cba1d1..43c7425 100644
--- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/AIPluginAdminController.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/FruitBankPluginAdminController.cs
@@ -1,21 +1,21 @@
using Microsoft.AspNetCore.Mvc;
-using Nop.Plugin.Misc.AIPlugin.Areas.Admin.Models;
-using Nop.Plugin.Misc.AIPlugin;
-//using Nop.Plugin.Misc.AIPlugin;
+using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models;
+using Nop.Plugin.Misc.FruitBankPlugin;
+//using Nop.Plugin.Misc.FruitBankPlugin;
using Nop.Services.Configuration;
using Nop.Web.Framework.Controllers;
using Nop.Services.Messages;
-namespace Nop.Plugin.Misc.AIPlugin.Controllers
+namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
{
[Area("Admin")]
- public class AIPluginAdminController : BasePluginController
+ public class FruitBankPluginAdminController : BasePluginController
{
private readonly INotificationService _notificationService;
private readonly ISettingService _settingService;
private readonly OpenAiSettings _settings;
- public AIPluginAdminController(INotificationService notificationService, ISettingService settingService, OpenAiSettings settings)
+ public FruitBankPluginAdminController(INotificationService notificationService, ISettingService settingService, OpenAiSettings settings)
{
_notificationService = notificationService;
_settingService = settingService;
@@ -29,7 +29,7 @@ namespace Nop.Plugin.Misc.AIPlugin.Controllers
{
ApiKey = _settings.ApiKey
};
- return View("~/Plugins/Misc.AIPlugin/Views/Configure/Configure.cshtml", model);
+ return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Configure/Configure.cshtml", model);
}
[HttpPost]
diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ConfigureModel.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ConfigureModel.cs
index d74e084..872a0ed 100644
--- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ConfigureModel.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ConfigureModel.cs
@@ -5,11 +5,11 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Nop.Plugin.Misc.AIPlugin.Areas.Admin.Models
+namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models
{
public record ConfigureModel
{
- [NopResourceDisplayName("Plugins.AIPlugin.Fields.ApiKey")]
+ [NopResourceDisplayName("Plugins.FruitBankPlugin.Fields.ApiKey")]
public string ApiKey { get; set; }
}
}
diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Configure/Configure.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Configure/Configure.cshtml
index 3abc8da..cc9f0c2 100644
--- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Configure/Configure.cshtml
+++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Configure/Configure.cshtml
@@ -1,8 +1,8 @@
-@model Nop.Plugin.Misc.AIPlugin.Models.ConfigureModel
+@model Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models.ConfigureModel
@{
Layout = "_AdminLayout";
- Html.SetActiveMenuItemSystemName("AiAssistant.Configure");
+ NopHtml.SetActiveMenuItemSystemName("AiAssistant.Configure");
}
diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/_ViewImports.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/_ViewImports.cshtml
index 270744e..47e0479 100644
--- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/_ViewImports.cshtml
+++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/_ViewImports.cshtml
@@ -2,6 +2,8 @@
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Nop.Web.Framework
+@inject INopHtmlHelper NopHtml
+
@using Microsoft.AspNetCore.Mvc.ViewFeatures
@using Nop.Web.Framework.UI
@using Nop.Web.Framework.Extensions
diff --git a/Nop.Plugin.Misc.AIPlugin/Components/CustomViewComponent.cs b/Nop.Plugin.Misc.AIPlugin/Components/CustomViewComponent.cs
index 1e2453a..b17a413 100644
--- a/Nop.Plugin.Misc.AIPlugin/Components/CustomViewComponent.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Components/CustomViewComponent.cs
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using Nop.Web.Framework.Components;
-namespace Nop.Plugin.Misc.AIPlugin.Components;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Components;
[ViewComponent(Name = "Custom")]
public class CustomViewComponent : NopViewComponent
diff --git a/Nop.Plugin.Misc.AIPlugin/Components/ProductAIWidgetViewComponent.cs b/Nop.Plugin.Misc.AIPlugin/Components/ProductAIWidgetViewComponent.cs
index 7ee276e..fac6c2e 100644
--- a/Nop.Plugin.Misc.AIPlugin/Components/ProductAIWidgetViewComponent.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Components/ProductAIWidgetViewComponent.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Nop.Plugin.Misc.AIPlugin.Components
+namespace Nop.Plugin.Misc.FruitBankPlugin.Components
{
[ViewComponent(Name = "ProductAIWidget")]
@@ -20,7 +20,7 @@ namespace Nop.Plugin.Misc.AIPlugin.Components
if (product == null)
return Content(""); // ne rendereljen semmit, ha nincs product
- return View("~/Plugins/Misc.AIPlugin/Views/ProductAIListWidget.cshtml", product);
+ return View("~/Plugins/Misc.FruitBankPlugin/Views/ProductAIListWidget.cshtml", product);
}
else if (additionalData is Nop.Web.Models.Catalog.ProductDetailsModel)
{
@@ -28,7 +28,7 @@ namespace Nop.Plugin.Misc.AIPlugin.Components
if (product == null)
return Content(""); // ne rendereljen semmit, ha nincs product
- return View("~/Plugins/Misc.AIPlugin/Views/ProductAIWidget.cshtml", product);
+ return View("~/Plugins/Misc.FruitBankPlugin/Views/ProductAIWidget.cshtml", product);
}
else {
return Content(""); // ne rendereljen semmit, ha nem productDetailModel vagy productOverviewModel
diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/CheckoutController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/CheckoutController.cs
new file mode 100644
index 0000000..4b81171
--- /dev/null
+++ b/Nop.Plugin.Misc.AIPlugin/Controllers/CheckoutController.cs
@@ -0,0 +1,16 @@
+using Microsoft.AspNetCore.Mvc;
+
+namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
+{
+ [Area("Admin")] // ha admin oldalra, de a frontendre ne legyen
+ public class CheckoutController : Controller
+ {
+ [Route("checkout/pending-measurement")]
+ public IActionResult PendingMeasurementWarning()
+ {
+ // visszaadja a view-t
+ return View("~/Plugins/Misc.FruitBankPlugin/Views/Checkout/PendingMeasurementWarning.cshtml");
+ }
+ }
+}
+
diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/CustomTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/CustomTable.cs
index 6628c61..b346597 100644
--- a/Nop.Plugin.Misc.AIPlugin/Domains/CustomTable.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Domains/CustomTable.cs
@@ -1,6 +1,6 @@
using Nop.Core;
-namespace Nop.Plugin.Misc.AIPlugin.Domains;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Domains;
public partial class CustomTable : BaseEntity
{
diff --git a/Nop.Plugin.Misc.AIPlugin/Filters/PendingMeasurementCheckoutFilter.cs b/Nop.Plugin.Misc.AIPlugin/Filters/PendingMeasurementCheckoutFilter.cs
new file mode 100644
index 0000000..25521f9
--- /dev/null
+++ b/Nop.Plugin.Misc.AIPlugin/Filters/PendingMeasurementCheckoutFilter.cs
@@ -0,0 +1,55 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Nop.Core.Domain.Orders;
+using Nop.Services.Orders;
+using Nop.Services.Common;
+using System.Threading.Tasks;
+using Nop.Core;
+using Nop.Plugin.Misc.FruitBankPlugin.Services;
+
+namespace Nop.Plugin.Misc.FruitBankPlugin.Filters
+{
+ public class PendingMeasurementCheckoutFilter : IAsyncActionFilter
+ {
+ private readonly IWorkContext _workContext;
+ private readonly IOrderService _orderService;
+ private readonly IOrderMeasurementService _orderMeasurementService;
+
+ public PendingMeasurementCheckoutFilter(
+ IWorkContext workContext,
+ IOrderService orderService,
+ IOrderMeasurementService orderMeasurementService)
+ {
+ _workContext = workContext;
+ _orderService = orderService;
+ _orderMeasurementService = orderMeasurementService;
+ }
+
+ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+ {
+ // csak a ConfirmOrder action-nál kell ellenőrizni
+ var actionName = context.ActionDescriptor.RouteValues["action"];
+ var controllerName = context.ActionDescriptor.RouteValues["controller"];
+
+ if (controllerName == "Checkout" && actionName == "ConfirmOrder")
+ {
+ // lekérjük a user aktuális kosarát
+ var customer = await _workContext.GetCurrentCustomerAsync();
+ var order = await _orderService.GetOrderByIdAsync((int)context.ActionArguments["orderId"]); // ha van orderId param
+
+ if (order != null && await _orderMeasurementService.IsPendingMeasurementAsync(order))
+ {
+ context.Result = new RedirectToRouteResult(new
+ {
+ controller = "Checkout",
+ action = "PendingMeasurementWarning"
+ });
+ return; // itt kilépünk, a fizetés nem engedélyezett
+ }
+ }
+
+ await next(); // mehet a többi pipeline
+ }
+ }
+}
+
diff --git a/Nop.Plugin.Misc.AIPlugin/FruitBankConsts.cs b/Nop.Plugin.Misc.AIPlugin/FruitBankConsts.cs
new file mode 100644
index 0000000..2480480
--- /dev/null
+++ b/Nop.Plugin.Misc.AIPlugin/FruitBankConsts.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Nop.Plugin.Misc.FruitBankPlugin
+{
+ public static class FruitBankConsts
+ {
+ public const string RequiresMeasurementAttr = "PriceByMeasurement.RequiresMeasurement";
+ }
+
+}
diff --git a/Nop.Plugin.Misc.AIPlugin/AIPlugin.cs b/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs
similarity index 88%
rename from Nop.Plugin.Misc.AIPlugin/AIPlugin.cs
rename to Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs
index 9998ffa..2e3b2d8 100644
--- a/Nop.Plugin.Misc.AIPlugin/AIPlugin.cs
+++ b/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs
@@ -2,7 +2,7 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc.Routing;
-using Nop.Plugin.Misc.AIPlugin.Components;
+using Nop.Plugin.Misc.FruitBankPlugin.Components;
using Nop.Services.Cms;
using Nop.Services.Configuration;
using Nop.Services.Localization;
@@ -12,12 +12,12 @@ using Nop.Web.Framework.Infrastructure;
using Nop.Web.Framework.Menu;
-namespace Nop.Plugin.Misc.AIPlugin
+namespace Nop.Plugin.Misc.FruitBankPlugin
{
///
/// Main plugin class
///
- public class AIPlugin : BasePlugin, IWidgetPlugin
+ public class FruitBankPlugin : BasePlugin, IWidgetPlugin
{
protected readonly IActionContextAccessor _actionContextAccessor;
private readonly ISettingService _settingService;
@@ -30,7 +30,7 @@ namespace Nop.Plugin.Misc.AIPlugin
//handle AdminMenuCreatedEvent
- public AIPlugin(IActionContextAccessor actionContextAccessor,
+ public FruitBankPlugin(IActionContextAccessor actionContextAccessor,
ISettingService settingService,
//IWebHelper webHelper,
ILocalizationService localizationService,
@@ -50,6 +50,9 @@ namespace Nop.Plugin.Misc.AIPlugin
// --- INSTALL ---
public override async Task InstallAsync()
{
+
+ // TODO: Add "NeedsToBeMeasured" product attribute if not exists
+
// Default settings
var settings = new OpenAiSettings
{
@@ -88,9 +91,9 @@ namespace Nop.Plugin.Misc.AIPlugin
// var pluginNode = new AdminMenuItem
// {
- // SystemName = "AIPlugin.Configure",
+ // SystemName = "FruitBankPlugin.Configure",
// Title = "AI Assistant",
- // Url = $"{_webHelper.GetStoreLocation()}Admin/AIPluginAdmin/Configure",
+ // Url = $"{_webHelper.GetStoreLocation()}Admin/FruitBankPluginAdmin/Configure",
// Visible = true
// };
// rootNode.ChildNodes.Add(pluginNode);
@@ -128,15 +131,15 @@ namespace Nop.Plugin.Misc.AIPlugin
{
new()
{
- // SystemName = "AIPlugin.Configure",
+ // SystemName = "FruitBankPlugin.Configure",
// Title = "AI Assistant",
- // Url = $"{_webHelper.GetStoreLocation()}Admin/AIPluginAdmin/Configure",
+ // Url = $"{_webHelper.GetStoreLocation()}Admin/FruitBankPluginAdmin/Configure",
// Visible = true
Visible = true,
SystemName = PluginDescriptor.SystemName,
Title = PluginDescriptor.FriendlyName,
IconClass = "far fa-circle",
- Url = _adminMenu.GetMenuItemUrl("AIPlugin", "Configure"),
+ Url = _adminMenu.GetMenuItemUrl("FruitBankPlugin", "Configure"),
//Url = "Admin/SignalRApi/Configure",
//ControllerName = "SignalRApi",
//ActionName = "Configure",
@@ -148,7 +151,7 @@ namespace Nop.Plugin.Misc.AIPlugin
public override string GetConfigurationPageUrl()
{
- return _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext).RouteUrl("Plugin.Misc.AIPlugin.Configure");
+ return _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext).RouteUrl("Plugin.Misc.FruitBankPlugin.Configure");
}
public Type GetWidgetViewComponent(string widgetZone)
diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs
index 5fb9632..480d90d 100644
--- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs
@@ -1,10 +1,14 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc.Razor;
+using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Nop.Core.Infrastructure;
+using Nop.Plugin.Misc.FruitBankPlugin.Filters;
+using Nop.Plugin.Misc.FruitBankPlugin.Services;
+using Nop.Services.Catalog;
-namespace Nop.Plugin.Misc.AIPlugin.Infrastructure;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure;
public class PluginNopStartup : INopStartup
{
@@ -20,8 +24,26 @@ public class PluginNopStartup : INopStartup
options.ViewLocationExpanders.Add(new ViewLocationExpander());
});
+ services.AddCors(feature =>
+ feature.AddPolicy(
+ "AllowBlazorClient",
+ apiPolicy => apiPolicy
+ .WithOrigins("https://localhost:7144")
+ .AllowAnyHeader()
+ .AllowAnyMethod()
+ .AllowCredentials()
+ ));
+
+ services.AddSignalR();
+
//register services and interfaces
//services.AddScoped
();
+ services.AddScoped();
+ services.AddScoped();
+ services.AddControllersWithViews(options =>
+ {
+ options.Filters.AddService();
+ });
}
///
@@ -30,10 +52,24 @@ public class PluginNopStartup : INopStartup
/// Builder for configuring an application's request pipeline
public void Configure(IApplicationBuilder application)
{
+
+
+
+ application.UseWhen(context => context.Request.Path.StartsWithSegments("/fbhub"), app =>
+ {
+ app.UseCors("AllowBlazorClient");
+ app.UseRouting();
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapHub("/fbhub");
+ });
+ });
+
+
}
///
/// Gets order of this startup configuration implementation
///
- public int Order => 3000;
+ public int Order => 100;
}
\ No newline at end of file
diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs
index 6bd7294..9cb3d70 100644
--- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs
@@ -1,7 +1,10 @@
-using Microsoft.AspNetCore.Routing;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Routing;
+using Nop.Plugin.Misc.FruitBankPlugin.Services;
+using Nop.Web.Framework;
using Nop.Web.Framework.Mvc.Routing;
-namespace Nop.Plugin.Misc.AIPlugin.Infrastructure;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure;
///
/// Represents plugin route provider
@@ -14,7 +17,11 @@ public class RouteProvider : IRouteProvider
/// Route builder
public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
{
+ endpointRouteBuilder.MapControllerRoute(name: "Plugin.Misc.FruitBankPlugin.Configure",
+ pattern: "Admin/FruitBankPlugin/Configure",
+ defaults: new { controller = "FruitBankPluginAdmin", action = "Configure", area = AreaNames.ADMIN });
+ //endpointRouteBuilder.MapHub("/fbhub");//.RequireCors("AllowBlazorClient");
}
///
diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/ViewLocationExpander.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/ViewLocationExpander.cs
index c4266bf..d822c72 100644
--- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/ViewLocationExpander.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/ViewLocationExpander.cs
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Mvc.Razor;
-namespace Nop.Plugin.Misc.AIPlugin.Infrastructure;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure;
public class ViewLocationExpander : IViewLocationExpander
{
@@ -26,11 +26,11 @@ public class ViewLocationExpander : IViewLocationExpander
{
if (context.AreaName == "Admin")
{
- viewLocations = new[] { $"/Plugins/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/{context.ControllerName}/{context.ViewName}.cshtml" }.Concat(viewLocations);
+ viewLocations = new[] { $"/Plugins/Nop.Plugin.Misc.FruitBankPlugin/Areas/Admin/Views/{context.ControllerName}/{context.ViewName}.cshtml" }.Concat(viewLocations);
}
else
{
- viewLocations = new[] { $"/Plugins/Nop.Plugin.Misc.AIPlugin/Views/{context.ControllerName}/{context.ViewName}.cshtml" }.Concat(viewLocations);
+ viewLocations = new[] { $"/Plugins/Nop.Plugin.Misc.FruitBankPlugin/Views/{context.ControllerName}/{context.ViewName}.cshtml" }.Concat(viewLocations);
}
return viewLocations;
diff --git a/Nop.Plugin.Misc.AIPlugin/Mapping/Builders/PluginBuilder.cs b/Nop.Plugin.Misc.AIPlugin/Mapping/Builders/PluginBuilder.cs
index 18e17fd..1c70bf4 100644
--- a/Nop.Plugin.Misc.AIPlugin/Mapping/Builders/PluginBuilder.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Mapping/Builders/PluginBuilder.cs
@@ -1,8 +1,8 @@
using FluentMigrator.Builders.Create.Table;
using Nop.Data.Mapping.Builders;
-using Nop.Plugin.Misc.AIPlugin.Domains;
+using Nop.Plugin.Misc.FruitBankPlugin.Domains;
-namespace Nop.Plugin.Misc.AIPlugin.Mapping.Builders;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Mapping.Builders;
public class PluginBuilder : NopEntityBuilder
{
diff --git a/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs b/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs
index f4ab688..29aeaab 100644
--- a/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs
@@ -1,6 +1,6 @@
using Nop.Data.Mapping;
-namespace Nop.Plugin.Misc.AIPlugin.Mapping;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Mapping;
public partial class NameCompatibility : INameCompatibility
{
diff --git a/Nop.Plugin.Misc.AIPlugin/Migrations/SchemaMigration.cs b/Nop.Plugin.Misc.AIPlugin/Migrations/SchemaMigration.cs
index 8df4da1..b6ea61d 100644
--- a/Nop.Plugin.Misc.AIPlugin/Migrations/SchemaMigration.cs
+++ b/Nop.Plugin.Misc.AIPlugin/Migrations/SchemaMigration.cs
@@ -1,12 +1,12 @@
using FluentMigrator;
using Nop.Data.Extensions;
using Nop.Data.Migrations;
-using Nop.Plugin.Misc.AIPlugin.Domains;
+using Nop.Plugin.Misc.FruitBankPlugin.Domains;
-namespace Nop.Plugin.Misc.AIPlugin.Migrations;
+namespace Nop.Plugin.Misc.FruitBankPlugin.Migrations;
//2024-10-31
-[NopMigration("2025-08-29 12:07:22", "Nop.Plugin.Misc.AIPlugin schema", MigrationProcessType.Installation)]
+[NopMigration("2025-08-29 12:07:22", "Nop.Plugin.Misc.FruitBankPlugin schema", MigrationProcessType.Installation)]
public class SchemaMigration : AutoReversingMigration
{
///
diff --git a/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.AIPlugin.csproj b/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj
similarity index 89%
rename from Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.AIPlugin.csproj
rename to Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj
index 8a0f3af..3e1483c 100644
--- a/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.AIPlugin.csproj
+++ b/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj
@@ -2,7 +2,7 @@
net9.0
- $(SolutionDir)\Presentation\Nop.Web\Plugins\Misc.AIPlugin
+ $(SolutionDir)\Presentation\Nop.Web\Plugins\Misc.FruitBankPlugin
$(OutputPath)