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);
        }
Exemple #11
0
        /// <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);
        }
Exemple #12
0
 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);
        }
Exemple #22
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));
        }