private T GetMappedResult <T>(ResourceResponse <Document> upsertResponse) where T : ContentModelBase { string resourceType = upsertResponse.Resource.GetPropertyValue <string>("contentType"); switch (resourceType) { case "Banner": BannerContentDocument bannerDoc = (dynamic)upsertResponse.Resource; return(_map.Mapper.Map <T>(bannerDoc)); case "Simple": SimpleContentDocument simpleDoc = (dynamic)upsertResponse.Resource; return(_map.Mapper.Map <T>(simpleDoc)); case "ListLanding": ListLandingContentDocument listDoc = (dynamic)upsertResponse.Resource; return(_map.Mapper.Map <T>(listDoc)); case "ListItem": ListDetailContentDocument listItemDoc = (dynamic)upsertResponse.Resource; return(_map.Mapper.Map <T>(listItemDoc)); case "MediaGallery": MediaGalleryContentDocument mediaDoc = (dynamic)upsertResponse.Resource; return(_map.Mapper.Map <T>(mediaDoc)); default: return(null); } }
public async Task <ContentModelBase> GetContentAsync(string contentId) { SiteContentItemDocument content = null; //get content from docdb //create document query var query = (from cont in _docDbClient.CreateDocumentQuery <SiteContentItemDocument>(_config.SiteContentCollectionUrl) where cont.Id == contentId select cont).AsDocumentQuery(); //async request of query results var response = await query.ExecuteNextAsync <SiteContentItemDocument>().ConfigureAwait(false); if (response.Count == 1) { // we got some data, so populate the content item content = response.FirstOrDefault(); } //if we got content from the db, map to the model type if (content != null) { ContentModelBase mappedResult; switch (content.ContentType) { case "Banner": BannerContentDocument bannerDoc = (dynamic)content; mappedResult = _map.Mapper.Map <BannerContentDocument, BannerContent>(bannerDoc); break; case "Simple": SimpleContentDocument simpleDoc = (dynamic)content; mappedResult = _map.Mapper.Map <SimpleContentDocument, SimpleContent>(simpleDoc); break; case "ListLanding": ListLandingContentDocument listDoc = (dynamic)content; mappedResult = _map.Mapper.Map <ListLandingContentDocument, ListLandingContent>(listDoc); break; case "ListItem": ListDetailContentDocument listItemDoc = (dynamic)content; mappedResult = _map.Mapper.Map <ListDetailContentDocument, ListItemContent>(listItemDoc); break; case "MediaGallery": MediaGalleryContentDocument mediaDoc = (dynamic)content; mappedResult = _map.Mapper.Map <MediaGalleryContentDocument, MediaGalleryContent>(mediaDoc); break; default: return(null); } return(mappedResult); } else { return(null); } }