public Task <WebServiceTemplateTag> GetWebServiceTemplateTag(PageDefinitionDO pageDefinition) { var activityCategories = new List <ActivityCategoryDTO>(); foreach (var tag in pageDefinition.Tags) { var activityCategoryDO = _activityCategory.GetByName(tag, false); if (activityCategoryDO == null) { continue; } activityCategories.Add(Mapper.Map <ActivityCategoryDTO>(activityCategoryDO)); } return(Task.FromResult(new WebServiceTemplateTag(activityCategories))); }
public void CreateOrUpdate(PageDefinitionDO pageDefinitionDO) { if (pageDefinitionDO.Id > 0) { using (var uow = _uowFactory.Create()) { var pageDefinitionToUpdate = uow.PageDefinitionRepository.GetByKey(pageDefinitionDO.Id); pageDefinitionToUpdate.Title = pageDefinitionDO.Title; pageDefinitionToUpdate.Description = pageDefinitionDO.Description; pageDefinitionToUpdate.PageName = pageDefinitionDO.PageName; pageDefinitionToUpdate.Tags = pageDefinitionDO.Tags; pageDefinitionToUpdate.Type = pageDefinitionDO.Type; pageDefinitionToUpdate.Url = pageDefinitionDO.Url; pageDefinitionToUpdate.LastUpdated = DateTimeOffset.Now; pageDefinitionToUpdate.PlanTemplatesIds.AddRange(pageDefinitionDO.PlanTemplatesIds); uow.SaveChanges(); } } else { using (var uow = _uowFactory.Create()) { var existedPd = uow.PageDefinitionRepository.FindOne(x => x.PageName == pageDefinitionDO.PageName && x.Type == pageDefinitionDO.Type); if (existedPd == null) { uow.PageDefinitionRepository.Add(pageDefinitionDO); uow.SaveChanges(); } else { existedPd.Title = pageDefinitionDO.Title; existedPd.Description = pageDefinitionDO.Description; existedPd.PageName = pageDefinitionDO.PageName; existedPd.Tags = pageDefinitionDO.Tags; existedPd.Type = pageDefinitionDO.Type; existedPd.Url = pageDefinitionDO.Url; existedPd.LastUpdated = DateTimeOffset.Now; existedPd.PlanTemplatesIds.AddRange(pageDefinitionDO.PlanTemplatesIds); uow.SaveChanges(); } } } }
public async Task Generate(PageDefinitionDO pageDefinition, string fr8AccountId) { var tag = await _tagGenerator.GetWebServiceTemplateTag(pageDefinition); var pageName = GeneratePageNameFromTags(pageDefinition.Tags); var curRelatedPlans = new List <PublishPlanTemplateDTO>(); foreach (var planTemplateId in pageDefinition.PlanTemplatesIds) { var planDto = _planTemplateService.GetPlanTemplateDTO(fr8AccountId, Guid.Parse(planTemplateId)).Result; if (planDto != null) { curRelatedPlans.Add(planDto); } } var relatedPlans = new List <Tuple <string, string, string> >(); foreach (var publishPlanTemplateDTO in curRelatedPlans) { relatedPlans.Add(new Tuple <string, string, string>( publishPlanTemplateDTO.Name, publishPlanTemplateDTO.Description ?? publishPlanTemplateDTO.Name, CloudConfigurationManager.GetSetting("HubApiUrl").Replace("/api/v1/", "") + "/dashboard/plans/" + publishPlanTemplateDTO.ParentPlanId + "/builder?viewMode=plan")); } await _templateGenerator.Generate(new PlanCategoryTemplate(), pageName, new Dictionary <string, object> { ["Name"] = pageName, ["Tags"] = tag.TagsWithIcons, ["RelatedPlans"] = relatedPlans }); }
public Task <bool> HasGeneratedPage(PageDefinitionDO pageDefinition) { var pageName = pageDefinition.UrlString.Substring(pageDefinition.UrlString.LastIndexOf("/") + 1); return(Task.FromResult(File.Exists(Path.Combine(_templateGenerator.OutputFolder, pageName)))); }
public async Task <Uri> Generate(string manifestName, GenerateMode generateMode) { if (string.IsNullOrWhiteSpace(manifestName)) { throw new ArgumentException("Value can't be empty", nameof(manifestName)); } var normalizedManifestName = manifestName.ToLower(); var pageName = manifestName; var fileName = $"{normalizedManifestName}{PageExtension}"; var pageDefinition = _pageDefinitionService.Get(x => x.Type == PageType && x.PageName == pageName).FirstOrDefault(); switch (generateMode) { case GenerateMode.RetrieveExisting: if (pageDefinition == null) { throw new ManifestPageNotFoundException(manifestName); } return(pageDefinition.Url); case GenerateMode.GenerateIfNotExists: if (pageDefinition != null) { return(pageDefinition.Url); } break; } var systemUser = _fr8AccountService.GetSystemUser()?.EmailAddress?.Address; if (string.IsNullOrEmpty(systemUser)) { throw new ManifestGenerationException("Failed to generate manifest description page. System user doesn't exist or not configured properly"); } using (var uow = _uowFactory.Create()) { var manifests = uow.MultiTenantObjectRepository.Query <ManifestDescriptionCM>(systemUser, x => x.Name.ToLower() == normalizedManifestName); if (manifests.Count == 0) { throw new ManifestNotFoundException(manifestName); } manifests.Sort((x, y) => int.Parse(y.Version).CompareTo(int.Parse(x.Version))); if (pageDefinition == null) { pageDefinition = new PageDefinitionDO { Type = PageType, PageName = pageName, }; } pageDefinition.Title = $"Manifest description - {manifestName}"; pageDefinition.Description = $"Basic information and sample JSON of all registered version of '{manifestName}' manifest"; pageDefinition.Url = new Uri($"{_templateGenerator.BaseUrl}/{fileName}"); await _templateGenerator.Generate(new ManifestDescriptionTemplate(), fileName, new Dictionary <string, object> { ["Manifests"] = manifests }); _pageDefinitionService.CreateOrUpdate(pageDefinition); return(pageDefinition.Url); } }