public static async Task <GetSiteMapResult> SitemapUrlAsync(ItemDataModel itemDataModel, IDataFactory dataFactory, IRouteManager routeManager) { var isSecure = true; var siteBusinessModel = (SiteBusinessModel)itemDataModel.Data; var input = new FindPathInput(); input.DomainDatas = new Dictionary <string, string>(); input.DomainDatas.Add("site", UrlHelper.NormalizeTextForUrl(siteBusinessModel.Name)); input.MasterDomainId = siteBusinessModel.MasterDomainId; input.IsSecure = null; input.Datas = new Dictionary <string, string>(); input.Datas.Add("controller", "Seo"); input.Datas.Add("action", "Sitemap"); var result = await routeManager.FindDomainPathAsync(input); var getSiteMapResult = new GetSiteMapResult(); getSiteMapResult.BaseUrl = UrlHelper.Concat(result.BaseUrl, result.PreUrl); getSiteMapResult.Url = result.FullUrl; return(getSiteMapResult); }
public async Task <FindPathResult> GetUrlAsync(ICurrentRequest currentRequest, string action, string controller, object additionalValues) { if (currentRequest == null) { throw new ArgumentException("currentRequest is null"); } var input = new FindPathInput(); input.DomainDatas = currentRequest.DomainDatas; input.DomainId = currentRequest.DomainId.ToString(CultureInfo.InvariantCulture); input.IsSecure = currentRequest.IsSecure; input.Port = currentRequest.Port; input.Datas = new Dictionary <string, string>(); input.Datas.Add("action", action); input.Datas.Add("controller", controller); var values = UrlHelper.GetValues(additionalValues); if (values != null) { foreach (var value in values) { input.Datas.Add(value.Key, value.Value); } } return(await _routeManager.FindDomainPathAsync(input)); }
protected override async Task ActionAsync() { if (string.IsNullOrEmpty(Input.Data.SiteName)) { throw new ArgumentException("SiteName is empty"); } if (string.IsNullOrEmpty(Input.Data.ModuleId)) { throw new ArgumentException("ModuleId is empty"); } if (string.IsNullOrEmpty(Input.Data.CategoryId)) { throw new ArgumentException("CategoryId is empty"); } var checkAddSiteInput = new CheckAddSiteInput { CategoryId = Input.Data.CategoryId, ModuleId = Input.Data.ModuleId, SiteId = Input.Data.SiteId, SiteName = Input.Data.SiteName }; if (await CheckAddSiteCommand.IsSiteAlreadyExistAsync(_dataFactorySource, _dataFactoryDestination, checkAddSiteInput)) { Result.ValidationResult.AddError("SITE_ADRESS_ALREADY_EXIST", "L'adresse demandé existe déjà"); } var addSiteItemBusinessModel = (AddSiteBusinessModel) (await _dataFactorySource.ItemRepository.GetItemAsync(Input.Data.Site.SiteId, Input.Data.ModuleId)).Data; var template = addSiteItemBusinessModel.Templates.First(t => t.CategoryId == Input.Data.CategoryId); var newSiteName = template.Title + " " + Input.Data.SiteName; var itemDataModelCurrentSite = await TransfertSiteCommand.GetSiteAsync(template.SiteId, _dataFactorySource); var currentSiteBusinessModel = (SiteBusinessModel)itemDataModelCurrentSite.Data; #region duplication du site var createFromSiteModel = new CreateFromSiteModel(); createFromSiteModel.CategoryId = template.CategoryId; createFromSiteModel.SiteName = newSiteName; createFromSiteModel.Title = Input.Data.SiteName; createFromSiteModel.UserId = Input.UserId; var moduleSite = _businessModuleFactory.GetModuleCreate(itemDataModelCurrentSite.Module); var siteItemDataModel = await moduleSite.CreateFromAsync(_dataFactorySource, _dataFactoryDestination, itemDataModelCurrentSite, null, false, createFromSiteModel); #endregion await _dataFactoryDestination.SaveChangeAsync(); await _cacheProvider.UpdateCacheAsync(siteItemDataModel.Id); #region Association Site/User await SaveSiteUserCommand.CreateNewSiteUserAsync(_siteUserService, _userService, siteItemDataModel.Id, Input.UserId); #endregion #region Generation Url nouveaux site var siteBusinessModel = (SiteBusinessModel)siteItemDataModel.Data; var input = new FindPathInput(); input.DomainDatas = new Dictionary <string, string>(); input.DomainDatas.Add("site", UrlHelper.NormalizeTextForUrl(newSiteName)); if (Input.Data.Port.HasValue) { input.Port = Input.Data.Port.ToString(); } //TODO règle temporaire pour le développement var isLocalhost = Input.Data.Site.DomainDatas.ContainsKey("domain") && Input.Data.Site.DomainDatas["domain"] == "localhost"; if (isLocalhost) { input.DomainDatas.Add("domain", Input.Data.Site.DomainDatas["domain"]); } input.MasterDomainId = siteBusinessModel.MasterDomainId; input.IsSecure = null; input.Datas = await _routeProvider.GetRootMetadataAsync(siteItemDataModel.Id); var result = await _routeManager.FindDomainPathAsync(input); #endregion // On reconstitue l'Url var protocole = Input.Data.IsSecure ? _routeProvider.ProtocolSecure : _routeProvider.ProtocolDefault; var port = string.Empty; if (Input.Data.Port.HasValue && Input.Data.Port.Value != 80 && Input.Data.Port.Value != 443) { port = string.Concat(":", Input.Data.Port.Value.ToString(CultureInfo.InvariantCulture)); } var siteUrl = string.Concat(protocole, "://", UrlHelper.Concat(string.Concat(result.RequestDomain, port), result.Path)); await SendEmailAsync(newSiteName, siteUrl, Input.UserId); Result.Data = UrlHelper.Concat(siteUrl, "/site/creation/confirmation?dm=false"); }