Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }