Ejemplo n.º 1
0
        public async Task <dynamic> UploadCuratedContentPackage(CuratedTemplate curatedTemplate)
        {
            IFormFile file = curatedTemplate.TemplateFile.First();

            if (file.Length > 0 && Path.GetExtension(file.FileName) == Constants.A2JTemplateFileExtension)
            {
                var templateOrder = new List <JToken>();
                List <CuratedExperiencePackageTemplateModel> templateModel = new
                                                                             List <CuratedExperiencePackageTemplateModel>();

                ExtractZipContent(file, out templateOrder, out templateModel);

                var    newTemplateId = Guid.NewGuid();
                string resourceTitle = string.Empty;

                GetTemplates(templateOrder, templateModel, out JObject mainTemplate, out JObject guideTemplate, out resourceTitle);

                if (resourceTitle.ToUpperInvariant() == curatedTemplate.Name.ToUpperInvariant())
                {
                    var response = await ImportA2JTemplate(mainTemplate, newTemplateId);

                    if (response != null && response.Id != null)
                    {
                        var curatedDocumentResponse = await ImportCuratedTemplate(guideTemplate, newTemplateId);

                        if (curatedDocumentResponse != null && curatedDocumentResponse.Id != null)
                        {
                            return(await CreateGuidedAssistantResource(resourceTitle, curatedTemplate, curatedDocumentResponse.Id));
                        }
                    }
                }
                else
                {
                    return(adminSettings.NameValidationMessage);
                }
            }
            return(adminSettings.FileExtensionMessage);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> UploadCuratedExperienceTemplate([FromForm] CuratedTemplate curatedTemplate)
        {
            try
            {
                if (TryValidateModel(curatedTemplate))
                {
                    var response = await adminBusinessLogic.UploadCuratedContentPackage(curatedTemplate);

                    if (response != null && response.ToString() == adminSettings.SuccessMessage)
                    {
                        return(Ok(response));
                    }
                    else
                    {
                        return(BadRequest(response));
                    }
                }
                return(BadRequest(adminSettings.ValidationMessage));
            }
            catch (Exception ex)
            {
                return(BadRequest(adminSettings.FailureMessage + ex.Message));
            }
        }
Ejemplo n.º 3
0
        public async Task <object> CreateGuidedAssistantResource(string resourceTitle, CuratedTemplate curatedTemplate, string curatedExperienceId)
        {
            var resourceDetails = await topicsResourcesBusinessLogic.GetResourceDetailAsync(resourceTitle, Constants.GuidedAssistant);

            List <GuidedAssistant> resources = JsonUtilities.DeserializeDynamicObject <List <GuidedAssistant> >(resourceDetails);
            Int64 maxVersion = default(Int64);

            foreach (var resource in resources)
            {
                var resourceDetail = JsonUtilities.DeserializeDynamicObject <GuidedAssistant>(resource);
                if (resourceDetail.Version == default(Int64))
                {
                    resourceDetail.Version = IncrementVersion(default(Int64));
                }
                if (maxVersion.CompareTo(resourceDetail.Version) < 0)
                {
                    maxVersion = resourceDetail.Version;
                }
                resourceDetail.IsActive = false;

                await backendDatabaseService.UpdateItemAsync(resourceDetail.ResourceId.ToString(),
                                                             JObject.FromObject(resourceDetail), cosmosDbSettings.ResourcesCollectionId);
            }

            var topicDetails = await topicsResourcesBusinessLogic.GetTopicDetailsAsync(resourceTitle);

            List <Topic> topics = JsonUtilities.DeserializeDynamicObject <List <Topic> >(topicDetails);

            if (topics.Count > 0)
            {
                var             guidedAssistantResource = new GuidedAssistant();
                List <TopicTag> topicTags = new List <TopicTag>();
                List <Location> locations = new List <Location>();

                foreach (var topic in topics)
                {
                    topicTags.Add(new TopicTag {
                        TopicTags = topic.Id
                    });
                    foreach (var location in topic.Location)
                    {
                        locations.Add(location);
                    }
                }

                guidedAssistantResource.ResourceId          = Guid.NewGuid();
                guidedAssistantResource.Name                = curatedTemplate.Name;
                guidedAssistantResource.Description         = curatedTemplate.Description;
                guidedAssistantResource.TopicTags           = topicTags;
                guidedAssistantResource.Location            = locations;
                guidedAssistantResource.Version             = IncrementVersion(maxVersion);
                guidedAssistantResource.IsActive            = true;
                guidedAssistantResource.ResourceType        = Constants.GuidedAssistant;
                guidedAssistantResource.CuratedExperienceId = curatedExperienceId;

                await backendDatabaseService.CreateItemAsync(guidedAssistantResource, cosmosDbSettings.ResourcesCollectionId);

                return(adminSettings.SuccessMessage + " New Curated Experience ID " + curatedExperienceId);
            }
            return(string.Format(CultureInfo.InvariantCulture, adminSettings.MissingTopicMessage, resourceTitle));
        }