コード例 #1
0
        private void UpdateTemplates(
            IExecutionContext executionContext,
            PageModuleType existingModule,
            PageModuleTypeFileDetails fileDetails
            )
        {
            var templatesToDelete = existingModule
                                    .PageModuleTemplates
                                    .Where(mt => !fileDetails.Templates.Any(t => t.FileName.Equals(mt.FileName, StringComparison.OrdinalIgnoreCase)))
                                    .ToList();

            _dbContext.PageModuleTypeTemplates.RemoveRange(templatesToDelete);

            foreach (var fileTemplate in fileDetails.Templates)
            {
                var existingTemplate = existingModule
                                       .PageModuleTemplates
                                       .FirstOrDefault(t => t.FileName.Equals(fileTemplate.FileName, StringComparison.OrdinalIgnoreCase));

                if (existingTemplate == null)
                {
                    existingTemplate            = new PageModuleTypeTemplate();
                    existingTemplate.CreateDate = executionContext.ExecutionDate;
                    existingModule.PageModuleTemplates.Add(existingTemplate);
                }

                existingTemplate.FileName    = fileTemplate.FileName;
                existingTemplate.Name        = fileTemplate.Name;
                existingTemplate.Description = fileTemplate.Description;
            }
        }
コード例 #2
0
        private async Task UpdateModulesAsync(
            IExecutionContext executionContext,
            Dictionary <string, PageModuleType> dbPageModules,
            Dictionary <string, IPageModuleDataModel> moduleDataModels
            )
        {
            foreach (var model in moduleDataModels)
            {
                var  fileName       = model.Key;
                var  existingModule = dbPageModules.GetOrDefault(fileName);
                bool isUpdated      = false;

                var fileDetails = await _queryExecutor.ExecuteAsync(new GetPageModuleTypeFileDetailsByFileNameQuery(fileName), executionContext);

                var name = string.IsNullOrWhiteSpace(fileDetails.Name) ? TextFormatter.PascalCaseToSentence(fileName) : fileDetails.Name;
                if (existingModule == null)
                {
                    existingModule            = new PageModuleType();
                    existingModule.FileName   = fileName;
                    existingModule.CreateDate = executionContext.ExecutionDate;
                    _dbContext.PageModuleTypes.Add(existingModule);
                    isUpdated = true;
                }

                if (existingModule.IsArchived)
                {
                    isUpdated = true;
                    existingModule.IsArchived = false;
                }

                if (existingModule.Name != name)
                {
                    isUpdated           = true;
                    existingModule.Name = name;
                }

                if (existingModule.Description != fileDetails.Description)
                {
                    isUpdated = true;
                    existingModule.Description = fileDetails.Description;
                }

                UpdateTemplates(executionContext, existingModule, fileDetails);

                if (isUpdated)
                {
                    existingModule.UpdateDate = executionContext.ExecutionDate;
                }
            }
        }