Skip to content

Commit a5fc163

Browse files
Try alternative approach for looking up checkout page from email
1 parent 7216eba commit a5fc163

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

src/Umbraco.Commerce.Checkout/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutGiftCardEmail.cshtml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
@using Umbraco.Cms.Core.Services.Navigation
12
@inherits UmbracoCommerceRazorTemplateView<GiftCardReadOnly>
23
@{
34
// Get order entities
45
var store = await UmbracoCommerceApi.GetStoreAsync(Model.StoreId);
56

67
// Lookup the umbraco commerce checkout page for the associated orders store
78
// so that we can extract relevant settings to configure the email template
8-
var ctx = this.GetRequiredService<IUmbracoContextFactory>().EnsureUmbracoContext().UmbracoContext;
9-
var checkoutContentType = ctx.Content.GetContentType(UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage);
10-
var checkoutPages = ctx.Content.GetByContentType(checkoutContentType);
11-
var checkoutPage = checkoutPages.First(x => x.GetStore()?.Id == Model.StoreId);
9+
var contentCache = this.GetRequiredService<IPublishedContentCache>();
10+
var nav = this.GetRequiredService<IDocumentNavigationQueryService>();
11+
var rootKeys = nav.TryGetRootKeys(out var keys1) ? keys1 : [];
12+
var nodeKeys = rootKeys.SelectMany(key => nav.TryGetDescendantsKeysOfType(key, UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage, out var keys2) ? keys2 : []);
13+
var checkoutPage = nodeKeys.Select(x => contentCache.GetById(x)).FirstOrDefault(x => x.GetStore()?.Id == Model.StoreId);
1214

1315
var uccStoreLogoUrl = checkoutPage.Value<IPublishedContent>("uccStoreLogo")?.Url();
1416
var uccStoreTsAndCsUrl = checkoutPage.Value<IPublishedContent>("uccTermsAndConditionsPage")?.Url();

src/Umbraco.Commerce.Checkout/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutOrderConfirmationEmail.cshtml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@using Umbraco.Cms.Core.Services.Navigation
12
@inherits UmbracoCommerceRazorTemplateView<OrderReadOnly>
23
@{
34
// Get order entities
@@ -23,12 +24,11 @@
2324

2425
// Lookup the umbraco commerce checkout page for the associated orders store
2526
// so that we can extract relevant settings to configure the email template
26-
var ctx = this.GetRequiredService<IUmbracoContextFactory>().EnsureUmbracoContext().UmbracoContext;
27-
// TODO - Dinh:
28-
var publishedContentTypeCache = this.GetRequiredService<IPublishedContentTypeCache>();
29-
var checkoutContentType = ctx.Content.GetContentType(UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage);
30-
var checkoutPages = ctx.Content.GetByContentType(checkoutContentType);
31-
var checkoutPage = checkoutPages.First(x => x.GetStore()?.Id == Model.StoreId);
27+
var contentCache = this.GetRequiredService<IPublishedContentCache>();
28+
var nav = this.GetRequiredService<IDocumentNavigationQueryService>();
29+
var rootKeys = nav.TryGetRootKeys(out var keys1) ? keys1 : [];
30+
var nodeKeys = rootKeys.SelectMany(key => nav.TryGetDescendantsKeysOfType(key, UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage, out var keys2) ? keys2 : []);
31+
var checkoutPage = nodeKeys.Select(x => contentCache.GetById(x)).FirstOrDefault(x => x.GetStore()?.Id == Model.StoreId);
3232

3333
var uccStoreLogoUrl = checkoutPage.Value<IPublishedContent>("uccStoreLogo")?.Url();
3434
var uccStoreTsAndCsUrl = checkoutPage.Value<IPublishedContent>("uccTermsAndConditionsPage")?.Url();

src/Umbraco.Commerce.Checkout/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutOrderErrorEmail.cshtml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
@using Umbraco.Cms.Core.Services.Navigation
12
@inherits UmbracoCommerceRazorTemplateView<OrderReadOnly>
23
@{
34
// Get order entities
45
var store = await UmbracoCommerceApi.GetStoreAsync(Model.StoreId);
56

67
// Lookup the umbraco commerce checkout page for the associated orders store
78
// so that we can extract relevant settings to configure the email template
8-
var ctx = this.GetRequiredService<IUmbracoContextFactory>().EnsureUmbracoContext().UmbracoContext;
9-
var checkoutContentType = ctx.Content.GetContentType(UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage);
10-
var checkoutPages = ctx.Content.GetByContentType(checkoutContentType);
11-
var checkoutPage = checkoutPages.First(x => x.GetStore()?.Id == Model.StoreId);
9+
var contentCache = this.GetRequiredService<IPublishedContentCache>();
10+
var nav = this.GetRequiredService<IDocumentNavigationQueryService>();
11+
var rootKeys = nav.TryGetRootKeys(out var keys1) ? keys1 : [];
12+
var nodeKeys = rootKeys.SelectMany(key => nav.TryGetDescendantsKeysOfType(key, UmbracoCommerceCheckoutConstants.ContentTypes.Aliases.CheckoutPage, out var keys2) ? keys2 : []);
13+
var checkoutPage = nodeKeys.Select(x => contentCache.GetById(x)).FirstOrDefault(x => x.GetStore()?.Id == Model.StoreId);
1214

1315
var uccStoreLogoUrl = checkoutPage.Value<IPublishedContent>("uccStoreLogo")?.Url();
1416
var uccStoreTsAndCsUrl = checkoutPage.Value<IPublishedContent>("uccTermsAndConditionsPage")?.Url();

0 commit comments

Comments
 (0)