forked from OrchardCMS/OrchardCore.Commerce
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStartup.cs
95 lines (92 loc) · 4.44 KB
/
Startup.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using Money;
using Money.Abstractions;
using OrchardCore.Commerce.Abstractions;
using OrchardCore.Commerce.Drivers;
using OrchardCore.Commerce.Fields;
using OrchardCore.Commerce.Handlers;
using OrchardCore.Commerce.Indexes;
using OrchardCore.Commerce.Migrations;
using OrchardCore.Commerce.Models;
using OrchardCore.Commerce.Services;
using OrchardCore.Commerce.Settings;
using OrchardCore.ContentManagement;
using OrchardCore.ContentManagement.Display.ContentDisplay;
using OrchardCore.ContentManagement.Handlers;
using OrchardCore.ContentTypes.Editors;
using OrchardCore.Data.Migration;
using OrchardCore.DisplayManagement.Handlers;
using OrchardCore.Modules;
using OrchardCore.Navigation;
using OrchardCore.Security.Permissions;
using OrchardCore.Settings;
using YesSql.Indexes;
namespace OrchardCore.Commerce
{
public class Startup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
// Product
services.AddSingleton<IIndexProvider, ProductPartIndexProvider>();
services.AddScoped<IDataMigration, ProductMigrations>();
services.AddScoped<IContentAliasProvider, ProductPartContentAliasProvider>();
services.AddScoped<IProductService, ProductService>();
services.AddScoped<IContentPartDisplayDriver, ProductPartDisplayDriver>();
services.AddContentPart<ProductPart>();
// Attributes
services.AddContentField<BooleanProductAttributeField>();
services.AddScoped<IContentFieldDisplayDriver, BooleanProductAttributeFieldDriver>();
services.AddScoped<IContentPartFieldDefinitionDisplayDriver, BooleanProductAttributeFieldSettingsDriver>();
services.AddContentField<NumericProductAttributeField>();
services.AddScoped<IContentFieldDisplayDriver, NumericProductAttributeFieldDriver>();
services.AddScoped<IContentPartFieldDefinitionDisplayDriver, NumericProductAttributeFieldSettingsDriver>();
services.AddContentField<TextProductAttributeField>();
services.AddScoped<IContentFieldDisplayDriver, TextProductAttributeFieldDriver>();
services.AddScoped<IContentPartFieldDefinitionDisplayDriver, TextProductAttributeFieldSettingsDriver>();
services.AddScoped<IProductAttributeProvider, ProductAttributeProvider>();
services.AddScoped<IProductAttributeService, ProductAttributeService>();
// Price
services.AddScoped<IDataMigration, PriceMigrations>();
services.AddScoped<IContentPartHandler, PricePartHandler>();
services.AddScoped<IContentPartDisplayDriver, PricePartDisplayDriver>();
services.AddContentPart<PricePart>();
services.AddScoped<IPriceProvider, PriceProvider>();
services.AddScoped<IPriceService, PriceService>();
services.AddScoped<IPriceSelectionStrategy, LowestPriceStrategy>();
// Currency
services.AddScoped<ICurrencyProvider, CurrencyProvider>();
services.AddScoped<IMoneyService, MoneyService>();
// Shopping cart
services.AddScoped<IShoppingCartHelpers, ShoppingCartHelpers>();
// Settings
services.AddScoped<IPermissionProvider, Permissions>();
services.AddScoped<IDisplayDriver<ISite>, CommerceSettingsDisplayDriver>();
services.AddScoped<INavigationProvider, AdminMenu>();
}
}
[RequireFeatures(CommerceConstants.Features.SessionCartStorage)]
public class SessionCartStorageStartup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddSession(options => { });
// Shopping Cart
services.AddScoped<IShoppingCartPersistence, SessionShoppingCartPersistence>();
}
public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder routes, IServiceProvider serviceProvider)
{
base.Configure(app, routes, serviceProvider);
app.UseSession();
routes.MapAreaControllerRoute(
name: "ShoppingCart",
areaName: "OrchardCore.Commerce",
pattern: "shoppingcart/{action}",
defaults: new { controller = "ShoppingCart", action = "Index" }
);
}
}
}