Example #1
0
        private void UpdateRegions(
            PageTemplateFile fileTemplate,
            PageTemplateFileInfo fileTemplateDetails,
            PageTemplate dbPageTemplate,
            IExecutionContext executionContext
            )
        {
            // De-dup region names
            var duplicateRegionName = fileTemplateDetails
                                      .Regions
                                      .GroupBy(s => s.Name.ToLowerInvariant())
                                      .FirstOrDefault(g => g.Count() > 1);

            if (duplicateRegionName != null)
            {
                throw new PageTemplateRegistrationException($"Dulpicate template region '{ duplicateRegionName.First().Name }' in template { fileTemplate.VirtualPath }");
            }

            // Deletions
            var regionsToDelete = dbPageTemplate
                                  .PageTemplateRegions
                                  .Where(ts => !fileTemplateDetails.Regions.Any(fs => ts.Name.Equals(fs.Name, StringComparison.OrdinalIgnoreCase)))
                                  .ToList();

            foreach (var regionToDelete in regionsToDelete)
            {
                _dbContext.PageTemplateRegions.Remove(regionToDelete);
            }

            // Updates/Additions
            foreach (var fileRegion in fileTemplateDetails.Regions)
            {
                var existing = dbPageTemplate
                               .PageTemplateRegions
                               .FirstOrDefault(s => s.Name.Equals(fileRegion.Name, StringComparison.OrdinalIgnoreCase));

                if (existing == null)
                {
                    existing = new PageTemplateRegion();
                    existing.PageTemplate = dbPageTemplate;
                    existing.CreateDate   = executionContext.ExecutionDate;
                    _dbContext.PageTemplateRegions.Add(existing);
                }

                // casing might have changed
                if (existing.Name != fileRegion.Name)
                {
                    existing.Name       = fileRegion.Name;
                    existing.UpdateDate = executionContext.ExecutionDate;
                }

                // this will detach region data but there's no migrating that...
                if (existing.IsCustomEntityRegion != fileRegion.IsCustomEntityRegion)
                {
                    existing.IsCustomEntityRegion = fileRegion.IsCustomEntityRegion;
                    existing.UpdateDate           = executionContext.ExecutionDate;
                }
            }
        }
 protected PageTemplateRegionDetails MapRegion(PageTemplateRegion dbRegion)
 {
     return(new PageTemplateRegionDetails()
     {
         CreateDate = dbRegion.CreateDate,
         IsCustomEntityRegion = dbRegion.IsCustomEntityRegion,
         Name = dbRegion.Name,
         PageTemplateId = dbRegion.PageTemplateId,
         PageTemplateRegionId = dbRegion.PageTemplateRegionId,
         UpdateDate = dbRegion.UpdateDate
     });
 }
 private PageTemplateRegionDetails MapRegion(PageTemplateRegion dbRegion)
 {
     return(new PageTemplateRegionDetails()
     {
         CreateDate = DbDateTimeMapper.AsUtc(dbRegion.CreateDate),
         IsCustomEntityRegion = dbRegion.IsCustomEntityRegion,
         Name = dbRegion.Name,
         PageTemplateId = dbRegion.PageTemplateId,
         PageTemplateRegionId = dbRegion.PageTemplateRegionId,
         UpdateDate = DbDateTimeMapper.AsUtc(dbRegion.UpdateDate)
     });
 }
Example #4
0
        private async Task ValidateTemplateUsedByPage(AddCustomEntityVersionPageBlockCommand command, PageTemplateRegion templateRegion)
        {
            var isRegionInTemplate = await _dbContext
                                     .PageVersions
                                     .FilterActive()
                                     .FilterByPageId(command.PageId)
                                     .AnyAsync(p => p.PageTemplateId == templateRegion.PageTemplateId);

            if (!isRegionInTemplate)
            {
                throw new Exception($"Error adding custom entity page block. The page template region {command.PageTemplateRegionId} does not belong to a template referenced by the page {command.PageId}");
            }
        }