private IEnumerable <CustomEntityRenderSummary> Map( ICollection <CustomEntityVersion> dbResults, IDictionary <int, IEnumerable <PageRoutingInfo> > allRoutings, IEnumerable <ActiveLocale> allLocalesAsEnumerable ) { var results = new List <CustomEntityRenderSummary>(dbResults.Count); var allLocales = allLocalesAsEnumerable.ToDictionary(l => l.LocaleId); foreach (var dbResult in dbResults) { var entity = Mapper.Map <CustomEntityRenderSummary>(dbResult); if (dbResult.CustomEntity.LocaleId.HasValue) { entity.Locale = allLocales.GetOrDefault(dbResult.CustomEntity.LocaleId.Value); EntityNotFoundException.ThrowIfNull(entity.Locale, dbResult.CustomEntity.LocaleId.Value); } entity.DetailsPageUrls = MapPageRoutings(allRoutings.GetOrDefault(dbResult.CustomEntityId), dbResult); entity.Model = _customEntityDataModelMapper.Map(dbResult.CustomEntity.CustomEntityDefinitionCode, dbResult.SerializedData); results.Add(entity); } return(results); }
private CustomEntityRenderDetails MapCustomEntity(CustomEntityVersion dbResult) { _permissionValidationService.EnforceCustomEntityPermission <CustomEntityReadPermission>(dbResult.CustomEntity.CustomEntityDefinitionCode); var entity = Mapper.Map <CustomEntityRenderDetails>(dbResult); entity.Model = _customEntityDataModelMapper.Map(dbResult.CustomEntity.CustomEntityDefinitionCode, dbResult.SerializedData); return(entity); }
private Dictionary <int, CustomEntitySummary> Map(List <CustomEntitySummaryQueryModel> dbResults, int[] ids, IExecutionContext executionContext) { var results = new Dictionary <int, CustomEntitySummary>(dbResults.Count); var definitionCodes = dbResults.Select(r => r.CustomEntityDefinitionCode); _permissionValidationService.EnforceCustomEntityPermission <CustomEntityReadPermission>(definitionCodes, executionContext.UserContext); foreach (var dbResult in dbResults) { var entity = Mapper.Map <CustomEntitySummary>(dbResult); entity.Model = _customEntityDataModelMapper.Map(dbResult.CustomEntityDefinitionCode, dbResult.SerializedData); results.Add(entity.CustomEntityId, entity); } return(results); }
public async Task <CustomEntityRenderDetails> ExecuteAsync(GetCustomEntityRenderDetailsByIdQuery query, IExecutionContext executionContext) { var dbQuery = _dbContext .CustomEntityVersions .AsNoTracking() .FilterByCustomEntityId(query.CustomEntityId) .FilterByWorkFlowStatusQuery(query.WorkFlowStatus, query.CustomEntityVersionId) .Include(e => e.CustomEntity) .Include(e => e.CustomEntity.Locale); var dbResult = await dbQuery.FirstOrDefaultAsync(); _permissionValidationService.EnforceCustomEntityPermission <CustomEntityReadPermission>(dbResult.CustomEntity.CustomEntityDefinitionCode); var entity = Mapper.Map <CustomEntityRenderDetails>(dbResult); entity.Model = _customEntityDataModelMapper.Map(dbResult.CustomEntity.CustomEntityDefinitionCode, dbResult.SerializedData); entity.Sections = await _dbContext .PageTemplateSections .AsNoTracking() .Where(s => s.PageTemplateId == query.PageTemplateId) .ProjectTo <CustomEntityPageSectionRenderDetails>() .ToListAsync(); var dbModules = await _dbContext .CustomEntityVersionPageModules .AsNoTracking() .Where(m => m.CustomEntityVersionId == entity.CustomEntityVersionId) .ToListAsync(); await _entityVersionPageModuleMapper.MapSectionsAsync <CustomEntityVersionPageModuleRenderDetails>(dbModules, entity.Sections, query.WorkFlowStatus, executionContext); var routingQuery = new GetPageRoutingInfoByCustomEntityIdQuery(dbResult.CustomEntityId); var routing = await _queryExecutor.ExecuteAsync(routingQuery, executionContext); entity.DetailsPageUrls = MapPageRoutings(routing, dbResult); return(entity); }
private CustomEntityRoute[] MapRoutes(GetCustomEntityRoutesByDefinitionCodeQuery query, List <CustomEntity> dbRoutes) { var definition = _customEntityDefinitionRepository.GetByCode(query.CustomEntityDefinitionCode); EntityNotFoundException.ThrowIfNull(definition, query.CustomEntityDefinitionCode); var routingDataProperties = definition .GetDataModelType() .GetProperties() .Where(prop => prop.IsDefined(typeof(CustomEntityRouteDataAttribute), false)); var routes = new List <CustomEntityRoute>(dbRoutes.Count); foreach (var dbRoute in dbRoutes) { var route = Mapper.Map <CustomEntityRoute>(dbRoute); var versions = new List <CustomEntityVersionRoute>(); route.Versions = versions; routes.Add(route); foreach (var dbVersion in dbRoute.CustomEntityVersions) { var version = Mapper.Map <CustomEntityVersionRoute>(dbVersion); versions.Add(version); if (routingDataProperties.Any()) { // Parse additional routing data properties var model = _customEntityDataModelMapper.Map(query.CustomEntityDefinitionCode, dbVersion.SerializedData); foreach (var routingDataProperty in routingDataProperties) { version.AdditionalRoutingData.Add(routingDataProperty.Name, Convert.ToString(routingDataProperty.GetValue(model))); } } } } return(routes.ToArray()); }