public async Task <IEnumerable <object> > UpsertTopicDocumentAsync(dynamic topic) { List <dynamic> results = new List <dynamic>(); List <dynamic> topics = new List <dynamic>(); var topicObjects = JsonUtilities.DeserializeDynamicObject <object>(topic); Topic topicdocuments = new Topic(); foreach (var topicObject in topicObjects) { string id = topicObject.id; topicdocuments = UpsertTopics(topicObject); var topicDocument = JsonUtilities.DeserializeDynamicObject <object>(topicdocuments); var topicDBData = await dbClient.FindItemsWhereAsync(dbSettings.TopicsCollectionId, Constants.Id, id); if (topicDBData.Count == 0) { var result = await dbService.CreateItemAsync(topicDocument, dbSettings.TopicsCollectionId); topics.Add(result); } else { var result = await dbService.UpdateItemAsync(id, topicDocument, dbSettings.TopicsCollectionId); topics.Add(result); } } return(topics); }
public async Task <PersonalizedPlanViewModel> MapViewModel(UnprocessedPersonalizedPlan personalizedPlanStepsInScope) { var actionPlan = new PersonalizedPlanViewModel(); foreach (var unprocessedTopic in personalizedPlanStepsInScope.UnprocessedTopics) { var resourceDetails = new List <Resource>(); var resourceIDs = unprocessedTopic.UnprocessedSteps.SelectMany(x => x.ResourceIds); if (resourceIDs != null || resourceIDs.Any()) { var resourceValues = resourceIDs.Select(x => x.ToString()).Distinct().ToList(); var resourceData = await dynamicQueries.FindItemsWhereInClauseAsync(cosmosDbSettings.ResourcesCollectionId, Constants.Id, resourceValues); resourceDetails = JsonUtilities.DeserializeDynamicObject <List <Resource> >(resourceData); } var topic = await topicsResourcesBusinessLogic.GetTopic(unprocessedTopic.Name); actionPlan.Topics.Add(new PlanTopic { TopicId = Guid.Parse(topic.Id), TopicName = topic.Name, Icon = topic.Icon, AdditionalReadings = await GetAdditionalReadings(topic.Id), Steps = GetSteps(unprocessedTopic.UnprocessedSteps, resourceDetails) }); } actionPlan.PersonalizedPlanId = Guid.NewGuid(); actionPlan.IsShared = false; return(actionPlan); }
public async Task <List <StateCode> > GetStateCodes() { var stateProvinceDetails = await dbClient.FindItemsWhereAsync(dbSettings.StateProvincesCollectionId, Constants.Type, Constants.StateProvinceType); List <StateProvinceViewModel> stateProvince = JsonUtilities.DeserializeDynamicObject <List <StateProvinceViewModel> >(stateProvinceDetails); return(stateProvince.Count() > 0 ? stateProvince[0].StateProvinces : null); }
public void DeserializeDynamicObjectShouldSerializeToStringAndDeserializeBackToValidJson() { dynamic expectedJsonString = "{\r\n \"id\":\"49779468-1fe0-4183-850b-ff365e05893e\",\r\n \"name\": \"Alaska Native Justice Center\"\r\n}"; string actualJsonString = JsonUtilities.DeserializeDynamicObject <string>(expectedJsonString); Assert.Equal(expectedJsonString, actualJsonString); }
public async Task <Guid> GetDefaultUserRole() { var result = await dbClient.FindItemsWhereAsync(dbSettings.RolesCollectionId, Constants.UserRole, Permissions.Role.Authenticated.ToString()); List <Role> userRole = JsonUtilities.DeserializeDynamicObject <List <Role> >(result); return(userRole.Select(x => x.RoleInformationId).FirstOrDefault()); }
public async Task <string> GetStateNameForStateCode(string stateCode) { var response = await dbClient.FindFieldWhereArrayContainsAsync(dbSettings.StateProvincesCollectionId, Constants.StateProvince, Constants.Code, stateCode); List <StateCode> stateCodes = JsonUtilities.DeserializeDynamicObject <List <StateCode> >(response); return(stateCodes.Count() > 0 ? stateCodes[0].Name : null); }
public async Task <Topic> GetTopic(string topicName) { List <dynamic> topics = await dbClient.FindItemsWhereAsync(dbSettings.TopicsCollectionId, Constants.Name, topicName); if (!topics.Any()) { throw new Exception($"No topic found with this name: {topicName}"); } return(JsonUtilities.DeserializeDynamicObject <Topic>(topics.FirstOrDefault())); }
public async Task <List <Role> > GetRoleDetailsAsync(List <string> roleInformationId) { List <Role> userRole = new List <Role>(); if (roleInformationId.Count() > 0) { var roleData = await dbClient.FindItemsWhereInClauseAsync(dbSettings.RolesCollectionId, Constants.Id, roleInformationId); userRole = JsonUtilities.DeserializeDynamicObject <List <Role> >(roleData); } return(userRole); }
public void GetServiceProviderTopicTagsTestsShouldReturnProperData(string id, dynamic expectedTopicTag) { //arrage dynamic actualTopicTagData = null; //act var response = serviceProvidersBusinessLogic.GetServiceProviderTopicTags(id); actualTopicTagData = JsonUtilities.DeserializeDynamicObject <object>(response); //assert Assert.Equal(expectedTopicTag.ToString(), actualTopicTagData.ToString()); }
public async Task <List <string> > GetPermissionDataAsync(string oId) { List <string> permissionPaths = new List <string>(); UserProfile userProfile = await dbUserProfile.GetUserProfileDataAsync(oId); if (userProfile?.RoleInformationId.Count() > 0) { var roleIdsList = userProfile.RoleInformationId.Select(x => x.ToString()).ToList().Distinct(); var permissionData = await dbClient.FindItemsWhereInClauseAsync(dbSettings.RolesCollectionId, Constants.Id, roleIdsList); List <Role> userRole = JsonUtilities.DeserializeDynamicObject <List <Role> >(permissionData); return(userRole.SelectMany(x => x.Permissions).Distinct().ToList()); } return(permissionPaths); }
/// <summary> /// upserts service provider /// </summary> public async Task <IEnumerable <Document> > UpsertServiceProviderDocumentAsync(List <ServiceProvider> serviceProvider, string topic) { var resources = new List <Document>(); var serviceProviderObjects = JsonUtilities.DeserializeDynamicObject <List <ServiceProvider> >(serviceProvider); foreach (var serviceProviderObject in serviceProviderObjects) { var serviceProviderLocation = new Location { State = serviceProviderObject.Location[0].State }; if (!string.IsNullOrEmpty(topic)) { var topicDBData = await dbClient.FindItemsWhereContainsWithLocationAsync(dbSettings.TopicsCollectionId, Constants.Name, topic, serviceProviderLocation).ConfigureAwait(false); serviceProviderObject.TopicTags = topicDBData.Count > 0 ? GetServiceProviderTopicTags(topicDBData[0].id) : null; } List <string> propertyNames = new List <string>() { Constants.ExternalId, Constants.ResourceType }; List <string> values = new List <string>() { serviceProviderObject.ExternalId, serviceProviderObject.ResourceType }; var serviceProviderDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values).ConfigureAwait(false); if (serviceProviderDBData.Count == 0) { var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(serviceProviderObject); var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId).ConfigureAwait(false); resources.Add(result); } else { serviceProviderObject.ResourceId = serviceProviderDBData[0].id.ToString(); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(serviceProviderObject); var result = await dbService.UpdateItemAsync(serviceProviderObject.ResourceId, resourceDocument, dbSettings.ResourcesCollectionId).ConfigureAwait(false); resources.Add(result); } } return(resources); }
public async Task<dynamic> UpsertStaticNavigationDataAsync(Navigation navigationContent) { dynamic result = null; var pageDBData = await dbClient.FindItemsWhereWithLocationAsync(dbSettings.StaticResourcesCollectionId, Constants.Name, navigationContent.Name, navigationContent.Location.FirstOrDefault()); if (pageDBData?.Count > 0) { string id = pageDBData[0].id; navigationContent.Id = id; var pageDocument = JsonUtilities.DeserializeDynamicObject<object>(navigationContent); result = await dbService.UpdateItemAsync(id, pageDocument, dbSettings.StaticResourcesCollectionId); } else { var pageDocument = JsonUtilities.DeserializeDynamicObject<object>(navigationContent); result = await dbService.CreateItemAsync(pageDocument, dbSettings.StaticResourcesCollectionId); } return result; }
public async Task <object> UnshareResourceDataAsync(ShareInput unShareInput) { dynamic userSharedResourcesDBData = null; var userSharedResources = new List <SharedResources>(); if (unShareInput.UserId == null || unShareInput.ResourceId == null || unShareInput.Url == null) { return(null); } UserProfile userProfile = await dbUserProfile.GetUserProfileDataAsync(unShareInput.UserId); if (userProfile == null || userProfile?.SharedResourceId == null) { return(null); } if (userProfile?.SharedResourceId != null && userProfile.SharedResourceId != Guid.Empty) { userSharedResourcesDBData = await dbClient.FindItemsWhereAsync(dbSettings.UserResourcesCollectionId, Constants.Id, Convert.ToString(userProfile.SharedResourceId, CultureInfo.InvariantCulture)); } if (userSharedResourcesDBData != null) { userSharedResources = JsonUtilities.DeserializeDynamicObject <List <SharedResources> >(userSharedResourcesDBData); } var sharedResource = userSharedResources[0].SharedResource.FindAll(a => a.Url.OriginalString. Contains(unShareInput.Url.OriginalString)); if (sharedResource.Count == 0) { return(false); } userSharedResources[0].SharedResource.RemoveAll(a => a.Url.OriginalString. Contains(unShareInput.Url.OriginalString)); var response = await dbService.UpdateItemAsync(userSharedResources[0].SharedResourceId.ToString(), userSharedResources[0], dbSettings.UserResourcesCollectionId); if (unShareInput.Url.OriginalString.Contains("plan")) { string planId = unShareInput.Url.OriginalString.Substring(6); await UpdatePlanIsSharedStatus(planId, false); } return(response == null ? false : true); }
public async Task <object> UpsertSharedResource(UserProfile userProfile, SharedResource sharedResource) { List <SharedResource> sharedResources = new List <SharedResource>(); dynamic userSharedResourcesDBData = null; dynamic response = null; if (userProfile?.SharedResourceId != null && userProfile.SharedResourceId != Guid.Empty) { userSharedResourcesDBData = await dbClient.FindItemsWhereAsync(dbSettings.UserResourcesCollectionId, Constants.Id, Convert.ToString(userProfile.SharedResourceId, CultureInfo.InvariantCulture)); } if (userSharedResourcesDBData != null && userSharedResourcesDBData.Count > 0) { var userSharedResources = new List <SharedResources>(); userSharedResources = JsonUtilities.DeserializeDynamicObject <List <SharedResources> >(userSharedResourcesDBData); userSharedResources[0].SharedResourceId = userProfile.SharedResourceId; userSharedResources[0].SharedResource.Add(sharedResource); response = await dbService.UpdateItemAsync(userProfile.SharedResourceId.ToString(), userSharedResources[0], dbSettings.UserResourcesCollectionId); } else { var userSharedResources = new SharedResources(); if (userSharedResourcesDBData != null) { userSharedResources.SharedResourceId = userProfile.SharedResourceId; } else { userSharedResources.SharedResourceId = Guid.NewGuid(); } sharedResources.Add(sharedResource); userSharedResources.SharedResource = sharedResources; userProfile.SharedResourceId = userSharedResources.SharedResourceId; await dbService.UpdateItemAsync(userProfile.Id, userProfile, dbSettings.ProfilesCollectionId); response = await dbService.CreateItemAsync((userSharedResources), dbSettings.UserResourcesCollectionId); } return(response); }
public async Task <ShareViewModel> CheckPermaLinkDataAsync(ShareInput shareInput) { dynamic userSharedResourcesDBData = null; List <SharedResources> userSharedResources = new List <SharedResources>(); if (shareInput.UserId == null || shareInput.Url == null) { return(null); } UserProfile userProfile = await dbUserProfile.GetUserProfileDataAsync(shareInput.UserId); if (userProfile == null) { return(null); } else { if (userProfile?.SharedResourceId != null && userProfile.SharedResourceId != Guid.Empty) { userSharedResourcesDBData = await dbClient.FindItemsWhereAsync(dbSettings.UserResourcesCollectionId, Constants.Id, Convert.ToString(userProfile.SharedResourceId, CultureInfo.InvariantCulture)); } if (userSharedResourcesDBData != null && userSharedResourcesDBData?.Count > 0) { userSharedResources = JsonUtilities.DeserializeDynamicObject <List <SharedResources> >(userSharedResourcesDBData); } else { return(null); } } var resource = userSharedResources[0].SharedResource.FindAll(a => a.Url.OriginalString. Contains(shareInput.Url.OriginalString) && DateTime.Compare(a.ExpirationDate, DateTime.UtcNow) >= 0); return(resource.Count == 0 ? null : new ShareViewModel { PermaLink = GetPermaLink(resource.Select(a => a.PermaLink).First()) }); }
public async Task <object> GetPermaLinkDataAsync(string permaLink) { if (string.IsNullOrEmpty(permaLink)) { return(null); } var response = await dbClient.FindFieldWhereArrayContainsAsync(dbSettings.UserResourcesCollectionId, Constants.SharedResource, Constants.PermaLink, permaLink, Constants.ExpirationDate); if (response == null) { return(null); } List <ShareProfileDetails> shareProfileDetails = JsonUtilities.DeserializeDynamicObject <List <ShareProfileDetails> >(response); ShareProfileViewModel profileViewModel = new ShareProfileViewModel(); if (shareProfileDetails.Count() > 0) { var userprofileResponse = await dbClient.FindFieldWhereArrayContainsAsync(dbSettings.ProfilesCollectionId, Constants.sharedResourceId, shareProfileDetails[0].Id); List <ShareProfileResponse> shareProfileResponse = JsonUtilities.DeserializeDynamicObject <List <ShareProfileResponse> >(userprofileResponse); if (shareProfileResponse?.Count > 0) { shareProfileResponse[0].Link = shareProfileDetails.FirstOrDefault().Link; foreach (var profile in shareProfileResponse) { if (profile.Link == Constants.ProfileLink) { profileViewModel.UserName = profile.Name; profileViewModel.UserId = profile.OId; } profileViewModel.ResourceLink = profile.Link; } } } return(profileViewModel); }
public async Task <dynamic> GetPagedResourceAsync(ResourceFilter resourceFilter) { PagedResourceViewModel pagedResourceViewModel = new PagedResourceViewModel(); if (resourceFilter.IsResourceCountRequired) { var groupedResourceType = await GetResourcesCountAsync(resourceFilter); pagedResourceViewModel.ResourceTypeFilter = JsonUtilities.DeserializeDynamicObject <dynamic>(groupedResourceType); } dynamic searchFilter = new JObject(); searchFilter.OrderByField = resourceFilter.OrderByField; searchFilter.OrderBy = resourceFilter.OrderBy; PagedResources pagedResources = await ApplyPaginationAsync(resourceFilter); dynamic serializedToken = pagedResources?.ContinuationToken ?? Constants.EmptyArray; pagedResourceViewModel.Resources = JsonUtilities.DeserializeDynamicObject <dynamic>(pagedResources?.Results); pagedResourceViewModel.ContinuationToken = JsonConvert.DeserializeObject(serializedToken); pagedResourceViewModel.TopicIds = JsonUtilities.DeserializeDynamicObject <dynamic>(pagedResources?.TopicIds); pagedResourceViewModel.SearchFilter = searchFilter; return(JObject.FromObject(pagedResourceViewModel).ToString()); }
public async Task <dynamic> GetInternalResourcesAsync(string keyword, LuisInput luisInput, IEnumerable <string> relevantIntents) { CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; TextInfo textInfo = cultureInfo.TextInfo; Location location = luisInput.Location; var topics = await topicsResourcesBusinessLogic.GetTopicsAsync(textInfo.ToTitleCase(keyword), location); List <string> topicIds = new List <string>(); foreach (var item in topics) { string topicId = item.id; topicIds.Add(topicId); } if (topicIds.Count == 0 || location == null) { return(new LuisViewModel { TopIntent = keyword }); } ResourceFilter resourceFilter = new ResourceFilter { TopicIds = topicIds, PageNumber = 0, ResourceType = Constants.All, Location = location }; var GetResourcesTask = topicsResourcesBusinessLogic.GetResourcesCountAsync(resourceFilter); ResourceFilter sortResourceFilter = resourceFilter; sortResourceFilter.IsOrder = true; sortResourceFilter.OrderByField = luisInput.OrderByField; sortResourceFilter.OrderBy = luisInput.OrderBy; var ApplyPaginationTask = topicsResourcesBusinessLogic.ApplyPaginationAsync(sortResourceFilter); //To get guided assistant id resourceFilter.ResourceType = Constants.GuidedAssistant; var GetGuidedAssistantId = topicsResourcesBusinessLogic.ApplyPaginationAsync(resourceFilter); await Task.WhenAll(GetResourcesTask, ApplyPaginationTask, GetGuidedAssistantId); var groupedResourceType = GetResourcesTask.Result; PagedResources resources = ApplyPaginationTask.Result; PagedResources guidedAssistantResponse = GetGuidedAssistantId.Result; var guidedAssistantResult = guidedAssistantResponse != null?JsonUtilities.DeserializeDynamicObject <GuidedAssistant>(guidedAssistantResponse.Results.FirstOrDefault()) : null; dynamic searchFilter = new JObject(); searchFilter.OrderByField = resourceFilter.OrderByField; searchFilter.OrderBy = resourceFilter.OrderBy; return(new LuisViewModel { TopIntent = keyword, RelevantIntents = relevantIntents != null?JsonUtilities.DeserializeDynamicObject <dynamic>(relevantIntents) : JsonConvert.DeserializeObject(Constants.EmptyArray), Topics = topics != null?JsonUtilities.DeserializeDynamicObject <dynamic>(topics) : JsonConvert.DeserializeObject(Constants.EmptyArray), Resources = resources != null?JsonUtilities.DeserializeDynamicObject <dynamic>(resources.Results) : JsonConvert.DeserializeObject(Constants.EmptyArray), ContinuationToken = resources != null && resources.ContinuationToken != null?JsonConvert.DeserializeObject(resources.ContinuationToken) : JsonConvert.DeserializeObject(Constants.EmptyArray), TopicIds = topicIds != null?JsonUtilities.DeserializeDynamicObject <dynamic>(topicIds) : JsonConvert.DeserializeObject(Constants.EmptyArray), ResourceTypeFilter = groupedResourceType != null?JsonUtilities.DeserializeDynamicObject <dynamic>(groupedResourceType) : JsonConvert.DeserializeObject(Constants.EmptyArray), GuidedAssistantId = guidedAssistantResult != null ? guidedAssistantResult.CuratedExperienceId : string.Empty, SearchFilter = searchFilter }); }
private UserProfileViewModel ConvertUserProfileViewModel(dynamic convObj) { List <UserProfileViewModel> userProfileViewModel = JsonUtilities.DeserializeDynamicObject <List <UserProfileViewModel> >(convObj); return(userProfileViewModel.FirstOrDefault()); }
private UserProfile ConvertUserProfile(dynamic convObj) { List <UserProfile> userProfile = JsonUtilities.DeserializeDynamicObject <List <UserProfile> >(convObj); return(userProfile.FirstOrDefault()); }
public async Task <IEnumerable <object> > UpsertResourceDocumentAsync(dynamic resource) { List <dynamic> results = new List <dynamic>(); List <dynamic> resources = new List <dynamic>(); var resourceObjects = JsonUtilities.DeserializeDynamicObject <List <dynamic> >(resource); Form forms = new Form(); ActionPlan actionPlans = new ActionPlan(); Article articles = new Article(); Video videos = new Video(); Organization organizations = new Organization(); AdditionalReading additionalReadings = new AdditionalReading(); RelatedLink relatedLinks = new RelatedLink(); foreach (var resourceObject in resourceObjects) { string id = resourceObject.id; string resourceType = resourceObject.resourceType; if (resourceObject.resourceType == "Forms") { forms = UpsertResourcesForms(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(forms); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Action Plans") { actionPlans = UpsertResourcesActionPlans(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(actionPlans); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Articles") { articles = UpsertResourcesArticles(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(articles); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Videos") { videos = UpsertResourcesVideos(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(videos); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Organizations") { organizations = UpsertResourcesOrganizations(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(organizations); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Additional Readings") { additionalReadings = UpsertResourcesAdditionalReadings(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(additionalReadings); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } else if (resourceObject.resourceType == "Related Links") { relatedLinks = UpsertResourcesRelatedLinks(resourceObject); var resourceDocument = JsonUtilities.DeserializeDynamicObject <object>(relatedLinks); List <string> propertyNames = new List <string>() { Constants.Id, Constants.ResourceType }; List <string> values = new List <string>() { id, resourceType }; var resourceDBData = await dbClient.FindItemsWhereAsync(dbSettings.ResourcesCollectionId, propertyNames, values); if (resourceDBData.Count == 0) { var result = await dbService.CreateItemAsync(resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } else { var result = await dbService.UpdateItemAsync(id, resourceDocument, dbSettings.ResourcesCollectionId); resources.Add(result); } } } return(resources); }
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)); }