public Navigation GetNavigationBySiteAndSection(string site, string section) { var navigation = NavigationRepository.GetSingle(x => x.MicroSiteId.Equals(site, StringComparison.CurrentCultureIgnoreCase) && x.Section.Equals(section, StringComparison.CurrentCultureIgnoreCase)); if (navigation == null) { return(null); } navigation.NavigationItems = NavigationItemRepository.GetList(x => x.NavigationId.Equals(navigation.Id)); return(navigation); }
public async Task SetValueAsync(IDeferredItem <TItem> item, object deserializedValue, IDataTransaction dataTransaction) { IEngineRepository <TNav> navRepository = new NavigationItemRepository <TItem, TNav>(item, _navTools.NavExpression, _navTools.Setter); var itemData = new RestItemData(deserializedValue); var navLocatorCreator = new NavigationItemLocatorCreator <TNav>(_subContext); DeferredItemBase <TNav> deferredItem = await navLocatorCreator.LocateOrCreateItemAsync(navRepository, itemData, item.LoadAsync); try { IDataTransaction transaction = new VoidTransaction(); // we commit the transaction in the parent. TODO optional save-as-you-go ? var navContext = new FullEngineContext <TNav>(transaction, navRepository, _subContext); var navEngineItem = new EngineRestItem <TNav>(navContext, deferredItem); Acknowledgment acknowledgment = await navEngineItem.EditAsync(itemData); } catch (RestApiException ex) { throw new SubWriterException(ex, item); } }