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); }
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)); } }
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)); }