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; } }
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; } } }