Hi,
You could use IContentRepository, like with any other type of content. Something like this (untested):
var repository = ServiceLocator.Current.GetInstance<IContentRepository>(); var referenceConverter = ServiceLocator.Current.GetInstance<ReferenceConverter>(); var root = referenceConverter.GetRootLink(); var catalog = repository.GetDefault<CatalogContent>(root); catalog.Name = "My catalog"; repository.Save(catalog, SaveAction.Publish, AccessLevel.NoAccess);
Hi Johan
I had presumed that would be the case as I am using the above to create category nodes and product entries. However when I run th above code I get the following error
No implementation of ICatalogContentCommitter available to handle content of type CatalogContentProxy
at EPiServer.Commerce.Catalog.Provider.CatalogContentCommitterHandler.GetCommitter(CatalogContentBase content)
at EPiServer.Commerce.Catalog.Provider.CatalogContentCommitterHandler.Save(CatalogContentBase content)
at EPiServer.Commerce.Catalog.Provider.CatalogContentDraftStore.<>c__DisplayClass2e.<CommitChanges>b__2d()
at EPiServer.Commerce.Catalog.Provider.CatalogEventHandler.ExecuteWithLocalEventsDiabled(Action action)
at EPiServer.Commerce.Catalog.Provider.CatalogContentDraftStore.CommitChanges(CatalogContentBase content)
at EPiServer.Commerce.Catalog.Provider.CatalogContentDraftStore.SaveInternal(CatalogContentBase content, SaveAction saveAction, String userName, Boolean forceCurrentVersion, Boolean newVersionRequired, Boolean delayedPublish)
at EPiServer.Commerce.Catalog.Provider.CatalogContentDraftStore.Save(IContent content, SaveAction saveAction)
at EPiServer.Commerce.Catalog.Provider.CatalogContentProvider.Save(IContent content, SaveAction action)
at EPiServer.DataFactory.Save(IContent content, SaveAction action, AccessLevel access)
at EPiServer.Commerce.Sample.Templates.Sample.Pages.ShoppingOverview.Page_Load(Object sender, EventArgs e) in c:\EPiServer7.5\EPiServerSiteMVC7.5DemoInstallerComm\wwwroot\Templates\Sample\Pages\ShoppingOverview.aspx.cs:line 116
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Kind Regards
Sandeep
Hmmm I don't know about the latest version of Commerce, but you had to create catalogs within Commerce Manager before. I thought that was fixed in later versions though.
Hi All
Found a solution. Aparently this was not supported in version 7.5. In Episerver Version 7.9 and above you can do it using the following. Please note the default properties below are mandatory -
var repository = ServiceLocator.Current.GetInstance<IContentRepository>(); var referenceConverter = ServiceLocator.Current.GetInstance<Mediachase.Commerce.Catalog.ReferenceConverter>(); var root = referenceConverter.GetRootLink(); var catalog = repository.GetDefault<CatalogContent>(root); catalog.Name = "My catalog2"; catalog.DefaultCurrency = "USD"; catalog.DefaultLanguage = "en"; catalog.WeightBase = "Pounds"; repository.Save(catalog, SaveAction.Publish, EPiServer.Security.AccessLevel.NoAccess);
Kind Regards
Sandeep
Hi
Could someone please help me out on how to create a new catalog in code for EPiserver Commerce.
ICatalogContentCommitter ??
Kind Regards
Sandeep