public async Task <dynamic> UpsertUserSavedResourcesAsync(ProfileResources userData)
        {
            var userDocument = new ProfileResources();

            userDocument = JsonConvert.DeserializeObject <ProfileResources>(JsonConvert.SerializeObject(userData));
            string  oId    = userDocument.OId;
            dynamic result = null;
            string  type   = userData.Type;
            dynamic userResourcesDBData = null;
            var     userProfile         = await GetUserProfileDataAsync(oId);

            if (userProfile?.SavedResourcesId != null && userProfile?.SavedResourcesId != Guid.Empty)
            {
                userResourcesDBData = await dbClient.FindItemsWhereAsync(dbSettings.UserResourcesCollectionId, Constants.Id, Convert.ToString(userProfile.SavedResourcesId, CultureInfo.InvariantCulture));
            }
            if (userResourcesDBData == null || userResourcesDBData?.Count == 0)
            {
                result = await CreateUserSavedResourcesAsync(userData);

                string savedResourcesId = result.Id;
                userProfile.SavedResourcesId = new Guid(savedResourcesId);
                await dbService.UpdateItemAsync(userProfile.Id, userProfile, dbSettings.ProfilesCollectionId);
            }
            else
            {
                Guid id = Guid.Parse(userResourcesDBData[0].id);
                result = await UpdateUserSavedResourcesAsync(id, userData);
            }
            return(result);
        }
 public async Task <IActionResult> UpsertUserPersonalizedPlanAsync([FromBody] ProfileResources profileResources)
 {
     if (profileResources != null)
     {
         return(Ok(await userProfileBusinessLogic.UpsertUserSavedResourcesAsync(profileResources)));
     }
     return(StatusCode(400));
 }
        public async Task <dynamic> UpdateUserSavedResourcesAsync(Guid id, ProfileResources userResources)
        {
            var userDocument = new UserSavedResources()
            {
                SavedResourcesId = id,
                Resources        = BuildResources(userResources)
            };

            userDocument = JsonConvert.DeserializeObject <UserSavedResources>(JsonConvert.SerializeObject(userDocument));
            return(await dbService.UpdateItemAsync(id.ToString(), userDocument, dbSettings.UserResourcesCollectionId));
        }
        public async Task <dynamic> CreateUserSavedResourcesAsync(ProfileResources userResources)
        {
            var userDocument = new UserSavedResources()
            {
                SavedResourcesId = Guid.NewGuid(),
                Resources        = BuildResources(userResources)
            };

            userDocument = JsonConvert.DeserializeObject <UserSavedResources>(JsonConvert.SerializeObject(userDocument));
            return(await dbService.CreateItemAsync((userDocument), dbSettings.UserResourcesCollectionId));
        }
        public List <SavedResource> BuildResources(ProfileResources userResources)
        {
            var savedResources = new List <SavedResource>();

            foreach (var resource in userResources.Resources)
            {
                savedResources.Add(new SavedResource()
                {
                    ResourceId      = resource.ResourceId,
                    ResourceType    = resource.ResourceType,
                    ResourceDetails = resource.ResourceDetails
                });
            }
            return(savedResources);
        }