private dynamic GetAvailableDatabase(dynamic arg) { int databaseId = arg.databaseId; var userGroups = this.Context.CurrentUser.Claims.ToArray(); // groupsForUserService.Get(this.Context.CurrentUser.UserName); var targetDatabases = dbContext.ActiveDirectoryRestorePolicies .Where(p => p.SourceDatabaseId == databaseId && p.Groups.Any(g => userGroups.Contains(g.Name))) .SelectMany(p => p.DestinationDatabaseServer.Databases.Where(d =>d.Name.StartsWith(p.DestinationDatabaseExpression))) .Select(d => new { SourceDatabaseServerName = d.Server.Name, SourceDatabaseId = d.Id, SourceDatabaseName = d.Name }) .OrderBy(d => d.SourceDatabaseServerName) .ThenBy(d => d.SourceDatabaseName) .ToList(); var list = new List<SourceServerViewModel>(); SourceServerViewModel previousServer = null; foreach (var item in targetDatabases) { if (previousServer == null || previousServer.Name != item.SourceDatabaseServerName) { previousServer = new SourceServerViewModel(); previousServer.Name = item.SourceDatabaseServerName; list.Add(previousServer); } var sourceDatabase = new SourceDatabaseViewModel(); sourceDatabase.Name = item.SourceDatabaseName; sourceDatabase.Id = item.SourceDatabaseId; previousServer.Databases.Add(sourceDatabase); } return list; }
private dynamic Index(dynamic parameters) { var userGroups = this.Context.CurrentUser.Claims.ToArray(); // groupsForUserService.Get(this.Context.CurrentUser.UserName); var sourceDatabases = dbContext.ActiveDirectoryRestorePolicies .Where(p => p.Groups.Any(g => userGroups.Contains(g.Name))) .Select(p => new { SourceDatabaseServerName = p.SourceDatabase.Server.Name, SourceDatabaseId = p.SourceDatabase.Id, SourceDatabaseName = p.SourceDatabase.Name }) .OrderBy(d => d.SourceDatabaseServerName) .ThenBy(d => d.SourceDatabaseName) .ToList(); var list = new List<SourceServerViewModel>(); SourceServerViewModel previousServer = null; foreach (var item in sourceDatabases) { if (previousServer == null || previousServer.Name != item.SourceDatabaseServerName) { previousServer = new SourceServerViewModel(); previousServer.Name = item.SourceDatabaseServerName; list.Add(previousServer); } var sourceDatabase = new SourceDatabaseViewModel(); sourceDatabase.Name = item.SourceDatabaseName; sourceDatabase.Id = item.SourceDatabaseId; previousServer.Databases.Add(sourceDatabase); } //Task.WaitAll(foundFilesTask, targetInstancesTask); //IList<DatabaseServer> foundFiles = foundFilesTask.Result; //IList<DatabaseServer> targetInstances = targetInstancesTask.Result; //dynamic model = new // { // FoundFiles = foundFiles, // TargertInstances = targetInstances // }; return View["index", list]; }