实例介绍
SimplCommerce是一个采用.NET Core技术构建的简易、跨平台、模块化电子商务系统。它具有高级架构设计,支持多平台部署,包括Windows、Linux和MacOS。
主要技术和框架:
- ASP.NET MVC Core 6.0
- Entity Framework Core 6.0
- ASP.NET Identity Core 6.0
- Angular 1.6.3
- MediatR 7.0.0 用于领域事件
如何运行:
对于使用Visual Studio 2022和SQL Server的用户:
- 更新SimplCommerce.WebHost中appsettings.json的连接字符串。
- 构建整个解决方案。
- 在解决方案资源管理器中,确保选择SimplCommerce.WebHost作为启动项目。
- 打开包管理器控制台窗口,确保SimplCommerce.WebHost被选为默认项目。然后输入'Update-Database'并按'Enter'键,此操作将创建数据库架构。
- 在Visual Studio中,按'Control F5'。
- 更新SimplCommerce.WebHost中appsettings.json的连接字符串。
- 运行simpl-build.sh文件,输入命令'sudo ./simpl-build.sh'。
- 在终端中,导航到'src/SimplCommerce.WebHost'并输入'dotnet run',然后按'Enter'键。
通过访问/Admin页面并使用内置账号admin@simplcommerce.com, 1qazZAQ!可以进入后台管理界面。
【实例截图】
【核心代码】
文件清单
└── SimplCommerce-7fb6d40774ca90fde707453b5878c5838f9bc4ca
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Delete-BIN-OBJ-Folders.bat
├── Dockerfile
├── Dockerfile-sqlite
├── License.txt
├── README.md
├── SECURITY.md
├── Settings.StyleCop
├── SimplCommerce.sln
├── StaticData-RO.sql
├── aws-beanstalk
│ ├── Dockerfile
│ ├── ebapp
│ │ └── Dockerrun.aws.json
│ └── simplcommerce-eb.zip
├── azure-pipelines.yml
├── build
│ ├── SimplCommerce.Build.sln
│ ├── SimplCommerce.MSBuildTasks
│ │ ├── CopyModuleTask.cs
│ │ ├── Module.cs
│ │ ├── ModuleManifest.cs
│ │ └── SimplCommerce.MSBuildTasks.csproj
│ ├── net46
│ │ ├── Microsoft.Build.Framework.dll
│ │ ├── Microsoft.Build.Utilities.Core.dll
│ │ ├── Microsoft.VisualStudio.Setup.Configuration.Interop.dll
│ │ ├── SimplCommerce.MSBuildTasks.dll
│ │ ├── System.Collections.Immutable.dll
│ │ └── System.Runtime.InteropServices.RuntimeInformation.dll
│ └── netcoreapp2.0
│ ├── SimplCommerce.MSBuildTasks.deps.json
│ └── SimplCommerce.MSBuildTasks.dll
├── docker-entrypoint.sh
├── global.json
├── jshint.option.xml
├── miscellaneous
│ ├── Icon.png
│ ├── Icon.psd
│ └── Logo_SimplCommerce.psd
├── modular-architecture.png
├── run-tests.ps1
├── run-tests.sh
├── simpl-build.sh
├── src
│ ├── Database
│ │ ├── Countries.sql
│ │ ├── MySql
│ │ │ └── StaticData-GB.sql
│ │ ├── StaticData-BR-Address.sql
│ │ ├── StaticData-BR.sql
│ │ ├── StaticData-CN.sql
│ │ ├── StaticData-DE.sql
│ │ ├── StaticData-DefaultLocalization.sql
│ │ ├── StaticData-ES.sql
│ │ ├── StaticData-FR.sql
│ │ ├── StaticData-GB.sql
│ │ ├── StaticData-IR.sql
│ │ ├── StaticData-KR.sql
│ │ ├── StaticData-RU.sql
│ │ ├── StaticData-TN.sql
│ │ ├── StaticData-TR.sql
│ │ ├── StaticData-UA.sql
│ │ ├── StaticData-US.sql
│ │ └── StaticData-VN.sql
│ ├── Modules
│ │ ├── Directory.Build.props
│ │ ├── SimplCommerce.Module.ActivityLog
│ │ │ ├── Areas
│ │ │ │ └── ActivityLog
│ │ │ │ └── Controllers
│ │ │ │ └── MostViewedEntityController.cs
│ │ │ ├── Data
│ │ │ │ ├── ActivityLogCustomModelBuilder.cs
│ │ │ │ ├── ActivityRepository.cs
│ │ │ │ └── IActivityTypeRepository.cs
│ │ │ ├── Events
│ │ │ │ └── EntityViewedHandler.cs
│ │ │ ├── Models
│ │ │ │ ├── Activity.cs
│ │ │ │ ├── ActivityType.cs
│ │ │ │ └── MostViewEntityDto.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.ActivityLog.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── activitylog-service.js
│ │ │ ├── activitylog.module.js
│ │ │ ├── most-viewed-products.directive.html
│ │ │ └── most-viewed-products.directive.js
│ │ ├── SimplCommerce.Module.Catalog
│ │ │ ├── Areas
│ │ │ │ └── Catalog
│ │ │ │ ├── Components
│ │ │ │ │ ├── CategoryBreadcrumbViewComponent.cs
│ │ │ │ │ ├── CategoryMenuViewComponent.cs
│ │ │ │ │ ├── CategoryWidgetViewComponent.cs
│ │ │ │ │ ├── ProductWidgetViewComponent.cs
│ │ │ │ │ └── SimpleProductWidgetViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── BrandApiController.cs
│ │ │ │ │ ├── BrandController.cs
│ │ │ │ │ ├── CategoryApiController.cs
│ │ │ │ │ ├── CategoryController.cs
│ │ │ │ │ ├── CategoryTranslationApiController.cs
│ │ │ │ │ ├── CategoryWidgetApiController.cs
│ │ │ │ │ ├── ProductApiController.cs
│ │ │ │ │ ├── ProductAttributeApiController.cs
│ │ │ │ │ ├── ProductAttributeGroupApiController.cs
│ │ │ │ │ ├── ProductCloneApiController.cs
│ │ │ │ │ ├── ProductController.cs
│ │ │ │ │ ├── ProductOptionApiController.cs
│ │ │ │ │ ├── ProductPriceApiController.cs
│ │ │ │ │ ├── ProductTemplateApiController.cs
│ │ │ │ │ ├── ProductTranslationApiController.cs
│ │ │ │ │ ├── ProductWidgetApiController.cs
│ │ │ │ │ └── SimpleProductWidgetApiController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── BrandForm.cs
│ │ │ │ │ ├── BrandVm.cs
│ │ │ │ │ ├── CategoryForm.cs
│ │ │ │ │ ├── CategoryListItem.cs
│ │ │ │ │ ├── CategoryMenuItem.cs
│ │ │ │ │ ├── CategoryThumbnail.cs
│ │ │ │ │ ├── CategoryTranslationForm.cs
│ │ │ │ │ ├── CategoryWidgetComponentVm.cs
│ │ │ │ │ ├── CategoryWidgetForm.cs
│ │ │ │ │ ├── CategoryWidgetSettings.cs
│ │ │ │ │ ├── FilterBrand.cs
│ │ │ │ │ ├── FilterCategory.cs
│ │ │ │ │ ├── FilterOption.cs
│ │ │ │ │ ├── FilterPrice.cs
│ │ │ │ │ ├── ProductAttributeFormVm.cs
│ │ │ │ │ ├── ProductAttributeGroupFormVm.cs
│ │ │ │ │ ├── ProductAttributeVm.cs
│ │ │ │ │ ├── ProductCategoryForm.cs
│ │ │ │ │ ├── ProductCloneFormVm.cs
│ │ │ │ │ ├── ProductDetail.cs
│ │ │ │ │ ├── ProductDetailAttribute.cs
│ │ │ │ │ ├── ProductDetailCategory.cs
│ │ │ │ │ ├── ProductDetailOption.cs
│ │ │ │ │ ├── ProductDetailVariation.cs
│ │ │ │ │ ├── ProductDetailVariationOption.cs
│ │ │ │ │ ├── ProductForm.cs
│ │ │ │ │ ├── ProductLinkVm.cs
│ │ │ │ │ ├── ProductListItem.cs
│ │ │ │ │ ├── ProductMediaVm.cs
│ │ │ │ │ ├── ProductOptionCombinationVm.cs
│ │ │ │ │ ├── ProductOptionDisplay.cs
│ │ │ │ │ ├── ProductOptionFormVm.cs
│ │ │ │ │ ├── ProductOptionValueVm.cs
│ │ │ │ │ ├── ProductOptionVm.cs
│ │ │ │ │ ├── ProductPriceItemForm.cs
│ │ │ │ │ ├── ProductTemplateFrom.cs
│ │ │ │ │ ├── ProductThumbnail.cs
│ │ │ │ │ ├── ProductTranslationForm.cs
│ │ │ │ │ ├── ProductVariationVm.cs
│ │ │ │ │ ├── ProductVm.cs
│ │ │ │ │ ├── ProductWidgetComponentVm.cs
│ │ │ │ │ ├── ProductWidgetForm.cs
│ │ │ │ │ ├── ProductWidgetOrderBy.cs
│ │ │ │ │ ├── ProductWidgetSetting.cs
│ │ │ │ │ ├── ProductsByBrand.cs
│ │ │ │ │ ├── ProductsByCategory.cs
│ │ │ │ │ ├── SearchOption.cs
│ │ │ │ │ ├── SimpleProductWidgetComponentVm.cs
│ │ │ │ │ ├── SimpleProductWidgetForm.cs
│ │ │ │ │ └── SimpleProductWidgetSetting.cs
│ │ │ │ └── Views
│ │ │ │ ├── Brand
│ │ │ │ │ └── BrandDetail.cshtml
│ │ │ │ ├── Category
│ │ │ │ │ └── CategoryDetail.cshtml
│ │ │ │ ├── Product
│ │ │ │ │ ├── ProductDetail.cshtml
│ │ │ │ │ └── ProductOverview.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ ├── Components
│ │ │ │ │ │ ├── CategoryBreadcrumb
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ ├── CategoryMenu
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ ├── CategoryWidget
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ ├── ProductWidget
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ └── SimpleProductWidget
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── _ProductThumbnail.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ ├── CatalogCustomModelBuilder.cs
│ │ │ │ ├── IProductTemplateProductAttributeRepository.cs
│ │ │ │ └── ProductTemplateProductAttributeRepository.cs
│ │ │ ├── Events
│ │ │ │ └── ReviewSummaryChangedHandler.cs
│ │ │ ├── Models
│ │ │ │ ├── Brand.cs
│ │ │ │ ├── CalculatedProductPrice.cs
│ │ │ │ ├── Category.cs
│ │ │ │ ├── Product.cs
│ │ │ │ ├── ProductAttribute.cs
│ │ │ │ ├── ProductAttributeGroup.cs
│ │ │ │ ├── ProductAttributeValue.cs
│ │ │ │ ├── ProductCategory.cs
│ │ │ │ ├── ProductLink.cs
│ │ │ │ ├── ProductLinkType.cs
│ │ │ │ ├── ProductMedia.cs
│ │ │ │ ├── ProductOption.cs
│ │ │ │ ├── ProductOptionCombination.cs
│ │ │ │ ├── ProductOptionValue.cs
│ │ │ │ ├── ProductPriceHistory.cs
│ │ │ │ ├── ProductTemplate.cs
│ │ │ │ └── ProductTemplateProductAttribute.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── BrandService.cs
│ │ │ │ ├── CategoryService.cs
│ │ │ │ ├── IBrandService.cs
│ │ │ │ ├── ICategoryService.cs
│ │ │ │ ├── IProductPricingService.cs
│ │ │ │ ├── IProductService.cs
│ │ │ │ ├── ProductPricingService.cs
│ │ │ │ └── ProductService.cs
│ │ │ ├── SimplCommerce.Module.Catalog.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── admin
│ │ │ │ ├── brand
│ │ │ │ │ ├── brand-form.html
│ │ │ │ │ ├── brand-form.js
│ │ │ │ │ ├── brand-list.html
│ │ │ │ │ ├── brand-list.js
│ │ │ │ │ └── brand-service.js
│ │ │ │ ├── catalog.module.js
│ │ │ │ ├── category
│ │ │ │ │ ├── category-form.html
│ │ │ │ │ ├── category-form.js
│ │ │ │ │ ├── category-list.html
│ │ │ │ │ ├── category-list.js
│ │ │ │ │ ├── category-service.js
│ │ │ │ │ ├── category-translation-form.html
│ │ │ │ │ └── category-translation-form.js
│ │ │ │ ├── category-widget
│ │ │ │ │ ├── category-widget-form.html
│ │ │ │ │ ├── category-widget-form.js
│ │ │ │ │ └── category-widget-service.js
│ │ │ │ ├── product
│ │ │ │ │ ├── product-form.html
│ │ │ │ │ ├── product-form.js
│ │ │ │ │ ├── product-list.html
│ │ │ │ │ ├── product-list.js
│ │ │ │ │ ├── product-option-display-directive.html
│ │ │ │ │ ├── product-option-display-directive.js
│ │ │ │ │ ├── product-selection-directive.html
│ │ │ │ │ ├── product-selection-directive.js
│ │ │ │ │ ├── product-service.js
│ │ │ │ │ ├── product-translation-form.html
│ │ │ │ │ └── product-translation-form.js
│ │ │ │ ├── product-attribute
│ │ │ │ │ ├── product-attribute-form.html
│ │ │ │ │ ├── product-attribute-form.js
│ │ │ │ │ ├── product-attribute-list.html
│ │ │ │ │ ├── product-attribute-list.js
│ │ │ │ │ └── product-attribute-service.js
│ │ │ │ ├── product-attribute-group
│ │ │ │ │ ├── product-attribute-group-form.html
│ │ │ │ │ ├── product-attribute-group-form.js
│ │ │ │ │ ├── product-attribute-group-list.html
│ │ │ │ │ ├── product-attribute-group-list.js
│ │ │ │ │ └── product-attribute-group-service.js
│ │ │ │ ├── product-clone
│ │ │ │ │ ├── product-clone-form.html
│ │ │ │ │ ├── product-clone-form.js
│ │ │ │ │ └── product-clone-service.js
│ │ │ │ ├── product-option
│ │ │ │ │ ├── product-option-form.html
│ │ │ │ │ ├── product-option-form.js
│ │ │ │ │ ├── product-option-list.html
│ │ │ │ │ ├── product-option-list.js
│ │ │ │ │ └── product-option-service.js
│ │ │ │ ├── product-price
│ │ │ │ │ ├── product-price-form.html
│ │ │ │ │ ├── product-price-form.js
│ │ │ │ │ └── product-price-service.js
│ │ │ │ ├── product-template
│ │ │ │ │ ├── product-template-form.html
│ │ │ │ │ ├── product-template-form.js
│ │ │ │ │ ├── product-template-list.html
│ │ │ │ │ ├── product-template-list.js
│ │ │ │ │ └── product-template-service.js
│ │ │ │ ├── product-widget
│ │ │ │ │ ├── product-widget-form.html
│ │ │ │ │ ├── product-widget-form.js
│ │ │ │ │ └── product-widget-service.js
│ │ │ │ └── simple-product-widget
│ │ │ │ ├── simple-product-widget-form.html
│ │ │ │ ├── simple-product-widget-form.js
│ │ │ │ └── simple-product-widget-service.js
│ │ │ ├── product-detail.css
│ │ │ ├── product-detail.js
│ │ │ ├── product-filter.js
│ │ │ └── product-overview.js
│ │ ├── SimplCommerce.Module.Checkouts
│ │ │ ├── Areas
│ │ │ │ └── Checkouts
│ │ │ │ ├── Controllers
│ │ │ │ │ └── CheckoutController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── AddressFormVm.cs
│ │ │ │ │ ├── CartItemToCheckoutVm.cs
│ │ │ │ │ ├── CheckoutFormVm.cs
│ │ │ │ │ ├── CheckoutItemVm.cs
│ │ │ │ │ ├── CheckoutItemWithTaxVm.cs
│ │ │ │ │ ├── CheckoutTaxAndShippingPriceVm.cs
│ │ │ │ │ ├── CheckoutVm.cs
│ │ │ │ │ ├── DeliveryInformationVm.cs
│ │ │ │ │ ├── ShippingAddressVm.cs
│ │ │ │ │ └── TaxAndShippingPriceRequestVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Checkout
│ │ │ │ │ ├── Error.cshtml
│ │ │ │ │ ├── Shipping.cshtml
│ │ │ │ │ └── Success.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Models
│ │ │ │ ├── Checkout.cs
│ │ │ │ └── CheckoutItem.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── CheckoutService.cs
│ │ │ │ └── ICheckoutService.cs
│ │ │ ├── SimplCommerce.Module.Checkouts.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.Cms
│ │ │ ├── Areas
│ │ │ │ └── Cms
│ │ │ │ ├── Components
│ │ │ │ │ ├── CarouselWidgetViewComponent.cs
│ │ │ │ │ ├── MenuViewComponent.cs
│ │ │ │ │ └── SpaceBarWidgetViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CarouselWidgetApiController.cs
│ │ │ │ │ ├── HtmlWidgetApiController.cs
│ │ │ │ │ ├── MenuApiController.cs
│ │ │ │ │ ├── PageApiController.cs
│ │ │ │ │ ├── PageController.cs
│ │ │ │ │ ├── PageTranslationApiController.cs
│ │ │ │ │ └── SpaceBarWidgetApiContorller.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── CarouselWidgetForm.cs
│ │ │ │ │ ├── CarouselWidgetItemForm.cs
│ │ │ │ │ ├── CarouselWidgetViewComponentItemVm.cs
│ │ │ │ │ ├── CarouselWidgetViewComponentVm.cs
│ │ │ │ │ ├── HtmlWidgetForm.cs
│ │ │ │ │ ├── MenuForm.cs
│ │ │ │ │ ├── MenuItemForm.cs
│ │ │ │ │ ├── MenuItemVm.cs
│ │ │ │ │ ├── PageForm.cs
│ │ │ │ │ ├── PageTranslationForm.cs
│ │ │ │ │ ├── PageVm.cs
│ │ │ │ │ ├── SpaceBarWidgetComponentVm.cs
│ │ │ │ │ ├── SpaceBarWidgetForm.cs
│ │ │ │ │ └── SpaceBarWidgetSetting.cs
│ │ │ │ └── Views
│ │ │ │ ├── Page
│ │ │ │ │ └── PageDetail.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ ├── CarouselWidget
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ ├── Menu
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── SpaceBarWidget
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── CmsCustomModelBuilder.cs
│ │ │ ├── Events
│ │ │ │ └── EntityDeletingHandler.cs
│ │ │ ├── Models
│ │ │ │ ├── Menu.cs
│ │ │ │ ├── MenuItem.cs
│ │ │ │ └── Page.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── IPageService.cs
│ │ │ │ └── PageService.cs
│ │ │ ├── SimplCommerce.Module.Cms.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── carousel-widget
│ │ │ │ ├── carousel-widget-form.html
│ │ │ │ ├── carousel-widget-form.js
│ │ │ │ └── carousel-widget-service.js
│ │ │ ├── cms.module.js
│ │ │ ├── html-widget
│ │ │ │ ├── html-widget-form.html
│ │ │ │ ├── html-widget-form.js
│ │ │ │ └── html-widget-service.js
│ │ │ ├── menu
│ │ │ │ ├── menu-form-create.html
│ │ │ │ ├── menu-form-create.js
│ │ │ │ ├── menu-form.html
│ │ │ │ ├── menu-form.js
│ │ │ │ ├── menu-list.html
│ │ │ │ ├── menu-list.js
│ │ │ │ └── menu-service.js
│ │ │ ├── page
│ │ │ │ ├── page-form.html
│ │ │ │ ├── page-form.js
│ │ │ │ ├── page-list.html
│ │ │ │ ├── page-list.js
│ │ │ │ ├── page-service.js
│ │ │ │ ├── page-translation-form.html
│ │ │ │ └── page-translation-form.js
│ │ │ └── spacebar-widget
│ │ │ ├── spacebar-widget-form.html
│ │ │ ├── spacebar-widget-form.js
│ │ │ └── spacebar-widget-service.js
│ │ ├── SimplCommerce.Module.Comments
│ │ │ ├── Areas
│ │ │ │ └── Comments
│ │ │ │ ├── Components
│ │ │ │ │ └── CommentViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CommentApiController.cs
│ │ │ │ │ └── CommentController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── CommentForm.cs
│ │ │ │ │ ├── CommentItem.cs
│ │ │ │ │ └── CommentVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── Comment
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ ├── CommentModelBuilder.cs
│ │ │ │ ├── CommentRepository.cs
│ │ │ │ └── ICommentRepository.cs
│ │ │ ├── Models
│ │ │ │ ├── Comment.cs
│ │ │ │ ├── CommentListItemDto.cs
│ │ │ │ └── CommentStatus.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Comments.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── admin
│ │ │ │ ├── comment
│ │ │ │ │ ├── comment-list.html
│ │ │ │ │ ├── comment-list.js
│ │ │ │ │ └── comment-service.js
│ │ │ │ └── comments.module.js
│ │ │ ├── comment-service.js
│ │ │ ├── comment.css
│ │ │ └── comment.js
│ │ ├── SimplCommerce.Module.Contacts
│ │ │ ├── Areas
│ │ │ │ └── Contacts
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── ContactApiController.cs
│ │ │ │ │ ├── ContactAreaApiController.cs
│ │ │ │ │ ├── ContactAreaTranslationApiController.cs
│ │ │ │ │ └── ContactController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── CompanyInformation.cs
│ │ │ │ │ ├── ContactAreaForm.cs
│ │ │ │ │ ├── ContactAreaTranslationForm.cs
│ │ │ │ │ ├── ContactAreaVm.cs
│ │ │ │ │ ├── ContactForm.cs
│ │ │ │ │ └── ContactVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Contact
│ │ │ │ │ ├── Index.cshtml
│ │ │ │ │ └── SubmitContactResult.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── ContactCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── Contact.cs
│ │ │ │ └── ContactArea.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Contacts.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── admin
│ │ │ │ ├── contact-area
│ │ │ │ │ ├── contact-area-form.html
│ │ │ │ │ ├── contact-area-form.js
│ │ │ │ │ ├── contact-area-list.html
│ │ │ │ │ ├── contact-area-list.js
│ │ │ │ │ ├── contact-area-service.js
│ │ │ │ │ ├── contact-area-translation-form.html
│ │ │ │ │ └── contact-area-translation-form.js
│ │ │ │ ├── contacts
│ │ │ │ │ ├── contact-list.html
│ │ │ │ │ ├── contact-list.js
│ │ │ │ │ ├── contact-service.js
│ │ │ │ │ ├── contact.html
│ │ │ │ │ └── contact.js
│ │ │ │ └── contacts.module.js
│ │ │ └── init-google-map.js
│ │ ├── SimplCommerce.Module.Core
│ │ │ ├── Areas
│ │ │ │ └── Core
│ │ │ │ ├── Components
│ │ │ │ │ └── DefaultShippingAddressViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── AccountController.cs
│ │ │ │ │ ├── AppSettingApiController.cs
│ │ │ │ │ ├── CommonApiController.cs
│ │ │ │ │ ├── CountryApiController.cs
│ │ │ │ │ ├── CustomerGroupApiController.cs
│ │ │ │ │ ├── DashboardController.cs
│ │ │ │ │ ├── DistrictApiController.cs
│ │ │ │ │ ├── EntityApiController.cs
│ │ │ │ │ ├── EntityTypeApiController.cs
│ │ │ │ │ ├── HomeAdminController.cs
│ │ │ │ │ ├── HomeController.cs
│ │ │ │ │ ├── ManageController.cs
│ │ │ │ │ ├── RoleApiController.cs
│ │ │ │ │ ├── StateOrProvinceApiController.cs
│ │ │ │ │ ├── ThemeApiController.cs
│ │ │ │ │ ├── UserAddressController.cs
│ │ │ │ │ ├── UserApiController.cs
│ │ │ │ │ ├── WidgetApiController.cs
│ │ │ │ │ ├── WidgetInstanceApiController.cs
│ │ │ │ │ └── WidgetZoneApiController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── Account
│ │ │ │ │ │ ├── ExternalLoginConfirmationViewModel.cs
│ │ │ │ │ │ ├── ForgotPasswordViewModel.cs
│ │ │ │ │ │ ├── LoginViewModel.cs
│ │ │ │ │ │ ├── RegisterViewModel.cs
│ │ │ │ │ │ ├── ResetPasswordViewModel.cs
│ │ │ │ │ │ ├── SendCodeViewModel.cs
│ │ │ │ │ │ └── VerifyCodeViewModel.cs
│ │ │ │ │ ├── AppSettingVm.cs
│ │ │ │ │ ├── BreadcrumbViewModel.cs
│ │ │ │ │ ├── CountryForm.cs
│ │ │ │ │ ├── CustomerGroupForm.cs
│ │ │ │ │ ├── HomeViewModel.cs
│ │ │ │ │ ├── Manage
│ │ │ │ │ │ ├── AddPhoneNumberViewModel.cs
│ │ │ │ │ │ ├── ChangePasswordViewModel.cs
│ │ │ │ │ │ ├── ConfigureTwoFactorViewModel.cs
│ │ │ │ │ │ ├── DefaultAddressViewComponentVm.cs
│ │ │ │ │ │ ├── FactorViewModel.cs
│ │ │ │ │ │ ├── IndexViewModel.cs
│ │ │ │ │ │ ├── ManageLoginsViewModel.cs
│ │ │ │ │ │ ├── RemoveLoginViewModel.cs
│ │ │ │ │ │ ├── SetPasswordViewModel.cs
│ │ │ │ │ │ ├── UserInfoVm.cs
│ │ │ │ │ │ ├── UserSettingViewModel.cs
│ │ │ │ │ │ └── VerifyPhoneNumberViewModel.cs
│ │ │ │ │ ├── MediaViewModel.cs
│ │ │ │ │ ├── ProjectDetailsVm.cs
│ │ │ │ │ ├── ProjectItemVm.cs
│ │ │ │ │ ├── StateOrProvinceForm.cs
│ │ │ │ │ ├── ThemeListItem.cs
│ │ │ │ │ ├── UserAddressFormViewModel.cs
│ │ │ │ │ ├── UserAddressListItem.cs
│ │ │ │ │ ├── UserForm.cs
│ │ │ │ │ ├── UserSearchOption.cs
│ │ │ │ │ ├── WidgetFormBase.cs
│ │ │ │ │ └── WidgetInstanceViewModel.cs
│ │ │ │ └── Views
│ │ │ │ ├── Account
│ │ │ │ │ ├── AccessDenied.cshtml
│ │ │ │ │ ├── ConfirmEmail.cshtml
│ │ │ │ │ ├── ExternalLoginConfirmation.cshtml
│ │ │ │ │ ├── ExternalLoginFailure.cshtml
│ │ │ │ │ ├── ForgotPassword.cshtml
│ │ │ │ │ ├── ForgotPasswordConfirmation.cshtml
│ │ │ │ │ ├── Lockout.cshtml
│ │ │ │ │ ├── Login.cshtml
│ │ │ │ │ ├── Register.cshtml
│ │ │ │ │ ├── ResetPassword.cshtml
│ │ │ │ │ ├── ResetPasswordConfirmation.cshtml
│ │ │ │ │ ├── SendCode.cshtml
│ │ │ │ │ └── VerifyCode.cshtml
│ │ │ │ ├── Dashboard
│ │ │ │ │ └── HomeTemplate.cshtml
│ │ │ │ ├── EmailTemplate
│ │ │ │ │ └── AccountRegisteredConfirmationEmailModel.cshtml
│ │ │ │ ├── Home
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── HomeAdmin
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── Manage
│ │ │ │ │ ├── ChangePassword.cshtml
│ │ │ │ │ ├── Index.cshtml
│ │ │ │ │ ├── ManageLogins.cshtml
│ │ │ │ │ ├── SetPassword.cshtml
│ │ │ │ │ ├── UserInfo.cshtml
│ │ │ │ │ └── UserSettings.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ ├── Components
│ │ │ │ │ │ └── DefaultShippingAddress
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── _WidgetInstances.cshtml
│ │ │ │ ├── UserAddress
│ │ │ │ │ ├── Create.cshtml
│ │ │ │ │ ├── Edit.cshtml
│ │ │ │ │ ├── List.cshtml
│ │ │ │ │ └── _AddressForm.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ ├── CoreCustomModelBuilder.cs
│ │ │ │ ├── CoreSeedData.cs
│ │ │ │ ├── Repository.cs
│ │ │ │ ├── RepositoryWithTypedId.cs
│ │ │ │ └── SimplDbContext.cs
│ │ │ ├── Events
│ │ │ │ ├── EntityDeleting.cs
│ │ │ │ ├── EntityViewed.cs
│ │ │ │ ├── ReviewSummaryChanged.cs
│ │ │ │ └── UserSignedIn.cs
│ │ │ ├── Extensions
│ │ │ │ ├── EFConfigProvider.cs
│ │ │ │ ├── EFConfigSource.cs
│ │ │ │ ├── EFConfigurationDbContext.cs
│ │ │ │ ├── EFConfigurationProviderExtension.cs
│ │ │ │ ├── IWorkContext.cs
│ │ │ │ ├── LocalizedStringExtensions.cs
│ │ │ │ ├── Settings
│ │ │ │ │ ├── SettingDefinition.cs
│ │ │ │ │ ├── SettingDefinitionExtensions.cs
│ │ │ │ │ └── SettingDefinitionProvider.cs
│ │ │ │ ├── SimplRoleStore.cs
│ │ │ │ ├── SimplSignInManager.cs
│ │ │ │ ├── SimplUserStore.cs
│ │ │ │ ├── SlugRouteValueTransformer.cs
│ │ │ │ ├── TagHelpers
│ │ │ │ │ └── AppendVersionTagHelper.cs
│ │ │ │ └── WorkContext.cs
│ │ │ ├── Models
│ │ │ │ ├── Address.cs
│ │ │ │ ├── AddressType.cs
│ │ │ │ ├── AppSetting.cs
│ │ │ │ ├── Content.cs
│ │ │ │ ├── Country.cs
│ │ │ │ ├── CustomerGroup.cs
│ │ │ │ ├── CustomerGroupUser.cs
│ │ │ │ ├── District.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── EntityType.cs
│ │ │ │ ├── Media.cs
│ │ │ │ ├── MediaType.cs
│ │ │ │ ├── Role.cs
│ │ │ │ ├── SimplConstants.cs
│ │ │ │ ├── StateOrProvince.cs
│ │ │ │ ├── ThemeManifest.cs
│ │ │ │ ├── User.cs
│ │ │ │ ├── UserAddress.cs
│ │ │ │ ├── UserRole.cs
│ │ │ │ ├── Vendor.cs
│ │ │ │ ├── Widget.cs
│ │ │ │ ├── WidgetInstance.cs
│ │ │ │ ├── WidgetZone.cs
│ │ │ │ └── WidgetZoneIds.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── CurrencyService.cs
│ │ │ │ ├── EntityService.cs
│ │ │ │ ├── IContentLocalizationService.cs
│ │ │ │ ├── ICurrencyService.cs
│ │ │ │ ├── IEmailSender.cs
│ │ │ │ ├── IEntityService.cs
│ │ │ │ ├── IMediaService.cs
│ │ │ │ ├── IPdfConverter.cs
│ │ │ │ ├── ISettingService.cs
│ │ │ │ ├── ISmsSender.cs
│ │ │ │ ├── IStorageService.cs
│ │ │ │ ├── IThemeService.cs
│ │ │ │ ├── IWidgetInstanceService.cs
│ │ │ │ ├── MediaService.cs
│ │ │ │ ├── SettingService.cs
│ │ │ │ ├── SmsSender.cs
│ │ │ │ ├── ThemeService.cs
│ │ │ │ └── WidgetInstanceService.cs
│ │ │ ├── SimplCommerce.Module.Core.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── Logo_SimplCommerce.png
│ │ │ ├── admin
│ │ │ │ ├── admin-app-config.js
│ │ │ │ ├── admin-core.css
│ │ │ │ ├── common
│ │ │ │ │ ├── common.js
│ │ │ │ │ ├── exception.js
│ │ │ │ │ ├── logger.js
│ │ │ │ │ ├── simplUtil.js
│ │ │ │ │ ├── slugify.js
│ │ │ │ │ ├── st-date-range.html
│ │ │ │ │ ├── st-date-range.js
│ │ │ │ │ ├── summernote-service.js
│ │ │ │ │ └── translation-service.js
│ │ │ │ ├── configuration
│ │ │ │ │ ├── configuration-service.js
│ │ │ │ │ ├── configuration.html
│ │ │ │ │ └── configuration.js
│ │ │ │ ├── core.module.js
│ │ │ │ ├── countries
│ │ │ │ │ ├── country-form.html
│ │ │ │ │ ├── country-form.js
│ │ │ │ │ ├── country-list.html
│ │ │ │ │ ├── country-list.js
│ │ │ │ │ └── country-service.js
│ │ │ │ ├── customergroups
│ │ │ │ │ ├── customergroup-form.html
│ │ │ │ │ ├── customergroup-form.js
│ │ │ │ │ ├── customergroup-list.html
│ │ │ │ │ ├── customergroup-list.js
│ │ │ │ │ └── customergroup-service.js
│ │ │ │ ├── dashboard
│ │ │ │ │ └── dashboard.module.js
│ │ │ │ ├── stateprovince
│ │ │ │ │ ├── state-province-form.html
│ │ │ │ │ ├── state-province-form.js
│ │ │ │ │ ├── state-province-list.html
│ │ │ │ │ ├── state-province-list.js
│ │ │ │ │ └── state-province-service.js
│ │ │ │ ├── themes
│ │ │ │ │ ├── online-theme-list.html
│ │ │ │ │ ├── online-theme-list.js
│ │ │ │ │ ├── theme-details.html
│ │ │ │ │ ├── theme-details.js
│ │ │ │ │ ├── theme-list.html
│ │ │ │ │ ├── theme-list.js
│ │ │ │ │ └── theme-service.js
│ │ │ │ ├── user
│ │ │ │ │ ├── user-form.html
│ │ │ │ │ ├── user-form.js
│ │ │ │ │ ├── user-list.html
│ │ │ │ │ ├── user-list.js
│ │ │ │ │ └── user-service.js
│ │ │ │ └── widget
│ │ │ │ ├── widget-instance-list.html
│ │ │ │ ├── widget-instance-list.js
│ │ │ │ └── widget-service.js
│ │ │ ├── main.js
│ │ │ ├── site.css
│ │ │ ├── site.min.css
│ │ │ └── user-address.js
│ │ ├── SimplCommerce.Module.DinkToPdf
│ │ │ ├── DinkToPdfConverter.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.DinkToPdf.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.EmailSenderSendgrid
│ │ │ ├── EmailSender.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.EmailSenderSendgrid.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.EmailSenderSmtp
│ │ │ ├── Data
│ │ │ │ └── EmailSenderSmptCustomModelBuilder.cs
│ │ │ ├── EmailConfig.cs
│ │ │ ├── EmailSender.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.EmailSenderSmtp.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.HangfireJobs
│ │ │ ├── About.md
│ │ │ ├── Extensions
│ │ │ │ ├── BackgroundJobManagerExtensions.cs
│ │ │ │ ├── HangfireConfigureExtensions.cs
│ │ │ │ ├── HangfireJobsRegisterExtensions.cs
│ │ │ │ └── HangfireServiceCollectionExtensions.cs
│ │ │ ├── Internal
│ │ │ │ ├── BackgroundJobArgsHelper.cs
│ │ │ │ ├── BackgroundJobCollection.cs
│ │ │ │ ├── BackgroundJobDescriptor.cs
│ │ │ │ ├── HangfireConfigureOptions.cs
│ │ │ │ └── HangfireDashboardAuthorizationFilter.cs
│ │ │ ├── Models
│ │ │ │ ├── BackgroundJob.cs
│ │ │ │ ├── CommonCrons.cs
│ │ │ │ ├── IBackgroundJob.cs
│ │ │ │ └── ScheduledJob.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── BackgroundJobManager.cs
│ │ │ │ └── IBackgroundJobManager.cs
│ │ │ ├── SimplCommerce.Module.HangfireJobs.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.Inventory
│ │ │ ├── Areas
│ │ │ │ └── Inventory
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── StockApiController.cs
│ │ │ │ │ ├── WarehouseApiController.cs
│ │ │ │ │ └── WarehouseProductApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ ├── MangeWarehouseProductItemVm.cs
│ │ │ │ ├── StockVm.cs
│ │ │ │ └── WarehouseVm.cs
│ │ │ ├── Data
│ │ │ │ └── InventoryCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── Stock.cs
│ │ │ │ ├── StockHistory.cs
│ │ │ │ └── Warehouse.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── IStockService.cs
│ │ │ │ ├── StockService.cs
│ │ │ │ └── StockUpdateRequest.cs
│ │ │ ├── SimplCommerce.Module.Inventory.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── inventory.module.js
│ │ │ ├── stock
│ │ │ │ ├── stock-form.html
│ │ │ │ ├── stock-form.js
│ │ │ │ ├── stock-history.html
│ │ │ │ ├── stock-history.js
│ │ │ │ └── stock-service.js
│ │ │ └── warehouse
│ │ │ ├── manage-products-form.html
│ │ │ ├── manage-products-form.js
│ │ │ ├── warehouse-form.html
│ │ │ ├── warehouse-form.js
│ │ │ ├── warehouse-list.html
│ │ │ ├── warehouse-list.js
│ │ │ └── warehouse-service.js
│ │ ├── SimplCommerce.Module.Localization
│ │ │ ├── Areas
│ │ │ │ └── Localization
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── LocalizationApiController.cs
│ │ │ │ │ └── LocalizationController.cs
│ │ │ │ └── ViewModel
│ │ │ │ └── ResourceItemVm.cs
│ │ │ ├── Data
│ │ │ │ └── LocalizationCustomModelBuilder.cs
│ │ │ ├── EFStringLocalizer.cs
│ │ │ ├── EFStringLocalizerFactory.cs
│ │ │ ├── EFStringLocalizerOfT.cs
│ │ │ ├── EfRequestCultureProvider.cs
│ │ │ ├── Events
│ │ │ │ └── UserSignedInHandler.cs
│ │ │ ├── Extensions
│ │ │ │ ├── CultureInfoExtensions.cs
│ │ │ │ └── LocalizationServiceCollectionExtensions.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ └── ContentLocalizationService.cs
│ │ │ ├── SimplCommerce.Module.Localization.csproj
│ │ │ ├── TagHelpers
│ │ │ │ └── LanguageDirectionTagHelperComponent.cs
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── localization
│ │ │ │ ├── localization-form.html
│ │ │ │ ├── localization-form.js
│ │ │ │ └── localization-service.js
│ │ │ └── localization.module.js
│ │ ├── SimplCommerce.Module.News
│ │ │ ├── Areas
│ │ │ │ └── News
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── NewsCategoryApiController.cs
│ │ │ │ │ ├── NewsCategoryController.cs
│ │ │ │ │ ├── NewsItemApiController.cs
│ │ │ │ │ └── NewsItemController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── NewsCategoryForm.cs
│ │ │ │ │ ├── NewsCategoryVm.cs
│ │ │ │ │ ├── NewsItemForm.cs
│ │ │ │ │ ├── NewsItemThumbnail.cs
│ │ │ │ │ ├── NewsItemVm.cs
│ │ │ │ │ └── NewsVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── NewsCategory
│ │ │ │ │ └── NewsCategoryDetail.cshtml
│ │ │ │ ├── NewsItem
│ │ │ │ │ ├── NewsHome.cshtml
│ │ │ │ │ └── NewsItemDetail.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── _NewsThumbnail.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── NewsCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── NewsCategory.cs
│ │ │ │ ├── NewsItem.cs
│ │ │ │ └── NewsItemCategory.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── INewsCategoryService.cs
│ │ │ │ ├── INewsItemService.cs
│ │ │ │ ├── NewsCategoryService.cs
│ │ │ │ └── NewsItemService.cs
│ │ │ ├── SimplCommerce.Module.News.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── news-categories
│ │ │ │ ├── news-category-form.html
│ │ │ │ ├── news-category-form.js
│ │ │ │ ├── news-category-list.html
│ │ │ │ ├── news-category-list.js
│ │ │ │ └── news-category-service.js
│ │ │ ├── news-items
│ │ │ │ ├── news-item-form.html
│ │ │ │ ├── news-item-form.js
│ │ │ │ ├── news-item-list.html
│ │ │ │ ├── news-item-list.js
│ │ │ │ └── news-item-service.js
│ │ │ └── news.module.js
│ │ ├── SimplCommerce.Module.Notifications
│ │ │ ├── Areas
│ │ │ │ └── Notifications
│ │ │ │ ├── Components
│ │ │ │ │ └── TestRealTimeNotificationFormViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ └── NotificationsController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ └── TestNotificationVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Notifications
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── TestRealTimeNotificationForm
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ ├── INotificationRepository.cs
│ │ │ │ ├── NotificationRepository.cs
│ │ │ │ └── NotificationsCustomModelBuilder.cs
│ │ │ ├── Events
│ │ │ │ └── UserSignedInHandler.cs
│ │ │ ├── Helpers
│ │ │ │ └── EntityHelper.cs
│ │ │ ├── Jobs
│ │ │ │ ├── NotificationDistributionJob.cs
│ │ │ │ └── NotificationDistributionJobArgs.cs
│ │ │ ├── Models
│ │ │ │ ├── EntityIdentifier.cs
│ │ │ │ ├── MessageNotificationData.cs
│ │ │ │ ├── NotificationData.cs
│ │ │ │ ├── NotificationDefinition.cs
│ │ │ │ ├── NotificationDetail.cs
│ │ │ │ ├── NotificationDetailDto.cs
│ │ │ │ ├── NotificationDetailExtensions.cs
│ │ │ │ ├── NotificationScheme.cs
│ │ │ │ ├── NotificationSeverity.cs
│ │ │ │ ├── NotificationSubscription.cs
│ │ │ │ ├── NotificationSubscriptionDto.cs
│ │ │ │ ├── NotificationSubscriptionExtensions.cs
│ │ │ │ ├── UserNotification.cs
│ │ │ │ ├── UserNotificationDto.cs
│ │ │ │ ├── UserNotificationExtensions.cs
│ │ │ │ ├── UserNotificationState.cs
│ │ │ │ ├── UserNotificationWithNotificationDetail.cs
│ │ │ │ └── UserNotificationWithNotificationDetailExtensions.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── NotificationDefinitions.cs
│ │ │ ├── Notifiers
│ │ │ │ ├── ITestNotifier.cs
│ │ │ │ └── TestNotifier.cs
│ │ │ ├── Services
│ │ │ │ ├── INotificationDefinitionManager.cs
│ │ │ │ ├── INotificationDistributer.cs
│ │ │ │ ├── INotificationPublisher.cs
│ │ │ │ ├── INotificationSubscriptionManager.cs
│ │ │ │ ├── IRealTimeNotifier.cs
│ │ │ │ ├── IUserNotificationManager.cs
│ │ │ │ ├── NotificationDefinitionManager.cs
│ │ │ │ ├── NotificationDefinitionManagerExtensions.cs
│ │ │ │ ├── NotificationDistributer.cs
│ │ │ │ ├── NotificationExtensions.cs
│ │ │ │ ├── NotificationPublisher.cs
│ │ │ │ ├── NotificationSubscriptionManager.cs
│ │ │ │ ├── SignalRRealTimeNotifier.cs
│ │ │ │ └── UserNotificationManager.cs
│ │ │ ├── SettingDefinitions.cs
│ │ │ ├── SimplCommerce.Module.Notifications.csproj
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── notifications.signalr.js
│ │ ├── SimplCommerce.Module.Orders
│ │ │ ├── Areas
│ │ │ │ └── Orders
│ │ │ │ ├── Components
│ │ │ │ │ └── OrderSummaryViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CheckoutApiController.cs
│ │ │ │ │ ├── InvoiceApiController.cs
│ │ │ │ │ ├── OrderApiController.cs
│ │ │ │ │ ├── OrderController.cs
│ │ │ │ │ └── OrderHistoryApiController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── AddressFormVm.cs
│ │ │ │ │ ├── CartItemVm.cs
│ │ │ │ │ ├── OrderDetailVm.cs
│ │ │ │ │ ├── OrderExportVm.cs
│ │ │ │ │ ├── OrderHistoryListItem.cs
│ │ │ │ │ ├── OrderHistoryProductVm.cs
│ │ │ │ │ ├── OrderItemVm.cs
│ │ │ │ │ ├── OrderLineExportVm.cs
│ │ │ │ │ ├── OrderStatusForm.cs
│ │ │ │ │ └── OrderTaxAndShippingPriceVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── EmailTemplates
│ │ │ │ │ └── OrderEmailToCustomer.cshtml
│ │ │ │ ├── Order
│ │ │ │ │ ├── OrderDetails.cshtml
│ │ │ │ │ └── OrderHistoryList.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ ├── Components
│ │ │ │ │ │ └── OrderSummary
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── InvoicePdf.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── OrderCustomModelBuilder.cs
│ │ │ ├── Events
│ │ │ │ ├── AfterOrderCreated.cs
│ │ │ │ ├── AfterOrderCreatedSendEmailHanlder.cs
│ │ │ │ ├── OrderChanged.cs
│ │ │ │ ├── OrderChangedCreateOrderHistoryHandler.cs
│ │ │ │ ├── OrderCreated.cs
│ │ │ │ ├── OrderCreatedClearCartHandler.cs
│ │ │ │ ├── OrderCreatedCreateOrderHistoryHandler.cs
│ │ │ │ └── OrderDetailGot.cs
│ │ │ ├── Models
│ │ │ │ ├── Order.cs
│ │ │ │ ├── OrderAddress.cs
│ │ │ │ ├── OrderHistory.cs
│ │ │ │ ├── OrderItem.cs
│ │ │ │ └── OrderStatus.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── IOrderEmailService.cs
│ │ │ │ ├── IOrderService.cs
│ │ │ │ ├── OrderCancellationBackgroundService.cs
│ │ │ │ ├── OrderEmailService.cs
│ │ │ │ └── OrderService.cs
│ │ │ ├── SimplCommerce.Module.Orders.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── admin
│ │ │ │ ├── order
│ │ │ │ │ ├── order-create.html
│ │ │ │ │ ├── order-create.js
│ │ │ │ │ ├── order-detail.html
│ │ │ │ │ ├── order-detail.js
│ │ │ │ │ ├── order-list.html
│ │ │ │ │ ├── order-list.js
│ │ │ │ │ ├── order-service.js
│ │ │ │ │ ├── order-widget.directive.html
│ │ │ │ │ └── order-widget.directive.js
│ │ │ │ └── orders.module.js
│ │ │ └── checkout.js
│ │ ├── SimplCommerce.Module.PaymentBraintree
│ │ │ ├── Areas
│ │ │ │ └── PaymentBraintree
│ │ │ │ ├── Components
│ │ │ │ │ └── BraintreeLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── BraintreeApiController.cs
│ │ │ │ │ └── BraintreeController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── BraintreeCheckoutForm.cs
│ │ │ │ │ └── BraintreeConfigForm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── BraintreeLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentBraintreeCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── BraintreeConfiguration.cs
│ │ │ │ └── IBraintreeConfiguration.cs
│ │ │ ├── SimplCommerce.Module.PaymentBraintree.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── braintree
│ │ │ │ ├── braintree-config-form.html
│ │ │ │ ├── braintree-config-form.js
│ │ │ │ └── braintree-service.js
│ │ │ └── paymentbraintree.module.js
│ │ ├── SimplCommerce.Module.PaymentCashfree
│ │ │ ├── Areas
│ │ │ │ └── PaymentCashfree
│ │ │ │ ├── Components
│ │ │ │ │ └── CashfreeLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CashfreeApiController.cs
│ │ │ │ │ └── CashfreeController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── CashfreeCheckoutForm.cs
│ │ │ │ │ ├── CashfreeConfigForm.cs
│ │ │ │ │ └── CashfreeResponse.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── CashfreeLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentCashfreeCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.PaymentCashfree.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── cashfree
│ │ │ │ ├── cashfree-config-form.html
│ │ │ │ ├── cashfree-config-form.js
│ │ │ │ └── cashfree-service.js
│ │ │ └── paymentCashfree.module.js
│ │ ├── SimplCommerce.Module.PaymentCoD
│ │ │ ├── Areas
│ │ │ │ └── PaymentCoD
│ │ │ │ ├── Components
│ │ │ │ │ └── CoDLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CoDApiController.cs
│ │ │ │ │ └── CoDController.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── CoDLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentCoDCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── CoDSetting.cs
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.PaymentCoD.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── config
│ │ │ │ ├── cod-service.js
│ │ │ │ ├── config-form.html
│ │ │ │ └── config-form.js
│ │ │ └── paymentCoD.module.js
│ │ ├── SimplCommerce.Module.PaymentMomo
│ │ │ ├── Areas
│ │ │ │ └── PaymentMomo
│ │ │ │ ├── Components
│ │ │ │ │ └── MomoLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── MomoPaymentApiController.cs
│ │ │ │ │ └── MomoPaymentController.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── MomoLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentMomoCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── MomoSecurityHelper.cs
│ │ │ ├── SimplCommerce.Module.PaymentMomo.csproj
│ │ │ ├── ViewModels
│ │ │ │ ├── MomoCheckoutForm.cs
│ │ │ │ ├── MomoPaymentConfigForm.cs
│ │ │ │ ├── PaymentSubmitRequest.cs
│ │ │ │ ├── PaymentSubmitResponse.cs
│ │ │ │ ├── PaymentSubmitResult.cs
│ │ │ │ ├── StatusRequest.cs
│ │ │ │ └── StatusResponse.cs
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── momo
│ │ │ │ ├── momo-config-form.html
│ │ │ │ ├── momo-config-form.js
│ │ │ │ └── momo-service.js
│ │ │ └── paymentMomo.module.js
│ │ ├── SimplCommerce.Module.PaymentNganLuong
│ │ │ ├── Areas
│ │ │ │ └── PaymentNganLuong
│ │ │ │ ├── Components
│ │ │ │ │ └── NganLuongLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── NganLuongApiController.cs
│ │ │ │ │ └── NganLuongController.cs
│ │ │ │ └── Views
│ │ │ │ ├── NganLuong
│ │ │ │ │ └── PaymentMethods.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── NganLuongLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentNganLuongCustomerModelBuilder.cs
│ │ │ ├── ErrorMessages.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SecurityHelper.cs
│ │ │ ├── SimplCommerce.Module.PaymentNganLuong.csproj
│ │ │ ├── ViewModels
│ │ │ │ ├── NganLuongConfigForm.cs
│ │ │ │ ├── PaymentStatusRequest.cs
│ │ │ │ ├── PaymentStatusResponse.cs
│ │ │ │ ├── PaymentSubmitRequest.cs
│ │ │ │ ├── PaymentSubmitResponse.cs
│ │ │ │ └── PaymentSubmitReturn.cs
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── ngan-luong
│ │ │ │ ├── ngan-luong-config-form.html
│ │ │ │ ├── ngan-luong-config-form.js
│ │ │ │ └── ngan-luong-service.js
│ │ │ └── paymentNganLuong.module.js
│ │ ├── SimplCommerce.Module.PaymentPaypalExpress
│ │ │ ├── Areas
│ │ │ │ └── PaymentPaypalExpress
│ │ │ │ ├── Components
│ │ │ │ │ └── PaypalExpressLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── PaypalExpressApiController.cs
│ │ │ │ │ └── PaypalExpressController.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── PaypalExpressLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentPaypalExpressCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.PaymentPaypalExpress.csproj
│ │ │ ├── ViewModels
│ │ │ │ ├── ExperienceProfile.cs
│ │ │ │ ├── PaymentCreateRequest.cs
│ │ │ │ ├── PaymentExecuteRequest.cs
│ │ │ │ ├── PaymentExecuteVm.cs
│ │ │ │ ├── PaypalExpressCheckoutForm.cs
│ │ │ │ └── PaypalExpressConfigForm.cs
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── config
│ │ │ │ ├── config-form.html
│ │ │ │ ├── config-form.js
│ │ │ │ └── paypalExpress-service.js
│ │ │ └── paypalExpress.module.js
│ │ ├── SimplCommerce.Module.PaymentStripe
│ │ │ ├── Areas
│ │ │ │ └── PaymentStripe
│ │ │ │ ├── Components
│ │ │ │ │ └── StripeLandingViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── StripeApiController.cs
│ │ │ │ │ └── StripeController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── StripeCheckoutForm.cs
│ │ │ │ │ └── StripeConfigForm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── StripeLanding
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentStripeCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PaymentProviderHelper.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.PaymentStripe.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── paymentStripe.module.js
│ │ │ └── stripe
│ │ │ ├── stripe-config-form.html
│ │ │ ├── stripe-config-form.js
│ │ │ └── stripe-service.js
│ │ ├── SimplCommerce.Module.Payments
│ │ │ ├── Areas
│ │ │ │ └── Payments
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CheckoutController.cs
│ │ │ │ │ ├── PaymentApiController.cs
│ │ │ │ │ └── PaymentProviderApiController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── CheckoutPaymentForm.cs
│ │ │ │ │ └── PaymentProviderVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Checkout
│ │ │ │ │ └── Payment.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ └── PaymentsCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── Payment.cs
│ │ │ │ ├── PaymentProvider.cs
│ │ │ │ └── PaymentStatus.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Payments.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── payment
│ │ │ │ ├── payment-list-by-order.directive.html
│ │ │ │ ├── payment-list-by-order.directive.js
│ │ │ │ └── payment-service.js
│ │ │ ├── payments.module.js
│ │ │ └── provider
│ │ │ ├── payment-provider-list.html
│ │ │ ├── payment-provider-list.js
│ │ │ └── payment-provider-service.js
│ │ ├── SimplCommerce.Module.Pricing
│ │ │ ├── Areas
│ │ │ │ └── Pricing
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CartRuleApiController.cs
│ │ │ │ │ └── CartRuleUsageApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ ├── CartRuleForm.cs
│ │ │ │ └── CartRuleProductVm.cs
│ │ │ ├── Data
│ │ │ │ └── PricingCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── CartRule.cs
│ │ │ │ ├── CartRuleCategory.cs
│ │ │ │ ├── CartRuleCustomerGroup.cs
│ │ │ │ ├── CartRuleProduct.cs
│ │ │ │ ├── CartRuleUsage.cs
│ │ │ │ ├── CatalogRule.cs
│ │ │ │ ├── CatalogRuleCustomerGroup.cs
│ │ │ │ └── Coupon.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── CartInfoForCoupon.cs
│ │ │ │ ├── CartItemForCoupon.cs
│ │ │ │ ├── CouponService.cs
│ │ │ │ ├── CouponValidationResult.cs
│ │ │ │ ├── DiscountableProduct.cs
│ │ │ │ ├── DiscountedProduct.cs
│ │ │ │ └── ICouponService.cs
│ │ │ ├── SimplCommerce.Module.Pricing.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── cart-rule
│ │ │ │ ├── cart-rule-form.html
│ │ │ │ ├── cart-rule-form.js
│ │ │ │ ├── cart-rule-list.html
│ │ │ │ ├── cart-rule-list.js
│ │ │ │ └── cart-rule-service.js
│ │ │ ├── cart-rule-usage
│ │ │ │ ├── cart-rule-usage-list.html
│ │ │ │ ├── cart-rule-usage-list.js
│ │ │ │ └── cart-rule-usage-service.js
│ │ │ └── pricing.module.js
│ │ ├── SimplCommerce.Module.ProductComparison
│ │ │ ├── Areas
│ │ │ │ └── ProductComparison
│ │ │ │ ├── Controllers
│ │ │ │ │ └── ComparingProductController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── AddToComparisonModel.cs
│ │ │ │ │ ├── AddToComparisonResult.cs
│ │ │ │ │ ├── AttributeValueVm.cs
│ │ │ │ │ ├── AttributeVm.cs
│ │ │ │ │ ├── ComparingProductVm.cs
│ │ │ │ │ └── ProductComparisonVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── ComparingProduct
│ │ │ │ │ ├── AddToComparisonResult.cshtml
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Events
│ │ │ │ └── UserSignedInHandler.cs
│ │ │ ├── Models
│ │ │ │ └── ComparingProduct.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── ComparingProductService.cs
│ │ │ │ ├── IComparingProductService.cs
│ │ │ │ └── TooManyComparingProductException.cs
│ │ │ ├── SimplCommerce.Module.ProductComparison.csproj
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── product-comparison.js
│ │ ├── SimplCommerce.Module.ProductRecentlyViewed
│ │ │ ├── Areas
│ │ │ │ └── ProductRecentlyViewed
│ │ │ │ ├── Components
│ │ │ │ │ ├── ProductRecentlyViewedViewComponent.cs
│ │ │ │ │ └── RecentlyViewedWidgetViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ └── RecentlyViewedWidgetController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── RecentlyViewedWidgetForm.cs
│ │ │ │ │ └── RecentlyViewedWidgetViewComponentVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ ├── ProductRecentlyViewed
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── RecentlyViewedWidget
│ │ │ │ │ └── Default.cshtml
│ │ │ │ └── _ViewImports.cshtml
│ │ │ ├── Data
│ │ │ │ ├── IRecentlyViewedProductRepository.cs
│ │ │ │ ├── ProductRecentlyViewedCustomModelBuilder.cs
│ │ │ │ └── RecentlyViewedProductRepository.cs
│ │ │ ├── Events
│ │ │ │ └── EntityViewedHandler.cs
│ │ │ ├── Models
│ │ │ │ └── RecentlyViewedProduct.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.ProductRecentlyViewed.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── productrecentlyviewed.module.js
│ │ │ └── recently-viewed-widget
│ │ │ ├── recently-viewed-widget-form.html
│ │ │ ├── recently-viewed-widget-form.js
│ │ │ └── recently-viewed-widget-service.js
│ │ ├── SimplCommerce.Module.Reviews
│ │ │ ├── Areas
│ │ │ │ └── Reviews
│ │ │ │ ├── Components
│ │ │ │ │ └── ReviewViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── ReplyApiController.cs
│ │ │ │ │ ├── ReplyController.cs
│ │ │ │ │ ├── ReviewApiController.cs
│ │ │ │ │ └── ReviewController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── Reply.cs
│ │ │ │ │ ├── ReplyForm.cs
│ │ │ │ │ ├── ReviewForm.cs
│ │ │ │ │ ├── ReviewItem.cs
│ │ │ │ │ └── ReviewVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Reply
│ │ │ │ │ ├── _ReplyForm.cshtml
│ │ │ │ │ └── _ReplyFormSuccess.cshtml
│ │ │ │ ├── Review
│ │ │ │ │ ├── List.cshtml
│ │ │ │ │ ├── _ReviewForm.cshtml
│ │ │ │ │ └── _ReviewFormSuccess.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── Review
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Data
│ │ │ │ ├── IReplyRepository.cs
│ │ │ │ ├── IReviewRepository.cs
│ │ │ │ ├── ReplyRepository.cs
│ │ │ │ └── ReviewRepository.cs
│ │ │ ├── Models
│ │ │ │ ├── Reply.cs
│ │ │ │ ├── ReplyListItemDto.cs
│ │ │ │ ├── ReplyStatus.cs
│ │ │ │ ├── Review.cs
│ │ │ │ ├── ReviewListItemDto.cs
│ │ │ │ └── ReviewStatus.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Reviews.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── admin
│ │ │ │ ├── review
│ │ │ │ │ ├── review-list.html
│ │ │ │ │ ├── review-list.js
│ │ │ │ │ ├── review-reply-list.html
│ │ │ │ │ ├── review-reply-list.js
│ │ │ │ │ ├── review-reply-service.js
│ │ │ │ │ ├── review-reply-widget.directive.html
│ │ │ │ │ ├── review-reply-widget.directive.js
│ │ │ │ │ ├── review-service.js
│ │ │ │ │ ├── review-widget.directive.html
│ │ │ │ │ └── review-widget.directive.js
│ │ │ │ └── reviews.module.js
│ │ │ ├── list.css
│ │ │ └── list.js
│ │ ├── SimplCommerce.Module.SampleData
│ │ │ ├── Areas
│ │ │ │ └── SampleData
│ │ │ │ ├── Components
│ │ │ │ │ └── SampleDataFormViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ └── SampleDataController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ └── SampleDataOption.cs
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── SampleDataForm
│ │ │ │ │ └── Default.cshtml
│ │ │ │ └── _ViewImports.cshtml
│ │ │ ├── Data
│ │ │ │ ├── ISqlRepository.cs
│ │ │ │ └── SqlRepository.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SampleContent
│ │ │ │ ├── Fashion
│ │ │ │ │ ├── Images
│ │ │ │ │ │ ├── 0089c72c-2fbe-48c3-a33f-718ae1eafd8b.jpg
│ │ │ │ │ │ ├── 0199b7af-4d14-4858-a902-62ca8c5e9b6d.jpg
│ │ │ │ │ │ ├── 057afd18-8973-4078-9fd2-7eb0b52d8e72.jpg
│ │ │ │ │ │ ├── 117ed074-628a-4db7-abbb-4a335adb3504.jpg
│ │ │ │ │ │ ├── 1201ba32-984a-48eb-b86a-23d4c8f76d5b.jpg
│ │ │ │ │ │ ├── 1761ffd9-2c53-4a6b-856f-e2f4039d0247.jpg
│ │ │ │ │ │ ├── 1a79b958-50bc-48d8-b3e5-826222949d28.jpg
│ │ │ │ │ │ ├── 1aead9b6-73a8-45c1-a463-7655e9a9b478.jpg
│ │ │ │ │ │ ├── 1b896b5e-f6bf-41ca-89ee-025c6be9e08c.jpg
│ │ │ │ │ │ ├── 1d9d5101-7e0b-4c29-88fe-e54891647672.jpg
│ │ │ │ │ │ ├── 2db2ffbb-46d5-4f3c-8dc0-614e83162a1c.jpg
│ │ │ │ │ │ ├── 2f856ed8-323e-4c26-99d1-cd4ec07f9979.jpg
│ │ │ │ │ │ ├── 37dc2d94-dbac-4112-afbc-2fc88ddca753.jpg
│ │ │ │ │ │ ├── 461a2564-b657-46bb-bcb5-f7deaeb2a0a9.jpg
│ │ │ │ │ │ ├── 4d24a1fd-a362-47e4-9060-011d415398b9.jpg
│ │ │ │ │ │ ├── 532fc844-2c11-494e-a68b-af0be2b9a87f.jpg
│ │ │ │ │ │ ├── 5cf020c2-72b5-407d-836a-ef1a316b741c.jpg
│ │ │ │ │ │ ├── 74552a46-4309-43e1-ad4e-79cd9e778722.jpg
│ │ │ │ │ │ ├── 78f1840e-7a50-49de-9dad-9127ec290dfd.jpg
│ │ │ │ │ │ ├── 83c21bb9-2f0d-446a-bb0c-3b19e6d922aa.jpg
│ │ │ │ │ │ ├── 88604574-f0a3-4982-9b0d-f8a7558dd3ba.jpg
│ │ │ │ │ │ ├── 911207ad-5b45-423f-9575-2185c85261c0.jpg
│ │ │ │ │ │ ├── a5904343-189d-469b-a93b-d553c109b781.jpg
│ │ │ │ │ │ ├── aa5f06ca-9aa9-42b2-a1bc-161d6cf3f174.jpg
│ │ │ │ │ │ ├── b94d02b8-6d3a-4919-b144-c121387a272d.jpg
│ │ │ │ │ │ ├── bc68637c-420f-4951-9130-b9fca36484e6.jpg
│ │ │ │ │ │ ├── bf16c55d-747e-4238-b444-06c3fe0463b2.jpg
│ │ │ │ │ │ ├── bf6461d5-0a9b-4a19-9516-5ca3b5b9da9e.jpg
│ │ │ │ │ │ ├── c27ee7c7-deb3-4697-a6b6-3358d72b556f.jpg
│ │ │ │ │ │ ├── c8756541-d192-48e2-b822-2bf616fb876e.jpg
│ │ │ │ │ │ ├── daa3af7c-452c-4c0f-9c61-aeccf001e825.jpg
│ │ │ │ │ │ ├── dd14f5e8-2e76-4f60-9f58-19652dcb80c5.jpg
│ │ │ │ │ │ ├── de4bdb93-ab9d-4515-b19b-bb55aa4703b3.jpg
│ │ │ │ │ │ ├── df3590c2-a6a0-4813-96db-4a07e6c7f460.jpg
│ │ │ │ │ │ ├── e0a99874-20a8-43b8-9199-b109bb2c3ae5.jpg
│ │ │ │ │ │ ├── ee4b30bf-fd13-47a7-b893-0e6e6b1aed05.jpg
│ │ │ │ │ │ ├── fb26a4f2-0a36-41dd-b0e8-a6c0554d31f8.jpg
│ │ │ │ │ │ └── fd623151-fc8a-464b-8c19-b1350d785bce.jpg
│ │ │ │ │ ├── ResetToSampleData.sql
│ │ │ │ │ ├── ResetToSampleData_MySql.sql
│ │ │ │ │ ├── ResetToSampleData_Postgres.sql
│ │ │ │ │ └── ResetToSampleData_SQLite.sql
│ │ │ │ └── Phones
│ │ │ │ ├── Images
│ │ │ │ │ ├── 25d3da45-b57b-40b6-8f41-2fc5170cb6b7.jpg
│ │ │ │ │ ├── 282e5cd3-b664-43dc-ba06-d7e91721c560.jpg
│ │ │ │ │ ├── 284b77c8-2ba8-43e1-826d-7c79c5cf4489.jpg
│ │ │ │ │ ├── 3a3f587c-9c70-4e68-b480-20829a9f3e95.jpg
│ │ │ │ │ ├── 4495b930-a901-44e2-9275-935f7e8ec53c.jpg
│ │ │ │ │ ├── 5887a479-bb96-436f-8414-fa188cdc2aac.jpg
│ │ │ │ │ ├── 68c7ff8f-014e-46c8-8daa-f35c646cc10a.jpg
│ │ │ │ │ ├── 77f5c8cd-2052-4f4c-ac49-70cda3e2eb3c.jpg
│ │ │ │ │ ├── 7d868097-58a5-43f8-a882-6d7872345fe7.jpg
│ │ │ │ │ ├── 7da07700-9a17-498b-ba58-526559343878.jpg
│ │ │ │ │ ├── 81b606ea-0bb0-4cea-a9d7-6406175df9bb.jpg
│ │ │ │ │ ├── 89374e88-b14c-4d38-b5cd-eacdc5ce3015.jpg
│ │ │ │ │ ├── 9874f0f5-46dc-495d-8c61-2c515577aa05.jpg
│ │ │ │ │ ├── a88b4a09-5824-4398-ac08-101d9061f927.jpg
│ │ │ │ │ ├── bb1243c9-63d5-4518-bbd5-cb3e35ade294.jpg
│ │ │ │ │ ├── bffb6f2c-8a3f-4fdd-817d-09a9f18cd190.jpg
│ │ │ │ │ ├── c015d99d-6c3b-4337-9ba7-26822d75a8e2.jpg
│ │ │ │ │ ├── d013921e-5f11-4472-b5ff-7f78d5987a69.jpg
│ │ │ │ │ ├── d539b558-15ea-4317-9a5b-62e4db9a45f5.jpg
│ │ │ │ │ ├── d74fd909-6fe0-4bc3-bf61-86d12dc98a2e.jpg
│ │ │ │ │ ├── e32c3caa-f7bc-4a3c-b970-f62c503b85bc.jpg
│ │ │ │ │ ├── e543ed8e-5feb-4a39-8860-51d94a00ee31.jpg
│ │ │ │ │ ├── ea0af866-a650-4909-877d-00eabbf3d8fd.jpg
│ │ │ │ │ ├── f9a76a94-6e1a-4489-bf7d-3dc6a68a0785.jpg
│ │ │ │ │ ├── fdfd1daf-ec7a-4c6e-83dd-a862eae735db.jpg
│ │ │ │ │ ├── fefe68b9-aee8-4e7d-a49a-17f805555591.jpg
│ │ │ │ │ └── ffc255b3-07c8-4ee5-94e9-d472c6af3f07.jpg
│ │ │ │ ├── ResetToSampleData.sql
│ │ │ │ ├── ResetToSampleData_MySql.sql
│ │ │ │ ├── ResetToSampleData_Postgres.sql
│ │ │ │ └── ResetToSampleData_SQLite.sql
│ │ │ ├── Services
│ │ │ │ ├── ISampleDataService.cs
│ │ │ │ └── SampleDataService.cs
│ │ │ ├── SimplCommerce.Module.SampleData.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.Search
│ │ │ ├── Areas
│ │ │ │ └── Search
│ │ │ │ ├── Components
│ │ │ │ │ └── SearchFormViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── SearchApiController.cs
│ │ │ │ │ └── SearchController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── SearchForm.cs
│ │ │ │ │ └── SearchResult.cs
│ │ │ │ └── Views
│ │ │ │ ├── Search
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── SearchForm
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Models
│ │ │ │ └── Query.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Search.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── most-search-keywords.directive.html
│ │ │ ├── most-search-keywords.directive.js
│ │ │ ├── search-service.js
│ │ │ └── search.module.js
│ │ ├── SimplCommerce.Module.Shipments
│ │ │ ├── Areas
│ │ │ │ └── Shipments
│ │ │ │ ├── Controllers
│ │ │ │ │ └── ShipmentApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ └── ShipmentForm.cs
│ │ │ ├── Data
│ │ │ │ └── ShipmentCustomModelBuilder.cs
│ │ │ ├── Events
│ │ │ │ └── OrderDetailGotHandler.cs
│ │ │ ├── Models
│ │ │ │ ├── Shipment.cs
│ │ │ │ ├── ShipmentItem.cs
│ │ │ │ └── ShipmentStatus.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── IShipmentService.cs
│ │ │ │ ├── ShipmentItemVm.cs
│ │ │ │ └── ShipmentService.cs
│ │ │ ├── SimplCommerce.Module.Shipments.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── shipment
│ │ │ │ ├── shipment-details.html
│ │ │ │ ├── shipment-details.js
│ │ │ │ ├── shipment-form.html
│ │ │ │ ├── shipment-form.js
│ │ │ │ ├── shipment-list-by-order.directive.html
│ │ │ │ ├── shipment-list-by-order.directive.js
│ │ │ │ ├── shipment-list.html
│ │ │ │ ├── shipment-list.js
│ │ │ │ └── shipment-service.js
│ │ │ └── shipment.module.js
│ │ ├── SimplCommerce.Module.Shipping
│ │ │ ├── Areas
│ │ │ │ └── Shipping
│ │ │ │ ├── Controllers
│ │ │ │ │ └── ShippingProviderApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ └── ShippingAddressVm.cs
│ │ │ ├── Data
│ │ │ │ └── ShippingCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── ShippingProvider.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.Shipping.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── provider
│ │ │ │ ├── shipping-provider-list.html
│ │ │ │ ├── shipping-provider-list.js
│ │ │ │ └── shipping-provider-service.js
│ │ │ └── shipping.module.js
│ │ ├── SimplCommerce.Module.ShippingFree
│ │ │ ├── Data
│ │ │ │ └── ShippingFreeCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── FreeShippingSetting.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ └── FreeShippingServiceProvider.cs
│ │ │ ├── SimplCommerce.Module.ShippingFree.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.ShippingPrices
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── GetShippingPriceRequest.cs
│ │ │ │ ├── GetShippingPriceResponse.cs
│ │ │ │ ├── IShippingPriceService.cs
│ │ │ │ ├── IShippingPriceServiceProvider.cs
│ │ │ │ ├── ShippingItem.cs
│ │ │ │ ├── ShippingPrice.cs
│ │ │ │ └── ShippingPriceService.cs
│ │ │ ├── SimplCommerce.Module.ShippingPrices.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.ShippingTableRate
│ │ │ ├── Areas
│ │ │ │ └── ShippingTableRate
│ │ │ │ ├── Controllers
│ │ │ │ │ └── PriceAndDestinationApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ └── PriceAndDestinationForm.cs
│ │ │ ├── Data
│ │ │ │ └── ShippingTableRateCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ └── PriceAndDestination.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ └── TableRateShippingServiceProvider.cs
│ │ │ ├── SimplCommerce.Module.ShippingTableRate.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── shipping-tablerate.module.js
│ │ │ └── tablerate
│ │ │ ├── shipping-tablerate-form.html
│ │ │ ├── shipping-tablerate-form.js
│ │ │ └── shipping-tablerate-service.js
│ │ ├── SimplCommerce.Module.ShoppingCart
│ │ │ ├── Areas
│ │ │ │ └── ShoppingCart
│ │ │ │ ├── Components
│ │ │ │ │ └── CartBadgeViewComponent.cs
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── CartApiController.cs
│ │ │ │ │ └── CartController.cs
│ │ │ │ ├── ViewModels
│ │ │ │ │ ├── AddToCartModel.cs
│ │ │ │ │ ├── AddToCartResultVm.cs
│ │ │ │ │ ├── ApplyCouponForm.cs
│ │ │ │ │ ├── CartItemVm.cs
│ │ │ │ │ ├── CartQuantityUpdate.cs
│ │ │ │ │ ├── CartVm.cs
│ │ │ │ │ ├── ProductVariationOption.cs
│ │ │ │ │ └── ProductVariationOptionVm.cs
│ │ │ │ └── Views
│ │ │ │ ├── Cart
│ │ │ │ │ ├── AddToCartResult.cshtml
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── CartBadge
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ └── _ViewStart.cshtml
│ │ │ ├── Events
│ │ │ │ └── UserSignedInHandler.cs
│ │ │ ├── Models
│ │ │ │ └── CartItem.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── AddToCartResult.cs
│ │ │ │ ├── CartService.cs
│ │ │ │ └── ICartService.cs
│ │ │ ├── SimplCommerce.Module.ShoppingCart.csproj
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ ├── add-to-cart.js
│ │ │ ├── shoppingcart-list.js
│ │ │ └── shoppingcart-service.js
│ │ ├── SimplCommerce.Module.SignalR
│ │ │ ├── Hubs
│ │ │ │ ├── CommonHub.cs
│ │ │ │ ├── HubBase.cs
│ │ │ │ └── OnlineClientHubBase.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── RealTime
│ │ │ │ ├── IOnlineClient.cs
│ │ │ │ ├── IOnlineClientManager.cs
│ │ │ │ ├── OnlineClient.cs
│ │ │ │ ├── OnlineClientEventArgs.cs
│ │ │ │ ├── OnlineClientManager.cs
│ │ │ │ └── OnlineUserEventArgs.cs
│ │ │ ├── SimplCommerce.Module.SignalR.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.StorageAmazonS3
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── S3StorageService.cs
│ │ │ ├── SimplCommerce.Module.StorageAmazonS3.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.StorageAzureBlob
│ │ │ ├── AzureBlobStorageService.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.StorageAzureBlob.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.StorageLocal
│ │ │ ├── LocalStorageService.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── SimplCommerce.Module.StorageLocal.csproj
│ │ │ └── module.json
│ │ ├── SimplCommerce.Module.Tax
│ │ │ ├── Areas
│ │ │ │ └── Tax
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── TaxClassApiController.cs
│ │ │ │ │ └── TaxRateApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ ├── TaxClassForm.cs
│ │ │ │ ├── TaxRateForm.cs
│ │ │ │ ├── TaxRateImport.cs
│ │ │ │ └── TaxRateImportForm.cs
│ │ │ ├── Data
│ │ │ │ └── TaxCustomModelBuilder.cs
│ │ │ ├── Models
│ │ │ │ ├── TaxClass.cs
│ │ │ │ └── TaxRate.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── ITaxService.cs
│ │ │ │ └── TaxService.cs
│ │ │ ├── SimplCommerce.Module.Tax.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── tax-class
│ │ │ │ ├── tax-class-form.html
│ │ │ │ ├── tax-class-form.js
│ │ │ │ ├── tax-class-list.html
│ │ │ │ ├── tax-class-list.js
│ │ │ │ └── tax-class-service.js
│ │ │ ├── tax-rate
│ │ │ │ ├── tax-rate-form.html
│ │ │ │ ├── tax-rate-form.js
│ │ │ │ ├── tax-rate-import.html
│ │ │ │ ├── tax-rate-import.js
│ │ │ │ ├── tax-rate-list.html
│ │ │ │ ├── tax-rate-list.js
│ │ │ │ └── tax-rate-service.js
│ │ │ └── tax.module.js
│ │ ├── SimplCommerce.Module.Vendors
│ │ │ ├── Areas
│ │ │ │ └── Vendors
│ │ │ │ ├── Controllers
│ │ │ │ │ └── VendorApiController.cs
│ │ │ │ └── ViewModels
│ │ │ │ ├── VendorForm.cs
│ │ │ │ └── VendorManager.cs
│ │ │ ├── ModuleInitializer.cs
│ │ │ ├── Services
│ │ │ │ ├── IVendorService.cs
│ │ │ │ └── VendorService.cs
│ │ │ ├── SimplCommerce.Module.Vendors.csproj
│ │ │ ├── bundleconfig.json
│ │ │ ├── module.json
│ │ │ └── wwwroot
│ │ │ └── admin
│ │ │ ├── vendors
│ │ │ │ ├── vendor-form.html
│ │ │ │ ├── vendor-form.js
│ │ │ │ ├── vendor-list.html
│ │ │ │ ├── vendor-list.js
│ │ │ │ └── vendor-service.js
│ │ │ └── vendors.module.js
│ │ └── SimplCommerce.Module.WishList
│ │ ├── Areas
│ │ │ └── WishList
│ │ │ ├── Controllers
│ │ │ │ └── WishListController.cs
│ │ │ ├── ViewModels
│ │ │ │ ├── AddToWishList.cs
│ │ │ │ ├── AddToWishListResult.cs
│ │ │ │ ├── ShareWishListForm.cs
│ │ │ │ ├── UpdateWishListItem.cs
│ │ │ │ ├── WishListItemVm.cs
│ │ │ │ └── WishListVm.cs
│ │ │ └── Views
│ │ │ ├── WishList
│ │ │ │ ├── AddToWishListResult.cshtml
│ │ │ │ ├── PrivateList.cshtml
│ │ │ │ ├── PublicList.cshtml
│ │ │ │ ├── Share.cshtml
│ │ │ │ └── UpdateItemResult.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ ├── Models
│ │ │ ├── WishList.cs
│ │ │ └── WishListItem.cs
│ │ ├── ModuleInitializer.cs
│ │ ├── Services
│ │ │ ├── IWishListService.cs
│ │ │ └── WishListService.cs
│ │ ├── SimplCommerce.Module.WishList.csproj
│ │ ├── module.json
│ │ └── wwwroot
│ │ ├── private-list.css
│ │ ├── public-list.css
│ │ └── wishlist.js
│ ├── SimplCommerce.Infrastructure
│ │ ├── Data
│ │ │ ├── ICustomModelBuilder.cs
│ │ │ ├── IRepository.cs
│ │ │ └── IRepositoryWithTypedId.cs
│ │ ├── Extensions
│ │ │ ├── DictionaryExtensions.cs
│ │ │ ├── HttpClientExtensions.cs
│ │ │ ├── JsonExtensions.cs
│ │ │ └── QueryableExtensions.cs
│ │ ├── GlobalConfiguration.cs
│ │ ├── Helpers
│ │ │ ├── CsvConverter.cs
│ │ │ ├── CurrencyHelper.cs
│ │ │ ├── EnumHelper.cs
│ │ │ ├── ReflectionHelper.cs
│ │ │ ├── StringHelper.cs
│ │ │ └── TypeHelper.cs
│ │ ├── Localization
│ │ │ ├── Culture.cs
│ │ │ ├── LanguageDirection.cs
│ │ │ ├── LocalizedContentProperty.cs
│ │ │ └── Resource.cs
│ │ ├── Models
│ │ │ ├── EntityBase.cs
│ │ │ ├── EntityBaseWithTypedId.cs
│ │ │ ├── ExtendableObjectExtensions.cs
│ │ │ ├── IEntityWithTypedId.cs
│ │ │ ├── IExtendableObject.cs
│ │ │ └── ValidatableObject.cs
│ │ ├── Modules
│ │ │ ├── IModuleConfigurationManager.cs
│ │ │ ├── IModuleInitializer.cs
│ │ │ ├── MissingModuleManifestException.cs
│ │ │ ├── ModuleConfigurationManager.cs
│ │ │ └── ModuleInfo.cs
│ │ ├── Result.cs
│ │ ├── ResultOfT.cs
│ │ ├── SimplCommerce.Infrastructure.csproj
│ │ ├── Tasks
│ │ │ └── Scheduling
│ │ │ ├── IScheduledTask.cs
│ │ │ ├── SchedulerBackgroundService.cs
│ │ │ ├── SchedulerTaskWrapper.cs
│ │ │ └── SchedulerTasksExtensions.cs
│ │ ├── ValidationException.cs
│ │ └── Web
│ │ ├── CookieOnlyAutoValidateAntiforgeryTokenAuthorizationFilter.cs
│ │ ├── HttpRequestExtentions.cs
│ │ ├── IRazorViewRenderer.cs
│ │ ├── ModelBinders
│ │ │ ├── InvariantDecimalModelBinder.cs
│ │ │ └── InvariantDecimalModelBinderProvider.cs
│ │ ├── RazorViewToStringRenderer.cs
│ │ ├── SmartTable
│ │ │ ├── Pagination.cs
│ │ │ ├── Search.cs
│ │ │ ├── SmartTableExtension.cs
│ │ │ ├── SmartTableParam.cs
│ │ │ ├── SmartTableResult.cs
│ │ │ └── Sort.cs
│ │ ├── ThemeableViewLocationExpander.cs
│ │ └── ViewComponentExtensions.cs
│ └── SimplCommerce.WebHost
│ ├── Extensions
│ │ ├── ApplicationBuilderExtensions.cs
│ │ └── ServiceCollectionExtensions.cs
│ ├── IdentityServer
│ │ ├── IdentityServerConfig.cs
│ │ └── SimplProfileService.cs
│ ├── MigrationSimplDbContextFactory.cs
│ ├── Migrations
│ │ ├── 20230930154048_InitDb.Designer.cs
│ │ ├── 20230930154048_InitDb.cs
│ │ └── SimplDbContextModelSnapshot.cs
│ ├── Modules
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── SimplCommerce.WebHost.csproj
│ ├── Temps
│ ├── Themes
│ │ ├── CozaStore
│ │ │ ├── Areas
│ │ │ │ ├── Catalog
│ │ │ │ │ └── Views
│ │ │ │ │ ├── Category
│ │ │ │ │ │ └── CategoryDetail.cshtml
│ │ │ │ │ ├── Product
│ │ │ │ │ │ └── ProductDetail.cshtml
│ │ │ │ │ ├── Shared
│ │ │ │ │ │ ├── Components
│ │ │ │ │ │ │ ├── CategoryBreadcrumb
│ │ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ │ ├── CategoryMenu
│ │ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ │ ├── CategoryWidget
│ │ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ │ ├── ProductWidget
│ │ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ │ └── SimpleProductWidget
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ └── _ProductThumbnail.cshtml
│ │ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ │ └── _ViewStart.cshtml
│ │ │ │ ├── Cms
│ │ │ │ │ └── Views
│ │ │ │ │ ├── Shared
│ │ │ │ │ │ └── Components
│ │ │ │ │ │ ├── CarouselWidget
│ │ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ │ └── Menu
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── _ViewImports.cshtml
│ │ │ │ ├── Core
│ │ │ │ │ └── Views
│ │ │ │ │ ├── Home
│ │ │ │ │ │ └── Index.cshtml
│ │ │ │ │ ├── _ViewImports.cshtml
│ │ │ │ │ └── _ViewStart.cshtml
│ │ │ │ ├── ProductRecentlyViewed
│ │ │ │ │ └── Views
│ │ │ │ │ ├── Shared
│ │ │ │ │ │ └── Components
│ │ │ │ │ │ └── ProductRecentlyViewed
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── _ViewImports.cshtml
│ │ │ │ ├── Search
│ │ │ │ │ └── Views
│ │ │ │ │ ├── Shared
│ │ │ │ │ │ └── Components
│ │ │ │ │ │ └── SearchForm
│ │ │ │ │ │ └── Default.cshtml
│ │ │ │ │ └── _ViewImports.cshtml
│ │ │ │ └── ShoppingCart
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── Components
│ │ │ │ │ └── CartBadge
│ │ │ │ │ └── Default.cshtml
│ │ │ │ └── _ViewImports.cshtml
│ │ │ ├── Views
│ │ │ │ ├── Shared
│ │ │ │ │ ├── _Layout.cshtml
│ │ │ │ │ ├── _LoginPartial.cshtml
│ │ │ │ │ └── _SelectLanguagePartial.cshtml
│ │ │ │ └── _ViewImports.cshtml
│ │ │ └── theme.json
│ │ └── SampleTheme
│ │ ├── Areas
│ │ │ ├── Catalog
│ │ │ │ └── Views
│ │ │ │ ├── Shared
│ │ │ │ │ └── _ProductThumbnail.cshtml
│ │ │ │ └── _ViewImports.cshtml
│ │ │ └── Core
│ │ │ └── Views
│ │ │ ├── Home
│ │ │ │ └── Index.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ ├── Views
│ │ │ ├── Shared
│ │ │ │ └── _Layout.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ └── theme.json
│ ├── Views
│ │ ├── Shared
│ │ │ ├── 404.cshtml
│ │ │ ├── Error.cshtml
│ │ │ ├── _AccountMenu.cshtml
│ │ │ ├── _AnalyticsScript.cshtml
│ │ │ ├── _CookieConsentPartial.cshtml
│ │ │ ├── _Layout.cshtml
│ │ │ ├── _LoginPartial.cshtml
│ │ │ ├── _SelectLanguagePartial.cshtml
│ │ │ └── _ValidationScriptsPartial.cshtml
│ │ └── _ViewImports.cshtml
│ ├── appsettings.Development.json
│ ├── appsettings.docker.json
│ ├── appsettings.json
│ ├── bundleconfig.json
│ ├── bundleconfig.json.bindings
│ ├── libman.json
│ ├── modules.json
│ ├── tempkey.rsa
│ └── wwwroot
│ ├── favicon.ico
│ ├── lib
│ │ ├── angular
│ │ │ ├── angular.js
│ │ │ └── angular.min.js
│ │ ├── angular-animate
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-animate.min.js
│ │ │ └── angular-animate.min.js.map
│ │ ├── angular-aria
│ │ │ ├── angular-aria.js
│ │ │ ├── angular-aria.min.js
│ │ │ └── angular-aria.min.js.map
│ │ ├── angular-bootstrap
│ │ │ ├── ui-bootstrap-csp.css
│ │ │ ├── ui-bootstrap-tpls.js
│ │ │ ├── ui-bootstrap-tpls.min.js
│ │ │ ├── ui-bootstrap.js
│ │ │ └── ui-bootstrap.min.js
│ │ ├── angular-bootstrap-colorpicker
│ │ │ ├── css
│ │ │ │ ├── colorpicker.css
│ │ │ │ └── colorpicker.min.css
│ │ │ ├── img
│ │ │ │ ├── alpha.png
│ │ │ │ ├── hue.png
│ │ │ │ └── saturation.png
│ │ │ └── js
│ │ │ ├── bootstrap-colorpicker-module.js
│ │ │ └── bootstrap-colorpicker-module.min.js
│ │ ├── angular-material
│ │ │ ├── angular-material-mocks.js
│ │ │ ├── angular-material.css
│ │ │ ├── angular-material.js
│ │ │ ├── angular-material.min.css
│ │ │ └── angular-material.min.js
│ │ ├── angular-messages
│ │ │ ├── angular-messages.js
│ │ │ ├── angular-messages.min.js
│ │ │ └── angular-messages.min.js.map
│ │ ├── angular-smart-table
│ │ │ ├── dist
│ │ │ │ ├── smart-table.js
│ │ │ │ ├── smart-table.min.js
│ │ │ │ └── smart-table.min.js.map
│ │ │ ├── smart-table.js
│ │ │ └── smart-table.min.js
│ │ ├── angular-summernote
│ │ │ ├── angular-summernote.js
│ │ │ └── angular-summernote.min.js
│ │ ├── angular-ui-router
│ │ │ ├── angular-ui-router.js
│ │ │ └── angular-ui-router.min.js
│ │ ├── angular-ui-tree
│ │ │ ├── angular-ui-tree.css
│ │ │ ├── angular-ui-tree.js
│ │ │ ├── angular-ui-tree.min.css
│ │ │ └── angular-ui-tree.min.js
│ │ ├── bootbox
│ │ │ ├── bootbox.js
│ │ │ └── bootbox.min.js
│ │ ├── bootstrap
│ │ │ └── dist
│ │ │ ├── css
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap-theme.css.map
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── bootstrap-theme.min.css.map
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ └── bootstrap.min.css.map
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ └── bootstrap.min.js
│ │ ├── bootstrap-star-rating
│ │ │ ├── css
│ │ │ │ ├── star-rating.css
│ │ │ │ └── star-rating.min.css
│ │ │ ├── img
│ │ │ │ └── loading.gif
│ │ │ └── js
│ │ │ ├── locales
│ │ │ │ ├── LANG.js
│ │ │ │ ├── ar.js
│ │ │ │ ├── de.js
│ │ │ │ ├── es.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt-BR.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── ua.js
│ │ │ │ ├── vi-vn.js
│ │ │ │ └── zh.js
│ │ │ ├── star-rating.js
│ │ │ └── star-rating.min.js
│ │ ├── bootstrap-ui-datetime-picker
│ │ │ ├── datetime-picker.js
│ │ │ ├── datetime-picker.min.js
│ │ │ └── datetime-picker.tpls.js
│ │ ├── bootstrap4
│ │ │ ├── css
│ │ │ │ ├── bootstrap-grid.css
│ │ │ │ ├── bootstrap-grid.css.map
│ │ │ │ ├── bootstrap-grid.min.css
│ │ │ │ ├── bootstrap-grid.min.css.map
│ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ ├── bootstrap-reboot.css.map
│ │ │ │ ├── bootstrap-reboot.min.css
│ │ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ └── bootstrap.min.css.map
│ │ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ │ ├── flags
│ │ │ ├── blank.gif
│ │ │ ├── flags.css
│ │ │ ├── flags.min.css
│ │ │ └── flags.png
│ │ ├── font-awesome
│ │ │ ├── css
│ │ │ │ ├── font-awesome.css
│ │ │ │ └── font-awesome.min.css
│ │ │ └── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ │ ├── i18n
│ │ │ ├── angular-locale_ar-tn.js
│ │ │ ├── angular-locale_ar.js
│ │ │ ├── angular-locale_en-us.js
│ │ │ ├── angular-locale_en.js
│ │ │ ├── angular-locale_fr-fr.js
│ │ │ ├── angular-locale_fr.js
│ │ │ ├── angular-locale_ko-kr.js
│ │ │ ├── angular-locale_ko.js
│ │ │ ├── angular-locale_pt-br.js
│ │ │ ├── angular-locale_pt.js
│ │ │ ├── angular-locale_ru-ru.js
│ │ │ ├── angular-locale_ru.js
│ │ │ ├── angular-locale_uk-ua.js
│ │ │ ├── angular-locale_uk.js
│ │ │ ├── angular-locale_vi-vn.js
│ │ │ └── angular-locale_vi.js
│ │ ├── jquery
│ │ │ ├── jquery.js
│ │ │ ├── jquery.min.js
│ │ │ ├── jquery.min.map
│ │ │ ├── jquery.slim.js
│ │ │ ├── jquery.slim.min.js
│ │ │ └── jquery.slim.min.map
│ │ ├── jquery-validation
│ │ │ ├── additional-methods.js
│ │ │ ├── additional-methods.min.js
│ │ │ ├── jquery.validate.js
│ │ │ └── jquery.validate.min.js
│ │ ├── jquery-validation-unobtrusive
│ │ │ ├── jquery.validate.unobtrusive.js
│ │ │ └── jquery.validate.unobtrusive.min.js
│ │ ├── matchheight
│ │ │ ├── jquery.matchHeight-min.js
│ │ │ └── jquery.matchHeight.js
│ │ ├── multi-dropdown-menu
│ │ │ ├── css
│ │ │ │ └── bootstrap-4-navbar.css
│ │ │ └── js
│ │ │ └── bootstrap-4-navbar.js
│ │ ├── ng-file-upload
│ │ │ └── dist
│ │ │ ├── ng-file-upload.js
│ │ │ └── ng-file-upload.min.js
│ │ ├── nouislider
│ │ │ └── distribute
│ │ │ ├── nouislider.js
│ │ │ ├── nouislider.min.css
│ │ │ └── nouislider.min.js
│ │ ├── pagination
│ │ │ ├── README.md
│ │ │ ├── dirPagination.js
│ │ │ ├── dirPagination.spec.js
│ │ │ ├── dirPagination.tpl.html
│ │ │ └── testTemplate.tpl.html
│ │ ├── signalr
│ │ │ └── dist
│ │ │ └── browser
│ │ │ ├── signalr.js
│ │ │ └── signalr.min.js
│ │ ├── smoothproducts
│ │ │ ├── css
│ │ │ │ └── smoothproducts.css
│ │ │ └── js
│ │ │ ├── smoothproducts.js
│ │ │ └── smoothproducts.min.js
│ │ ├── summernote
│ │ │ ├── font
│ │ │ │ ├── summernote.eot
│ │ │ │ ├── summernote.ttf
│ │ │ │ └── summernote.woff
│ │ │ ├── lang
│ │ │ │ ├── summernote-ar-AR.js
│ │ │ │ ├── summernote-ar-AR.min.js
│ │ │ │ ├── summernote-bg-BG.js
│ │ │ │ ├── summernote-bg-BG.min.js
│ │ │ │ ├── summernote-ca-ES.js
│ │ │ │ ├── summernote-ca-ES.min.js
│ │ │ │ ├── summernote-cs-CZ.js
│ │ │ │ ├── summernote-cs-CZ.min.js
│ │ │ │ ├── summernote-da-DK.js
│ │ │ │ ├── summernote-da-DK.min.js
│ │ │ │ ├── summernote-de-DE.js
│ │ │ │ ├── summernote-de-DE.min.js
│ │ │ │ ├── summernote-es-ES.js
│ │ │ │ ├── summernote-es-ES.min.js
│ │ │ │ ├── summernote-es-EU.js
│ │ │ │ ├── summernote-es-EU.min.js
│ │ │ │ ├── summernote-fa-IR.js
│ │ │ │ ├── summernote-fa-IR.min.js
│ │ │ │ ├── summernote-fi-FI.js
│ │ │ │ ├── summernote-fi-FI.min.js
│ │ │ │ ├── summernote-fr-FR.js
│ │ │ │ ├── summernote-fr-FR.min.js
│ │ │ │ ├── summernote-gl-ES.js
│ │ │ │ ├── summernote-gl-ES.min.js
│ │ │ │ ├── summernote-he-IL.js
│ │ │ │ ├── summernote-he-IL.min.js
│ │ │ │ ├── summernote-hr-HR.js
│ │ │ │ ├── summernote-hr-HR.min.js
│ │ │ │ ├── summernote-hu-HU.js
│ │ │ │ ├── summernote-hu-HU.min.js
│ │ │ │ ├── summernote-id-ID.js
│ │ │ │ ├── summernote-id-ID.min.js
│ │ │ │ ├── summernote-it-IT.js
│ │ │ │ ├── summernote-it-IT.min.js
│ │ │ │ ├── summernote-ja-JP.js
│ │ │ │ ├── summernote-ja-JP.min.js
│ │ │ │ ├── summernote-ko-KR.js
│ │ │ │ ├── summernote-ko-KR.min.js
│ │ │ │ ├── summernote-lt-LT.js
│ │ │ │ ├── summernote-lt-LT.min.js
│ │ │ │ ├── summernote-lt-LV.js
│ │ │ │ ├── summernote-lt-LV.min.js
│ │ │ │ ├── summernote-nb-NO.js
│ │ │ │ ├── summernote-nb-NO.min.js
│ │ │ │ ├── summernote-nl-NL.js
│ │ │ │ ├── summernote-nl-NL.min.js
│ │ │ │ ├── summernote-pl-PL.js
│ │ │ │ ├── summernote-pl-PL.min.js
│ │ │ │ ├── summernote-pt-BR.js
│ │ │ │ ├── summernote-pt-BR.min.js
│ │ │ │ ├── summernote-pt-PT.js
│ │ │ │ ├── summernote-pt-PT.min.js
│ │ │ │ ├── summernote-ro-RO.js
│ │ │ │ ├── summernote-ro-RO.min.js
│ │ │ │ ├── summernote-ru-RU.js
│ │ │ │ ├── summernote-ru-RU.min.js
│ │ │ │ ├── summernote-sk-SK.js
│ │ │ │ ├── summernote-sk-SK.min.js
│ │ │ │ ├── summernote-sl-SI.js
│ │ │ │ ├── summernote-sl-SI.min.js
│ │ │ │ ├── summernote-sr-RS-Latin.js
│ │ │ │ ├── summernote-sr-RS-Latin.min.js
│ │ │ │ ├── summernote-sr-RS.js
│ │ │ │ ├── summernote-sr-RS.min.js
│ │ │ │ ├── summernote-sv-SE.js
│ │ │ │ ├── summernote-sv-SE.min.js
│ │ │ │ ├── summernote-th-TH.js
│ │ │ │ ├── summernote-th-TH.min.js
│ │ │ │ ├── summernote-tr-TR.js
│ │ │ │ ├── summernote-tr-TR.min.js
│ │ │ │ ├── summernote-uk-UA.js
│ │ │ │ ├── summernote-uk-UA.min.js
│ │ │ │ ├── summernote-vi-VN.js
│ │ │ │ ├── summernote-vi-VN.min.js
│ │ │ │ ├── summernote-zh-CN.js
│ │ │ │ ├── summernote-zh-CN.min.js
│ │ │ │ ├── summernote-zh-TW.js
│ │ │ │ └── summernote-zh-TW.min.js
│ │ │ ├── plugin
│ │ │ │ ├── databasic
│ │ │ │ │ ├── summernote-ext-databasic.css
│ │ │ │ │ ├── summernote-ext-databasic.js
│ │ │ │ │ ├── summernote-ext-databasic.min.css
│ │ │ │ │ └── summernote-ext-databasic.min.js
│ │ │ │ ├── hello
│ │ │ │ │ ├── summernote-ext-hello.js
│ │ │ │ │ └── summernote-ext-hello.min.js
│ │ │ │ └── specialchars
│ │ │ │ ├── summernote-ext-specialchars.js
│ │ │ │ └── summernote-ext-specialchars.min.js
│ │ │ ├── summernote.css
│ │ │ ├── summernote.js
│ │ │ └── summernote.min.js
│ │ ├── toastr
│ │ │ └── build
│ │ │ ├── toastr.css
│ │ │ ├── toastr.js.map
│ │ │ ├── toastr.min.css
│ │ │ └── toastr.min.js
│ │ └── wnumb
│ │ └── wNumb.js
│ ├── libs.min.css
│ ├── robots.txt
│ ├── themes
│ │ ├── CozaStore
│ │ │ ├── CozaStore.png
│ │ │ ├── css
│ │ │ │ ├── flags.css
│ │ │ │ ├── flags.min.css
│ │ │ │ ├── main.css
│ │ │ │ ├── simpl.css
│ │ │ │ └── util.css
│ │ │ ├── fonts
│ │ │ │ ├── Montserrat
│ │ │ │ │ ├── Montserrat-Black.ttf
│ │ │ │ │ ├── Montserrat-BlackItalic.ttf
│ │ │ │ │ ├── Montserrat-Bold.ttf
│ │ │ │ │ ├── Montserrat-BoldItalic.ttf
│ │ │ │ │ ├── Montserrat-ExtraBold.ttf
│ │ │ │ │ ├── Montserrat-ExtraBoldItalic.ttf
│ │ │ │ │ ├── Montserrat-ExtraLight.ttf
│ │ │ │ │ ├── Montserrat-ExtraLightItalic.ttf
│ │ │ │ │ ├── Montserrat-Italic.ttf
│ │ │ │ │ ├── Montserrat-Light.ttf
│ │ │ │ │ ├── Montserrat-LightItalic.ttf
│ │ │ │ │ ├── Montserrat-Medium.ttf
│ │ │ │ │ ├── Montserrat-MediumItalic.ttf
│ │ │ │ │ ├── Montserrat-Regular.ttf
│ │ │ │ │ ├── Montserrat-SemiBold.ttf
│ │ │ │ │ ├── Montserrat-SemiBoldItalic.ttf
│ │ │ │ │ ├── Montserrat-Thin.ttf
│ │ │ │ │ ├── Montserrat-ThinItalic.ttf
│ │ │ │ │ └── OFL.txt
│ │ │ │ ├── PlayfairDisplay
│ │ │ │ │ ├── OFL.txt
│ │ │ │ │ ├── PlayfairDisplay-Black.ttf
│ │ │ │ │ ├── PlayfairDisplay-BlackItalic.ttf
│ │ │ │ │ ├── PlayfairDisplay-Bold.ttf
│ │ │ │ │ ├── PlayfairDisplay-BoldItalic.ttf
│ │ │ │ │ ├── PlayfairDisplay-Italic.ttf
│ │ │ │ │ └── PlayfairDisplay-Regular.ttf
│ │ │ │ ├── Poppins
│ │ │ │ │ ├── Poppins-Black.ttf
│ │ │ │ │ ├── Poppins-BlackItalic.ttf
│ │ │ │ │ ├── Poppins-Bold.ttf
│ │ │ │ │ ├── Poppins-BoldItalic.ttf
│ │ │ │ │ ├── Poppins-ExtraBold.ttf
│ │ │ │ │ ├── Poppins-ExtraBoldItalic.ttf
│ │ │ │ │ ├── Poppins-ExtraLight.ttf
│ │ │ │ │ ├── Poppins-ExtraLightItalic.ttf
│ │ │ │ │ ├── Poppins-Italic.ttf
│ │ │ │ │ ├── Poppins-Light.ttf
│ │ │ │ │ ├── Poppins-LightItalic.ttf
│ │ │ │ │ ├── Poppins-Medium.ttf
│ │ │ │ │ ├── Poppins-MediumItalic.ttf
│ │ │ │ │ ├── Poppins-Regular.ttf
│ │ │ │ │ ├── Poppins-SemiBold.ttf
│ │ │ │ │ ├── Poppins-SemiBoldItalic.ttf
│ │ │ │ │ ├── Poppins-Thin.ttf
│ │ │ │ │ └── Poppins-ThinItalic.ttf
│ │ │ │ ├── font-awesome-4.7.0
│ │ │ │ │ ├── HELP-US-OUT.txt
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── font-awesome.css
│ │ │ │ │ │ └── font-awesome.min.css
│ │ │ │ │ ├── fonts
│ │ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ │ └── fontawesome-webfont.woff2
│ │ │ │ │ ├── less
│ │ │ │ │ │ ├── animated.less
│ │ │ │ │ │ ├── bordered-pulled.less
│ │ │ │ │ │ ├── core.less
│ │ │ │ │ │ ├── fixed-width.less
│ │ │ │ │ │ ├── font-awesome.less
│ │ │ │ │ │ ├── icons.less
│ │ │ │ │ │ ├── larger.less
│ │ │ │ │ │ ├── list.less
│ │ │ │ │ │ ├── mixins.less
│ │ │ │ │ │ ├── path.less
│ │ │ │ │ │ ├── rotated-flipped.less
│ │ │ │ │ │ ├── screen-reader.less
│ │ │ │ │ │ ├── stacked.less
│ │ │ │ │ │ └── variables.less
│ │ │ │ │ └── scss
│ │ │ │ │ ├── _animated.scss
│ │ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ │ ├── _core.scss
│ │ │ │ │ ├── _fixed-width.scss
│ │ │ │ │ ├── _icons.scss
│ │ │ │ │ ├── _larger.scss
│ │ │ │ │ ├── _list.scss
│ │ │ │ │ ├── _mixins.scss
│ │ │ │ │ ├── _path.scss
│ │ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ │ ├── _screen-reader.scss
│ │ │ │ │ ├── _stacked.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ └── font-awesome.scss
│ │ │ │ ├── iconic
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── material-design-iconic-font.css
│ │ │ │ │ │ └── material-design-iconic-font.min.css
│ │ │ │ │ └── fonts
│ │ │ │ │ ├── Material-Design-Iconic-Font.eot
│ │ │ │ │ ├── Material-Design-Iconic-Font.svg
│ │ │ │ │ ├── Material-Design-Iconic-Font.ttf
│ │ │ │ │ ├── Material-Design-Iconic-Font.woff
│ │ │ │ │ └── Material-Design-Iconic-Font.woff2
│ │ │ │ └── linearicons-v1.0.0
│ │ │ │ ├── WebFont
│ │ │ │ │ ├── Linearicons-Free.eot
│ │ │ │ │ ├── Linearicons-Free.svg
│ │ │ │ │ ├── Linearicons-Free.ttf
│ │ │ │ │ ├── Linearicons-Free.woff
│ │ │ │ │ └── Linearicons-Free.woff2
│ │ │ │ └── icon-font.min.css
│ │ │ ├── images
│ │ │ │ └── icons
│ │ │ │ ├── blank.gif
│ │ │ │ ├── favicon.png
│ │ │ │ ├── flags.png
│ │ │ │ ├── icon-close.png
│ │ │ │ ├── icon-close2.png
│ │ │ │ ├── icon-email.png
│ │ │ │ ├── icon-heart-01.png
│ │ │ │ ├── icon-heart-02.png
│ │ │ │ ├── icon-next.png
│ │ │ │ ├── icon-pay-01.png
│ │ │ │ ├── icon-pay-02.png
│ │ │ │ ├── icon-pay-03.png
│ │ │ │ ├── icon-pay-04.png
│ │ │ │ ├── icon-pay-05.png
│ │ │ │ ├── icon-prev.png
│ │ │ │ ├── logo-01.png
│ │ │ │ ├── logo-02.png
│ │ │ │ └── pin.png
│ │ │ ├── js
│ │ │ │ ├── cozastore.js
│ │ │ │ └── slick-custom.js
│ │ │ ├── site.min.css
│ │ │ └── vendor
│ │ │ ├── animate
│ │ │ │ └── animate.css
│ │ │ ├── animsition
│ │ │ │ ├── css
│ │ │ │ │ ├── animsition.css
│ │ │ │ │ └── animsition.min.css
│ │ │ │ └── js
│ │ │ │ ├── animsition.js
│ │ │ │ └── animsition.min.js
│ │ │ ├── css-hamburgers
│ │ │ │ ├── hamburgers.css
│ │ │ │ └── hamburgers.min.css
│ │ │ └── slick
│ │ │ ├── ajax-loader.gif
│ │ │ ├── config.rb
│ │ │ ├── fonts
│ │ │ │ ├── slick.eot
│ │ │ │ ├── slick.svg
│ │ │ │ ├── slick.ttf
│ │ │ │ └── slick.woff
│ │ │ ├── slick-theme.css
│ │ │ ├── slick-theme.less
│ │ │ ├── slick-theme.scss
│ │ │ ├── slick.css
│ │ │ ├── slick.js
│ │ │ ├── slick.less
│ │ │ ├── slick.min.js
│ │ │ └── slick.scss
│ │ ├── SampleTheme
│ │ │ ├── SampleTheme.png
│ │ │ └── site.css
│ │ └── generic-theme.png
│ └── user-content
│ └── no-image.png
└── test
├── SimplCommerce.Infrastructure.Tests
│ ├── EnumHelperTests.cs
│ ├── Extensions
│ │ └── DictionaryExtensionsTests.cs
│ ├── SimplCommerce.Infrastructure.Tests.csproj
│ └── StringHelperTests.cs
├── SimplCommerce.Module.Cms.Tests
│ ├── Components
│ │ └── CarouselWidgetViewComponentTests.cs
│ ├── Controllers
│ │ └── PageControllerTests.cs
│ └── SimplCommerce.Module.Cms.Tests.csproj
├── SimplCommerce.Module.Core.Tests
│ ├── Components
│ │ └── DefaultShippingAddressViewComponentTests.cs
│ ├── Services
│ │ └── WidgetInstanceServiceTests.cs
│ └── SimplCommerce.Module.Core.Tests.csproj
├── SimplCommerce.Module.Inventory.Tests
│ ├── SimplCommerce.Module.Inventory.Tests.csproj
│ └── StockServiceTests.cs
├── SimplCommerce.Module.Pricing.Tests
│ ├── Controllers
│ │ ├── CartRuleApiControllerTests.cs
│ │ └── CartRuleUsageApiControllerTests.cs
│ ├── CouponServiceTest.cs
│ └── SimplCommerce.Module.Pricing.Tests.csproj
├── SimplCommerce.Module.ProductComparison.Tests
│ ├── Controllers
│ │ └── ComparingProductControllerTests.cs
│ ├── Services
│ │ └── ComparingProductServiceTests.cs
│ └── SimplCommerce.Module.ProductComparison.Tests.csproj
└── SimplCommerce.Module.ShippingFree.Tests
├── Services
│ └── FreeShippingServiceProviderTests.cs
└── SimplCommerce.Module.ShippingFree.Tests.csproj
723 directories, 1961 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论