Пример #1
0
        /// <summary>
        /// Serialize all meta data on the user object into JSON for storage within UserData table.
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        async Task <IEnumerable <UserData> > SerializeMetaDataAsync(User user)
        {
            // Get all existing user data
            var data = await _userDataStore.GetByUserIdAsync(user.Id);

            // Prepare list to search, use dummy list if needed
            var dataList = data?.ToList() ?? new List <UserData>();

            // Iterate all meta data on the supplied user object,
            // check if a key already exists, if so update existing key
            var output = new List <UserData>();

            foreach (var item in user.MetaData)
            {
                var key      = item.Key.FullName;
                var userData = dataList.FirstOrDefault(d => d.Key == key);
                if (userData != null)
                {
                    userData.Value = item.Value.Serialize();
                }
                else
                {
                    userData = new UserData()
                    {
                        Key   = key,
                        Value = item.Value.Serialize()
                    };
                }

                output.Add(userData);
            }

            return(output);
        }