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)));
        }
示例#2
0
 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);
            }
        }