示例#1
0
        private Assortment CreateAssortment(StructureInfo structureInfo, string name, string domainName)
        {
            var assortment = new Assortment
            {
                Id = structureInfo.ProductCatalog.Assortment.Id + _slugifyService.Slugify(CultureInfo.CurrentCulture, name),
                AccessControlList = structureInfo.ProductCatalog.Assortment.AccessControlList.MakeWritable()
            };

            foreach (var language in _languageService.GetAll())
            {
                assortment.Localizations[language.CultureInfo].Name = name;
            }

            _assortmentService.Create(assortment);
            return(assortment);
        }
        private bool ValidateImportForm(DeploymentViewModel.ImportViewModel importForm)
        {
            var isValid = true;

            if (string.IsNullOrWhiteSpace(importForm.PackageName))
            {
                isValid = false;
            }

            if (string.IsNullOrWhiteSpace(importForm.Name))
            {
                ModelState.AddModelError($"ImportForm.{nameof(importForm.Name)}", "accelerator.deployment.validation.required".AsAngularResourceString());
                isValid = false;
            }
            else
            {
                var name = _slugifyService.Slugify(CultureInfo.CurrentCulture, importForm.Name);

                if (_channelService.Get(name) != null)
                {
                    ModelState.AddModelError($"ImportForm.{nameof(importForm.Name)}", "accelerator.deployment.validation.channelexists".AsAngularResourceString());
                    isValid = false;
                }
            }

            var tempDomainName = !string.IsNullOrEmpty(importForm.DomainName) && importForm.DomainName.Contains("://") ? importForm.DomainName : "http://" + importForm.DomainName;

            if (string.IsNullOrWhiteSpace(importForm.DomainName))
            {
                ModelState.AddModelError($"ImportForm.{nameof(importForm.DomainName)}", "accelerator.deployment.validation.required".AsAngularResourceString());
                isValid = false;
            }
            else if (importForm.DomainName.Contains(" "))
            {
                ModelState.AddModelError($"ImportForm.{nameof(importForm.DomainName)}", "accelerator.deployment.validation.space".AsAngularResourceString());
                isValid = false;
            }
            else if (!Uri.TryCreate(tempDomainName, UriKind.RelativeOrAbsolute, out var uri))
            {
                ModelState.AddModelError($"ImportForm.{nameof(importForm.DomainName)}", "general.hostnameisnotvalid".AsAngularResourceString());
                isValid = false;
            }
            else
            {
                var domain  = AcceleratorPackage.ExtractDomainName(importForm.DomainName);
                var urlPath = AcceleratorPackage.ExtractUrlPath(importForm.DomainName).NullIfEmpty();

                if (urlPath?.Contains("/") == true)
                {
                    ModelState.AddModelError($"ImportForm.{nameof(importForm.DomainName)}", "accelerator.deployment.validation.urlpath".AsAngularResourceString());
                    isValid = false;
                }
                else
                {
                    var domainName = _domainNameService.Get(domain);
                    if (domainName != null && _channelService.GetAll().Any(x => x
                                                                           .DomainNameLinks
                                                                           .Any(z => z.DomainNameSystemId == domainName.SystemId && string.Equals(z.UrlPrefix, urlPath, StringComparison.OrdinalIgnoreCase))))
                    {
                        ModelState.AddModelError($"ImportForm.{nameof(importForm.DomainName)}", "accelerator.deployment.validation.domainnameexists".AsAngularResourceString());
                        isValid = false;
                    }
                }
            }

            return(isValid);
        }