public IActionResult Edit(DynamicModuleViewModel <T> configuration)
        {
            var dynamicModuleModelRequest = m_dynamicModuleManager.GetById(configuration.Id);

            if (dynamicModuleModelRequest.HasError)
            {
                return(NotFound(configuration.Id));
            }

            var dynamicModuleModel = dynamicModuleModelRequest.Result;

            var moduleInfo = m_dynamicModuleProvider.GetContextByNameOrGuid(
                dynamicModuleModel.Name,
                dynamicModuleModel.ModuleGuid
                );

            if (moduleInfo == null)
            {
                return(NotFound(configuration.Id));
            }

            var configurationDto = moduleInfo.ModuleConfiguration ?? moduleInfo.EmptyModuleConfiguration;

            configuration.CustomConfigurationViewModel.Name = configuration.Name;

            moduleInfo.ModuleConfigurationManager.HydrateModuleConfiguration(
                configurationDto,
                configuration.CustomConfigurationViewModel
                );

            m_dynamicModuleManager.UpdateConfiguration(
                configuration.Id,
                configurationDto,
                moduleInfo.LibModuleInfo.Version
                );

            var viewModelWithMainLogo = configuration.CustomConfigurationViewModel as IModuleMainLogoViewModel;

            if (viewModelWithMainLogo?.MainLogo != null)
            {
                if (ContentType.ImageContentTypes.Contains(viewModelWithMainLogo.MainLogo.ContentType))
                {
                    var dynamicModuleBlobRequest = m_dynamicModuleManager.GetDynamicModuleBlob(
                        configuration.Id,
                        DynamicModuleBlobEnum.MainLogo
                        );

                    var mainLogoStream        = viewModelWithMainLogo.MainLogo.OpenReadStream();
                    var mainLogoFileExtension = Path.GetExtension(viewModelWithMainLogo.MainLogo.FileName).Substring(1).ToLower();

                    var dynamicModuleBlob = dynamicModuleBlobRequest.Result;

                    if (dynamicModuleBlobRequest.Succeeded && dynamicModuleBlob != null)
                    {
                        m_dynamicModuleManager.UpdateDynamicModuleBlob(
                            dynamicModuleBlob.Id,
                            mainLogoStream,
                            mainLogoFileExtension
                            );
                    }
                    else
                    {
                        m_dynamicModuleManager.CreateDynamicModuleBlob(
                            configuration.Id,
                            DynamicModuleBlobEnum.MainLogo,
                            mainLogoStream,
                            mainLogoFileExtension
                            );
                    }
                }
            }

            return(RedirectToAction("Edit", "DynamicModule", new
            {
                id = configuration.Id
            }));
        }