예제 #1
0
        }         // proc BeginEndConfigurationUser

        private async Task RefreshUserDataAsync(bool force)
        {
            bool UpdateUserData(PrivateUserData userData, IDataRow r)
            {
                try
                {
                    userData.UpdateData(r, force);
                    return(true);
                }
                catch (Exception e)
                {
                    userData.Log.Except(e);
                    userData.Dispose();
                    return(false);
                }
            }             // func UpdateUserData

            using (var ctx = await CreateSystemContextAsync())
            {
                var userData = ctx.GetService <IPpsPrivateDataContext>();
                var users    = await userData?.CreateSelectorAsync("dbo.serverLogins", throwException : false);

                if (users != null)
                {
                    // fetch user list
                    foreach (var u in users)
                    {
                        lock (userList)
                        {
                            var userId = u.GetProperty("ID", 0L);
                            if (userId > 0)
                            {
                                var idx = userList.FindIndex(c => c.Id == userId);
                                if (idx >= 0)
                                {
                                    if (!UpdateUserData(userList[idx], u))
                                    {
                                        userList.RemoveAt(idx);
                                    }
                                }
                                else
                                {
                                    var user = new PrivateUserData(this, userId, PrivateUserData.CreateUserIdentity(u));
                                    if (UpdateUserData(user, u))
                                    {
                                        userList.Add(user);
                                    }
                                }
                            }
                            else
                            {
                                Log.Warn("User ignored (id={userId}).");
                            }
                        }
                    }             // foreach
                }                 // users != null

                await ctx.RollbackAsync();
            }
        }         // proc RefreshUserData
예제 #2
0
        }         // func GetClientApplicationInfo

        private async Task RefreshClientApplicationInfosAsync(DirectoryInfo appSourceDirectory, string virtualRoot)
        {
            // scan for msi-files
            foreach (var fi in appSourceDirectory.EnumerateFiles("*.msi", SearchOption.TopDirectoryOnly))
            {
                clientApplicationInfos.Add(await Task.Run(() => GetClientMsiApplication(fi, virtualRoot)));
            }
        }         // proc RefreshClientApplicationInfosAsync