Skip to content

Commit f2149b2

Browse files
author
support
committed
Replace IServiceProvider with IHttpContextAccessor in Plugins
1 parent f0684c8 commit f2149b2

File tree

7 files changed

+47
-53
lines changed

7 files changed

+47
-53
lines changed

src/Plugins/DiscountRules.Standard/Providers/ShoppingCartDiscountRule.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Grand.Business.Core.Utilities.Catalog;
55
using Grand.Domain.Orders;
66
using Grand.Infrastructure;
7+
using Microsoft.AspNetCore.Http;
78
using Microsoft.Extensions.DependencyInjection;
89

910
namespace DiscountRules.Standard.Providers
@@ -12,18 +13,18 @@ public class ShoppingCartDiscountRule : IDiscountRule
1213
{
1314
private readonly IWorkContext _workContext;
1415
private readonly IProductService _productService;
15-
private readonly IServiceProvider _serviceProvider;
16+
private readonly IHttpContextAccessor _httpContextAccessor;
1617
private readonly ShoppingCartSettings _shoppingCartSettings;
1718

1819
public ShoppingCartDiscountRule(
1920
IWorkContext workContext,
2021
IProductService productService,
21-
IServiceProvider serviceProvider,
22+
IHttpContextAccessor httpContextAccessor,
2223
ShoppingCartSettings shoppingCartSettings)
2324
{
2425
_workContext = workContext;
2526
_productService = productService;
26-
_serviceProvider = serviceProvider;
27+
_httpContextAccessor = httpContextAccessor;
2728
_shoppingCartSettings = shoppingCartSettings;
2829
}
2930

@@ -59,7 +60,7 @@ public async Task<DiscountRuleValidationResult> CheckRequirement(DiscountRuleVal
5960
}
6061
double spentAmount = 0;
6162

62-
var priceCalculationService = _serviceProvider.GetRequiredService<IPricingService>();
63+
var priceCalculationService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IPricingService>();
6364

6465
foreach (var ca in cart)
6566
{

src/Plugins/Payments.BrainTree/BrainTreePaymentProvider.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,17 @@ public class BrainTreePaymentProvider : IPaymentProvider
2121
{
2222
private readonly ITranslationService _translationService;
2323
private readonly ICustomerService _customerService;
24-
private readonly IServiceProvider _serviceProvider;
2524
private readonly IHttpContextAccessor _httpContextAccessor;
2625
private readonly BrainTreePaymentSettings _brainTreePaymentSettings;
2726

2827
public BrainTreePaymentProvider(
2928
ITranslationService translationService,
3029
ICustomerService customerService,
31-
IServiceProvider serviceProvider,
3230
IHttpContextAccessor httpContextAccessor,
3331
BrainTreePaymentSettings brainTreePaymentSettings)
3432
{
3533
_translationService = translationService;
3634
_customerService = customerService;
37-
_serviceProvider = serviceProvider;
3835
_httpContextAccessor = httpContextAccessor;
3936
_brainTreePaymentSettings = brainTreePaymentSettings;
4037
}
@@ -228,7 +225,7 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
228225
if (_brainTreePaymentSettings.AdditionalFeePercentage)
229226
{
230227
//percentage
231-
var orderTotalCalculationService = _serviceProvider.GetRequiredService<IOrderCalculationService>();
228+
var orderTotalCalculationService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IOrderCalculationService>();
232229
var subtotal = await orderTotalCalculationService.GetShoppingCartSubTotal(cart, true);
233230
result = (float)subtotal.subTotalWithDiscount *
234231
(float)_brainTreePaymentSettings.AdditionalFee / 100f;
@@ -240,8 +237,8 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
240237
}
241238

242239
if (!(result > 0)) return await Task.FromResult(result);
243-
var currencyService = _serviceProvider.GetRequiredService<ICurrencyService>();
244-
var workContext = _serviceProvider.GetRequiredService<IWorkContext>();
240+
var currencyService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<ICurrencyService>();
241+
var workContext = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IWorkContext>();
245242
result = await currencyService.ConvertFromPrimaryStoreCurrency(result, workContext.WorkingCurrency);
246243

247244
//return result;

src/Plugins/Payments.CashOnDelivery/CashOnDeliveryPaymentProvider.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
using Grand.Domain.Orders;
88
using Grand.Domain.Payments;
99
using Grand.Infrastructure;
10+
using Microsoft.AspNetCore.Http;
1011
using Microsoft.Extensions.DependencyInjection;
1112

1213
namespace Payments.CashOnDelivery
1314
{
1415
public class CashOnDeliveryPaymentProvider : IPaymentProvider
1516
{
1617
private readonly ITranslationService _translationService;
17-
private readonly IServiceProvider _serviceProvider;
18+
private readonly IHttpContextAccessor _httpContextAccessor;
1819

1920
private readonly CashOnDeliveryPaymentSettings _cashOnDeliveryPaymentSettings;
2021

2122
public CashOnDeliveryPaymentProvider(
2223
ITranslationService translationService,
23-
IServiceProvider serviceProvider,
24-
CashOnDeliveryPaymentSettings cashOnDeliveryPaymentSettings
25-
)
24+
IHttpContextAccessor httpContextAccessor,
25+
CashOnDeliveryPaymentSettings cashOnDeliveryPaymentSettings)
2626
{
2727
_translationService = translationService;
28-
_serviceProvider = serviceProvider;
28+
_httpContextAccessor = httpContextAccessor;
2929
_cashOnDeliveryPaymentSettings = cashOnDeliveryPaymentSettings;
3030
}
3131

@@ -88,7 +88,7 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
8888
if (_cashOnDeliveryPaymentSettings.AdditionalFeePercentage)
8989
{
9090
//percentage
91-
var orderTotalCalculationService = _serviceProvider.GetRequiredService<IOrderCalculationService>();
91+
var orderTotalCalculationService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IOrderCalculationService>();
9292
var subtotal = await orderTotalCalculationService.GetShoppingCartSubTotal(cart, true);
9393
result = (float)subtotal.subTotalWithDiscount * (float)_cashOnDeliveryPaymentSettings.AdditionalFee / 100f;
9494
}
@@ -99,8 +99,8 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
9999
}
100100

101101
if (!(result > 0)) return result;
102-
var currencyService = _serviceProvider.GetRequiredService<ICurrencyService>();
103-
var workContext = _serviceProvider.GetRequiredService<IWorkContext>();
102+
var currencyService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<ICurrencyService>();
103+
var workContext = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IWorkContext>();
104104
result = await currencyService.ConvertFromPrimaryStoreCurrency(result, workContext.WorkingCurrency);
105105

106106
//return result;
@@ -159,7 +159,7 @@ public async Task<VoidPaymentResult> Void(PaymentTransaction paymentTransaction)
159159
/// <returns>Result</returns>
160160
public async Task CancelPayment(PaymentTransaction paymentTransaction)
161161
{
162-
var paymentTransactionService = _serviceProvider.GetRequiredService<IPaymentTransactionService>();
162+
var paymentTransactionService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IPaymentTransactionService>();
163163
paymentTransaction.TransactionStatus = TransactionStatus.Canceled;
164164
await paymentTransactionService.UpdatePaymentTransaction(paymentTransaction);
165165
}

src/Plugins/Payments.PayPalStandard/PayPalStandardPaymentProvider.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public class PayPalStandardPaymentProvider : IPaymentProvider
3030
private readonly IHttpContextAccessor _httpContextAccessor;
3131
private readonly ITaxService _taxService;
3232
private readonly IProductService _productService;
33-
private readonly IServiceProvider _serviceProvider;
3433
private readonly IWorkContext _workContext;
3534
private readonly IOrderService _orderService;
36-
35+
private readonly ICountryService _countryService;
36+
private readonly ICurrencyService _currencyService;
3737
#region Ctor
3838

3939
public PayPalStandardPaymentProvider(
@@ -43,9 +43,10 @@ public PayPalStandardPaymentProvider(
4343
ITranslationService translationService,
4444
ITaxService taxService,
4545
IProductService productService,
46-
IServiceProvider serviceProvider,
4746
IWorkContext workContext,
4847
IOrderService orderService,
48+
ICountryService countryService,
49+
ICurrencyService currencyService,
4950
PayPalStandardPaymentSettings paypalStandardPaymentSettings)
5051
{
5152
_checkoutAttributeParser = checkoutAttributeParser;
@@ -54,9 +55,10 @@ public PayPalStandardPaymentProvider(
5455
_translationService = translationService;
5556
_taxService = taxService;
5657
_productService = productService;
57-
_serviceProvider = serviceProvider;
5858
_workContext = workContext;
5959
_orderService = orderService;
60+
_countryService = countryService;
61+
_currencyService = currencyService;
6062
_paypalStandardPaymentSettings = paypalStandardPaymentSettings;
6163
}
6264

@@ -101,15 +103,14 @@ private async Task<IDictionary<string, string>> CreateQueryParameters(Order orde
101103
var countryCode = "";
102104
if (!string.IsNullOrEmpty(order.ShippingAddress?.StateProvinceId))
103105
{
104-
var countryService = _serviceProvider.GetRequiredService<ICountryService>();
105-
var country = await countryService.GetCountryById(order.ShippingAddress?.CountryId);
106+
var country = await _countryService.GetCountryById(order.ShippingAddress?.CountryId);
106107
var state = country?.StateProvinces.FirstOrDefault(x => x.Id == order.ShippingAddress?.StateProvinceId);
107108
if (state != null)
108109
stateProvince = state.Abbreviation;
109110
}
110111
if (!string.IsNullOrEmpty(order.ShippingAddress?.CountryId))
111112
{
112-
var country = await _serviceProvider.GetRequiredService<ICountryService>().GetCountryById(order.ShippingAddress?.CountryId);
113+
var country = await _countryService.GetCountryById(order.ShippingAddress?.CountryId);
113114
if (country != null)
114115
countryCode = country.TwoLetterIsoCode;
115116
}
@@ -188,15 +189,12 @@ private async Task AddItemsParameters(IDictionary<string, string> parameters, Or
188189

189190
//add checkout attributes as order items
190191
var checkoutAttributeValues = await _checkoutAttributeParser.ParseCheckoutAttributeValue(order.CheckoutAttributes);
191-
var currencyService = _serviceProvider.GetRequiredService<ICurrencyService>();
192-
var workContext = _serviceProvider.GetRequiredService<IWorkContext>();
193-
var customer = await _serviceProvider.GetRequiredService<ICustomerService>().GetCustomerById(order.CustomerId);
194192
foreach (var attributeValue in checkoutAttributeValues)
195193
{
196-
var attributePrice = await _taxService.GetCheckoutAttributePrice(attributeValue.ca, attributeValue.cav, false, customer);
194+
var attributePrice = await _taxService.GetCheckoutAttributePrice(attributeValue.ca, attributeValue.cav, false, _workContext.CurrentCustomer);
197195
if (attributePrice.checkoutPrice > 0)
198196
{
199-
var roundedAttributePrice = Math.Round(await currencyService.ConvertFromPrimaryStoreCurrency(attributePrice.checkoutPrice, workContext.WorkingCurrency), 2);
197+
var roundedAttributePrice = Math.Round(await _currencyService.ConvertFromPrimaryStoreCurrency(attributePrice.checkoutPrice, _workContext.WorkingCurrency), 2);
200198
//add query parameters
201199
if (attributeValue.ca != null)
202200
{
@@ -378,7 +376,7 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
378376
if (_paypalStandardPaymentSettings.AdditionalFeePercentage)
379377
{
380378
//percentage
381-
var orderTotalCalculationService = _serviceProvider.GetRequiredService<IOrderCalculationService>();
379+
var orderTotalCalculationService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IOrderCalculationService>();
382380
var subtotal = await orderTotalCalculationService.GetShoppingCartSubTotal(cart, true);
383381
result = (float)subtotal.subTotalWithDiscount * (float)_paypalStandardPaymentSettings.AdditionalFee / 100f;
384382
}
@@ -389,8 +387,7 @@ public async Task<double> GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)
389387
}
390388

391389
if (!(result > 0)) return await Task.FromResult(result);
392-
var currencyService = _serviceProvider.GetRequiredService<ICurrencyService>();
393-
result = await currencyService.ConvertFromPrimaryStoreCurrency(result, _workContext.WorkingCurrency);
390+
result = await _currencyService.ConvertFromPrimaryStoreCurrency(result, _workContext.WorkingCurrency);
394391
//return result;
395392
return await Task.FromResult(result);
396393
}

src/Plugins/Shipping.ByWeight/ByWeightShippingProvider.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Grand.Domain.Orders;
1414
using Grand.Domain.Shipping;
1515
using Grand.Infrastructure;
16+
using Microsoft.AspNetCore.Http;
1617
using Microsoft.Extensions.DependencyInjection;
1718
using Shipping.ByWeight.Services;
1819

@@ -24,11 +25,11 @@ public class ByWeightShippingCalcPlugin : IShippingRateCalculationProvider
2425

2526
private readonly IShippingMethodService _shippingMethodService;
2627
private readonly IWorkContext _workContext;
27-
private readonly IServiceProvider _serviceProvider;
2828
private readonly ITranslationService _translationService;
2929
private readonly IProductService _productService;
3030
private readonly ICheckoutAttributeParser _checkoutAttributeParser;
3131
private readonly ICurrencyService _currencyService;
32+
private readonly IHttpContextAccessor _httpContextAccessor;
3233
private readonly ByWeightShippingSettings _byWeightShippingSettings;
3334

3435
#endregion
@@ -39,18 +40,18 @@ public ByWeightShippingCalcPlugin(
3940
IWorkContext workContext,
4041
ITranslationService translationService,
4142
IProductService productService,
42-
IServiceProvider serviceProvider,
4343
ICheckoutAttributeParser checkoutAttributeParser,
4444
ICurrencyService currencyService,
45+
IHttpContextAccessor httpContextAccessor,
4546
ByWeightShippingSettings byWeightShippingSettings)
4647
{
4748
_shippingMethodService = shippingMethodService;
4849
_workContext = workContext;
4950
_translationService = translationService;
5051
_productService = productService;
51-
_serviceProvider = serviceProvider;
5252
_checkoutAttributeParser = checkoutAttributeParser;
5353
_currencyService = currencyService;
54+
_httpContextAccessor = httpContextAccessor;
5455
_byWeightShippingSettings = byWeightShippingSettings;
5556
}
5657
#endregion
@@ -61,14 +62,13 @@ public ByWeightShippingCalcPlugin(
6162
string storeId, string warehouseId, string countryId, string stateProvinceId, string zip)
6263
{
6364

64-
var shippingByWeightService = _serviceProvider.GetRequiredService<IShippingByWeightService>();
65-
var shippingByWeightSettings = _serviceProvider.GetRequiredService<ByWeightShippingSettings>();
65+
var shippingByWeightService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IShippingByWeightService>();
6666

6767
var shippingByWeightRecord = await shippingByWeightService.FindRecord(shippingMethodId,
6868
storeId, warehouseId, countryId, stateProvinceId, zip, weight);
6969
if (shippingByWeightRecord == null)
7070
{
71-
if (shippingByWeightSettings.LimitMethodsToCreated)
71+
if (_byWeightShippingSettings.LimitMethodsToCreated)
7272
return null;
7373

7474
return 0;
@@ -211,7 +211,7 @@ public async Task<GetShippingOptionResponse> GetShippingOptions(GetShippingOptio
211211

212212
var zip = getShippingOptionRequest.ShippingAddress.ZipPostalCode;
213213
double subTotal = 0;
214-
var priceCalculationService = _serviceProvider.GetRequiredService<IPricingService>();
214+
var priceCalculationService = _httpContextAccessor.HttpContext!.RequestServices.GetRequiredService<IPricingService>();
215215

216216
foreach (var packageItem in getShippingOptionRequest.Items)
217217
{

src/Plugins/Tax.CountryStateZip/Infrastructure/Cache/ModelCacheEventConsumer.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@ public class ModelCacheEventConsumer :
2323

2424
private readonly ICacheBase _cacheBase;
2525

26-
public ModelCacheEventConsumer(IServiceProvider serviceProvider)
26+
public ModelCacheEventConsumer(ICacheBase cacheBase)
2727
{
28-
//TODO inject static cache manager using constructor
29-
this._cacheBase = serviceProvider.GetRequiredService<ICacheBase>();
28+
this._cacheBase = cacheBase;
3029
}
31-
30+
3231
//tax rates
3332
public async Task Handle(EntityInserted<TaxRate> eventMessage, CancellationToken cancellationToken)
3433
{

0 commit comments

Comments
 (0)