public void CreateMeasuresDataModel(int pNumOperators) { string savedCategory = null; string savedSubCategory = null; VisDashboardDataDataContext db = new VisDashboardDataDataContext(); // Setup number of operators if (pNumOperators > 0) { numOperators = pNumOperators; } var query = from p in db.Measures select p; fullMeasureCollection = new ObservableCollection <MeasureSelection>(); foreach (var item in query) { if (string.Compare(savedCategory, item.Category) != 0) { fullMeasureCollection.Add(new MeasureSelection(item.Category, "", "", MeasureRowType.CategoryType, numOperators, -1)); savedCategory = item.Category; } if (string.Compare(savedSubCategory, item.SubCategory) != 0) { fullMeasureCollection.Add(new MeasureSelection(item.SubCategory, item.Category, "", MeasureRowType.SubCategoryType, numOperators, -1)); savedSubCategory = item.SubCategory; } fullMeasureCollection.Add(new MeasureSelection(item.Name, item.Category, item.SubCategory, MeasureRowType.DataValue, numOperators, item.MeasureID)); } // Update Visible collection UpdateVisMeasureCollection(); }
public void SaveScenarioFileInfo() { if (CurExperiment == null) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); Experiment experiment = null; var query = from e in db.Experiments where e.ExperimentID == CurExperiment.ExperimentID select e; try { experiment = query.Single(); } catch (Exception) { return; } experiment.ScenarioFilePath = CurExperiment.ScenarioFilePath; experiment.ScenarioFileType = CurExperiment.ScenarioFileType; db.SubmitChanges(); }
public List <string> GetFactorLevels(string measureName, string factorToSum) { List <string> factorLevels = new List <string>(); // Loop through the experiments measures looking for experiment entities that match foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if ((expMeasure.Measure.Name != null) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorToSum) == 0) && ((expMeasure.ExperimentEntityID.HasValue) && (expMeasure.ExperimentEntityID != 0)) ) { factorLevels.Add(expMeasure.ExperimentEntity.Name); } } // Loop through measure table looking for measures that match if (factorLevels.Count == 0) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var query = from p in db.Measures select p; foreach (var measure in query) { if ((measure.Name != null) && (measure.Category != null) && (measure.Category.CompareTo(measureName) == 0) && (measure.SubCategory != null) && (measure.SubCategory.CompareTo(factorToSum) == 0)) { factorLevels.Add(measure.Name); } } } if (factorLevels.Count == 0) { return(null); } // Remove any all or team List <string> factorsToRemove = new List <string>(); foreach (string factorLevel in factorLevels) { if ((factorLevel.CompareTo("All") == 0) || (factorLevel.CompareTo("Team") == 0)) { factorsToRemove.Add(factorLevel); } } factorsToRemove.ForEach(x => factorLevels.Remove(x)); return(factorLevels); }
public CreateUserDialog() { InitializeComponent(); // Get the data for the role drop down VisDashboardDataDataContext db = new VisDashboardDataDataContext(); roleCollection.Collection = from r in db.Roles select r.RoleName; }
public void ReloadExperimentInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); if (CurExperiment == null) { return; } // All Users var allUsers = (from u in db.Users join uIr in db.UserInRoles on new { u.UserID, RoleName = "Experimenter" } equals new { uIr.UserID, uIr.Role.RoleName } orderby u.Username select u) .Union (from u in db.Users join uIr in db.UserInRoles on new { u.UserID, RoleName = "Operator" } equals new { uIr.UserID, uIr.Role.RoleName } orderby u.Username select u); // Load Users in Experiment var usersInExp = from u in db.Users join uIe in db.UsersInExperiments on new { u.UserID, ExperimentID = CurExperiment.ExperimentID } equals new { uIe.UserID, uIe.ExperimentID } orderby u.Username select u; UsersInExperiment = new ObservableCollection <User>(); usersInExp.ToList().ForEach(x => UsersInExperiment.Add(x));; // Load Users not in Experiment var usersNotInExp = allUsers.Except(usersInExp); UsersNotInExperiment = new ObservableCollection <User>(); usersNotInExp.ToList().ForEach(x => UsersNotInExperiment.Add(x)); // Load list of users names if ((usersInExp.ToList() != null) && (usersInExp.ToList().Count > 0)) { CurExperimentUsers = new String[usersInExp.ToList().Count]; for (int i = 0; i < usersInExp.ToList().Count; i++) { CurExperimentUsers[i] = usersInExp.ToList()[i].Username; } } else { CurExperimentUsers = null; } }
public bool AddNewUser(CreateUserInfo newUserInfo) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { // Lookup the role ID Role desiredRole = null; var query = from p in db.Roles where p.RoleName == newUserInfo.UserInRole select p; try { desiredRole = query.Single(); } catch (Exception) { MessageBox.Show("Could not process user role.", "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } // Try to add new user to database User newUser = new User { Username = newUserInfo.Username, Password = newUserInfo.Password }; UserInRole newUserInRole = new UserInRole { ApplicationName = "DashboardPermissionTool", RoleID = desiredRole.RoleID }; newUserInRole.User = newUser; db.UserInRoles.InsertOnSubmit(newUserInRole); db.SubmitChanges(); ts.Complete(); } catch (SqlException e) { if (e.Message.Contains("Violation of UNIQUE KEY constraint 'U_Username'. Cannot insert duplicate key in object 'dbo.User'")) { MessageBox.Show("This user already exists.", "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Database Error: " + e.Message, "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } } return(true); }
public bool UpdateConfigDisplay(ConfigDisplay configDisplay, int width, int height) { if (configDisplay == null) { return(false); } // Obtain the edited display display VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ConfigDisplay existingConfigDisplay = null; using (TransactionScope ts = new TransactionScope()) { try { var query = from cd in db.ConfigDisplays where cd.ConfigID == configDisplay.ConfigID && cd.Name == configDisplay.Name select cd; try { existingConfigDisplay = query.Single(); } catch (Exception) { return(false); } // Update the size if needed if ((existingConfigDisplay.Width != width) || (existingConfigDisplay.Height != height)) { existingConfigDisplay.Width = width; existingConfigDisplay.Height = height; db.SubmitChanges(); } } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Deletion Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } finally { ts.Complete(); ts.Dispose(); db = null; } } return(true); }
public CreateUserDialog() { InitializeComponent(); // Get the data for the role drop down VisDashboardDataDataContext db = new VisDashboardDataDataContext(); roleCollection.Collection = from r in db.Roles select r.RoleName; }
public SelectExpUsersDialog() { InitializeComponent(); dbContext = new VisDashboardDataDataContext(); ts = new TransactionScope(); pendingAdds = new List <UsersInExperiment>(); pendingDeletes = new List <int>(); }
public SelectExpUsersDialog() { InitializeComponent(); dbContext = new VisDashboardDataDataContext(); ts = new TransactionScope(); pendingAdds = new List<UsersInExperiment>(); pendingDeletes = new List<int>(); }
public bool LoadUser(string username, string password) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); User newUser = null; var query = from p in db.Users where p.Username == username select p; try { newUser = query.Single(); } catch (Exception) { MessageBox.Show("Username or password is incorrect.", "Login Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } // Check password if (string.Compare(password, newUser.Password) != 0) { MessageBox.Show("Username or password is incorrect.", "Login Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } if ((newUser.UserInRoles != null) && (newUser.UserInRoles.Count == 1)) { if (newUser.UserInRoles[0].Role.RoleName.CompareTo("Administrator") == 0) { } else if (newUser.UserInRoles[0].Role.RoleName.CompareTo("Experimenter") == 0) { } else { MessageBox.Show("Account must be either an Administrator or an Experimenter to use this interface.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return false; } } else { if (newUser.UserInRoles.Count > 1) { MessageBox.Show("User account has more than one role.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("User account has no assigned role.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } return false; } currentUser = newUser; OnPropertyChanged(""); return true; }
public bool LoadUser(string username, string password) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); User newUser = null; var query = from p in db.Users where p.Username == username select p; try { newUser = query.Single(); } catch (Exception) { MessageBox.Show("Username or password is incorrect.", "Login Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } // Check password if (string.Compare(password, newUser.Password) != 0) { MessageBox.Show("Username or password is incorrect.", "Login Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if ((newUser.UserInRoles != null) && (newUser.UserInRoles.Count == 1)) { if (newUser.UserInRoles[0].Role.RoleName.CompareTo("Administrator") == 0) { } else if (newUser.UserInRoles[0].Role.RoleName.CompareTo("Experimenter") == 0) { } else { MessageBox.Show("Account must be either an Administrator or an Experimenter to use this interface.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } else { if (newUser.UserInRoles.Count > 1) { MessageBox.Show("User account has more than one role.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("User account has no assigned role.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); } currentUser = newUser; OnPropertyChanged(""); return(true); }
public void LoadConfigDisplayInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); bool userFound = false; if (CurConfig == null) { return; } // Load Available Display Names displayNames = new ObservableCollection <string>(); ConfigDisplayTable = new ObservableCollection <ExperimentDisplay>(); List <ExperimentDisplay> expDisplayAll = (from eD in db.ExperimentDisplays join uIc in db.UsersInConfigs on new { eD.UserID, ConfigID = CurConfig.ConfigID } equals new { uIc.UserID, uIc.ConfigID } where eD.ExperimentID == CurExperimentID select eD).ToList(); foreach (ExperimentDisplay expDisplay in expDisplayAll) { // Make sure all users in configuration have access to this display foreach (User user in UsersInConfig) { userFound = false; foreach (ExperimentDisplay expDisplay2 in expDisplayAll) { if ((expDisplay2.UserID == user.UserID) && (expDisplay2.DisplayID == expDisplay.DisplayID)) { userFound = true; break; } } if (!userFound) { break; } } if ((userFound) && (!DisplayNames.Contains(expDisplay.Display.Name))) { // Add this Display to the available Display list ConfigDisplayTable.Add(expDisplay); DisplayNames.Add(expDisplay.Display.Name); } } OnPropertyChanged("DisplayNames"); }
public int LocateMeasureID(string measureName, string factorName, string levelName, out Measure measure) { foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if ((expMeasure.Measure.Name != null) && (expMeasure.Measure.Name.CompareTo(levelName) == 0) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorName) == 0) && ((!expMeasure.ExperimentEntityID.HasValue) || (expMeasure.ExperimentEntityID == 0)) ) { measure = expMeasure.Measure; return(expMeasure.Measure.MeasureID); } else if ((expMeasure.Measure.Name != null) && (expMeasure.ExperimentEntityID > 0) && (expMeasure.ExperimentEntity.Name.CompareTo(levelName) == 0) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorName) == 0) ) { measure = expMeasure.Measure; return(expMeasure.Measure.MeasureID); } } // Nothing found in experiment - Check full measure list VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var query = from p in db.Measures select p; foreach (var item in query) { if ((string.Compare(item.Category, measureName) == 0) && (string.Compare(item.SubCategory, factorName) == 0) && (string.Compare(item.Name, levelName) == 0)) { measure = item; return(item.MeasureID); } } measure = null; return(-1); }
public void DeleteExperimentDisplays(Experiment experiment) { if (experiment == null) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var oldExperimentMeasures = from ed in db.ExperimentDisplays where ed.ExperimentID == experiment.ExperimentID select ed; db.ExperimentDisplays.DeleteAllOnSubmit(oldExperimentMeasures); db.SubmitChanges(); }
private void ClearExperimentEntities() { if (CurExperiment == null) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var oldEntities = from e in db.ExperimentEntities where e.ExperimentID == CurExperiment.ExperimentID select e; db.ExperimentEntities.DeleteAllOnSubmit(oldEntities); db.SubmitChanges(); }
public void LoadExperiementDisplays(Experiment currentExperiment, ObservableCollection <User> experimentUsers) { VisDashboardDataDataContext db = null; // Parameter checking if ((currentExperiment == null) || (experimentUsers == null) || (experimentUsers.Count == 0)) { return; } // Connect to database db = new VisDashboardDataDataContext(); var query = from ed in db.ExperimentDisplays where ed.ExperimentID == currentExperiment.ExperimentID select ed; ExperimentDisplay[] expDisplays = query.ToArray(); // Clear Radio buttons ClearRadioButtons(); // Fill out the radio button table for (int i = 0; i < expDisplays.Length; i++) { for (int j = 0; j < this.Count; j++) { if (this[j].DisplayID == expDisplays[i].DisplayID) { for (int z = 0; z < experimentUsers.Count; z++) { if (experimentUsers[z].UserID == expDisplays[i].UserID) { // Set the radio button this[j][z] = RadioButtonType.On; break; } } break; } } } // Recalculate all rollups RefreshAllCol(); }
public void LoadUserExperiments(User user) { if (user.UserID <= 0) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var exp = from e in db.Experiments where e.CreatorID == user.UserID select e; Experiments = exp.ToArray(); ExperimentNames = (from e in db.Experiments where e.CreatorID == user.UserID select e.Name).ToArray(); }
public ObservableCollection <ConfigDisplay> LoadConfigDisplays() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ObservableCollection <ConfigDisplay> displayConfigsCol = null; if (CurConfig == null) { return(null); } // All Users in an experiment var diplayConfigs = from cd in db.ConfigDisplays where cd.ConfigID == CurConfig.ConfigID select cd; displayConfigsCol = new ObservableCollection <ConfigDisplay>(); diplayConfigs.ToList().ForEach(x => displayConfigsCol.Add(x)); return(displayConfigsCol); }
public void CreateDisplayDataModel(int pNumOperators) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); // Clear the existing list Clear(); // Setup number of operators if (pNumOperators > 0) { numOperators = pNumOperators; } var query = from d in db.Displays select d; foreach (var item in query) { Add(new DisplaySelection(item.Name, numOperators, item.DisplayID, item.ImageResourcePath)); } }
public void LoadExperimentConfigs(Experiment experiment) { if ((experiment == null) || (experiment.ExperimentID <= 0)) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var config = from c in db.Configs where c.ExperimentID == experiment.ExperimentID select c; Configs = config.ToArray(); ConfigNames = (from c in db.Configs where c.ExperimentID == experiment.ExperimentID select c.Name).ToArray(); CurExperimentID = experiment.ExperimentID; }
public bool AddNewConfig(CreateConfigInfo newConfigInfo) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { Config newConfig = new Config { Name = newConfigInfo.Name, ExperimentID = newConfigInfo.ExperimentID }; db.Configs.InsertOnSubmit(newConfig); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Config Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } finally { ts.Complete(); ts.Dispose(); db = null; } } return(true); }
public void SaveDatabaseChanges() { if (dbContext != null) { // Add pending adds foreach (UsersInExperiment addObject in pendingAdds) { // Make sure this add object does not already exist UsersInExperiment[] userInExperiment = (from uIe in dbContext.UsersInExperiments where ((uIe.UserID == addObject.UserID) && (uIe.ExperimentID == ExpDataModel.CurExperiment.ExperimentID)) select uIe).ToArray(); if (userInExperiment.Length == 0) { dbContext.UsersInExperiments.InsertOnSubmit(addObject); } } // Add pending deletes foreach (int deleteUserID in pendingDeletes) { UsersInExperiment[] userInExperiment = (from uIe in dbContext.UsersInExperiments where ((uIe.UserID == deleteUserID) && (uIe.ExperimentID == ExpDataModel.CurExperiment.ExperimentID)) select uIe).ToArray(); if (userInExperiment.Length == 1) { DatabaseHelper.DeleteByPK <UsersInExperiment, int>(userInExperiment[0].ID, dbContext); } } dbContext.SubmitChanges(); ts.Complete(); ts.Dispose(); dbContext = null; } }
public bool UpdateConfigDisplay(ConfigDisplay configDisplay, int width, int height) { if (configDisplay == null) { return false; } // Obtain the edited display display VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ConfigDisplay existingConfigDisplay = null; using (TransactionScope ts = new TransactionScope()) { try { var query = from cd in db.ConfigDisplays where cd.ConfigID == configDisplay.ConfigID && cd.Name == configDisplay.Name select cd; try { existingConfigDisplay = query.Single(); } catch (Exception) { return false; } // Update the size if needed if ((existingConfigDisplay.Width != width) || (existingConfigDisplay.Height != height)) { existingConfigDisplay.Width = width; existingConfigDisplay.Height = height; db.SubmitChanges(); } } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Deletion Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } catch (Exception e) { Console.WriteLine(e.Message); return false; } finally { ts.Complete(); ts.Dispose(); db = null; } } return true; }
public List<string> GetFactorLevels(string measureName, string factorToSum) { List<string> factorLevels = new List<string>(); // Loop through the experiments measures looking for experiment entities that match foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if ((expMeasure.Measure.Name != null) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorToSum) == 0) && ((expMeasure.ExperimentEntityID.HasValue) && (expMeasure.ExperimentEntityID != 0)) ) { factorLevels.Add(expMeasure.ExperimentEntity.Name); } } // Loop through measure table looking for measures that match if (factorLevels.Count == 0) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var query = from p in db.Measures select p; foreach (var measure in query) { if ((measure.Name != null) && (measure.Category != null) && (measure.Category.CompareTo(measureName) == 0) && (measure.SubCategory != null) && (measure.SubCategory.CompareTo(factorToSum) == 0)) { factorLevels.Add(measure.Name); } } } if (factorLevels.Count == 0) { return null; } // Remove any all or team List<string> factorsToRemove = new List<string>(); foreach (string factorLevel in factorLevels) { if ((factorLevel.CompareTo("All") == 0) || (factorLevel.CompareTo("Team") == 0)) { factorsToRemove.Add(factorLevel); } } factorsToRemove.ForEach(x => factorLevels.Remove(x)); return factorLevels; }
public void ScanDDDScenario(MeasuresDataModel measureDataModel) { List<String> dmIDs = new List<String>(); List<AssetEntity> entities = new List<AssetEntity>(); Dictionary<String, ExperimentEntity> entityMap = new Dictionary<string, ExperimentEntity>(); int operatorTypeID = -1; int assetTypeID = -1; try { if ((CurExperiment.ScenarioFilePath == null) || (CurExperiment.ScenarioFilePath.Length <= 0)) { return; } MessageBoxResult result = MessageBox.Show("Scanning a scenario file will clear all selections on the Measures tab. Do you wish to continue?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result != MessageBoxResult.Yes) { return; } // Open scenario file XPathDocument Doc = new XPathDocument(CurExperiment.ScenarioFilePath); XPathNavigator navigator = Doc.CreateNavigator(); navigator.MoveToRoot(); // Make sure this is a DDD Scenario file XPathNavigator node = navigator.SelectSingleNode("/Scenario/ScenarioName"); String scenarioName = node.Value; if ((scenarioName == null) || (scenarioName.Length <= 0)) { return; } // Get all of the DecisionMaker ids XPathNodeIterator iterator = navigator.Select("/Scenario/DecisionMaker"); String dmID = null; while (iterator.MoveNext()) { node = iterator.Current.SelectSingleNode("Identifier"); dmID = node.Value; if ((dmID == null) || (dmID.Length <= 0)) { continue; } dmIDs.Add(dmID); } // Get all of the entity names iterator = navigator.Select("/Scenario/Create_Event"); String entityID = null; while (iterator.MoveNext()) { string ownerName = null; node = iterator.Current.SelectSingleNode("ID"); entityID = node.Value; node = iterator.Current.SelectSingleNode("Owner"); if (node != null) { ownerName = node.Value; } if ((dmID == null) || (dmID.Length <= 0)) { continue; } AssetEntity newAssetEntity = new AssetEntity(); newAssetEntity.AssetName = entityID; newAssetEntity.OwnerName = ownerName; entities.Add(newAssetEntity); } // Clear the experiment measures measureDataModel.DeleteExperimentMeasures(CurExperiment); // Clear the experiment entities ClearExperimentEntities(); // Connect to database VisDashboardDataDataContext db = new VisDashboardDataDataContext(); // Get Entity type for operators var query = from et in db.EntityTypes where et.Name == "Operator" select et; try { operatorTypeID = query.Single().EntityTypeID; } catch (Exception) { return; } // Get Entity type for assets query = from et in db.EntityTypes where et.Name == "Asset" select et; try { assetTypeID = query.Single().EntityTypeID; } catch (Exception) { return; } // Add the new experiment DMs ExperimentEntity newExpEntity = null; foreach (String id in dmIDs) { newExpEntity = new ExperimentEntity(); newExpEntity.Name = id; newExpEntity.ExperimentID = CurExperiment.ExperimentID; newExpEntity.EntityTypeID = operatorTypeID; newExpEntity.OwnerExperimentEntityID = null; db.ExperimentEntities.InsertOnSubmit(newExpEntity); entityMap.Add(id, newExpEntity); } foreach (AssetEntity entity in entities) { newExpEntity = new ExperimentEntity(); newExpEntity.Name = entity.AssetName; newExpEntity.ExperimentID = CurExperiment.ExperimentID; newExpEntity.EntityTypeID = assetTypeID; if ((entity.OwnerName != null) && (entityMap.Keys.Contains(entity.OwnerName))) { newExpEntity.ExperimentEntity1 = entityMap[entity.OwnerName]; } else { newExpEntity.OwnerExperimentEntityID = null; } db.ExperimentEntities.InsertOnSubmit(newExpEntity); entityMap.Add(entity.AssetName, newExpEntity); } db.SubmitChanges(); // Add new Experiment Measures ExperimentMeasure newExperimentMeasure = null; var queryMeasures = from p in db.Measures select p; foreach(UsersInExperiment user in CurExperiment.UsersInExperiments) { foreach (var measure in queryMeasures) { if (measure.Name.CompareTo("Operator") == 0) { foreach (String id in dmIDs) { newExperimentMeasure = new ExperimentMeasure { ExperimentID = CurExperiment.ExperimentID, MeasureID = measure.MeasureID, UserID = user.UserID, ExperimentEntity = entityMap[id], Allowed = false }; db.ExperimentMeasures.InsertOnSubmit(newExperimentMeasure); } } else if (measure.Name.CompareTo("Asset") == 0) { foreach (AssetEntity entity in entities) { newExperimentMeasure = new ExperimentMeasure { ExperimentID = CurExperiment.ExperimentID, MeasureID = measure.MeasureID, UserID = user.UserID, ExperimentEntity = entityMap[entity.AssetName], Allowed = false }; db.ExperimentMeasures.InsertOnSubmit(newExperimentMeasure); } } } } db.SubmitChanges(); // Reload experiment measures measureDataModel.LoadExperiementMeasures(CurExperiment, UsersInExperiment); } catch (Exception) { return; } }
public Boolean RemoveCurrentDisplay() { // Remove the current display if it already exists VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ConfigDisplay existingConfigDisplay = null; using (TransactionScope ts = new TransactionScope()) { try { var query = from cd in db.ConfigDisplays where cd.ConfigID == CurConfig.ConfigID && cd.Name == CurConfigDisplay.Name select cd; try { existingConfigDisplay = query.Single(); } catch (Exception) { return(false); } // Delete any contained DisplayFactors foreach (DisplayFactor factor in existingConfigDisplay.DisplayFactors) { db.DisplayFactors.DeleteOnSubmit(factor); } // Delete any contained DisplayBlockedFactors foreach (DisplayBlockedFactor blockedFactor in existingConfigDisplay.DisplayBlockedFactors) { db.DisplayBlockedFactors.DeleteOnSubmit(blockedFactor); } // Delete this ConfigDisplay db.ConfigDisplays.DeleteOnSubmit(existingConfigDisplay); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Deletion Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } finally { ts.Complete(); ts.Dispose(); db = null; } } return(true); }
public void SaveExperiementDisplays(Experiment currentExperiment, ObservableCollection <User> experimentUsers) { VisDashboardDataDataContext db = null; // Parameter checking if ((currentExperiment == null) || (experimentUsers == null) || (experimentUsers.Count == 0)) { return; } // Connect to the database db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { // Remove old experiment measures entries var itemsToDelete = from em in db.ExperimentDisplays where em.ExperimentID == currentExperiment.ExperimentID select em; db.ExperimentDisplays.DeleteAllOnSubmit(itemsToDelete); // Loop through the data in radio button table for (int i = 0; i < this.Count; i++) { if (this[i].DisplayID > 0) { for (int j = 0; j < experimentUsers.Count; j++) { if (this[i][j] == RadioButtonType.On) { db.ExperimentDisplays.InsertOnSubmit(new ExperimentDisplay { ExperimentID = currentExperiment.ExperimentID, DisplayID = this[i].DisplayID, UserID = experimentUsers[j].UserID }); } } } } // Submit the database changes db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Failed to save database displays", MessageBoxButton.OK, MessageBoxImage.Error); return; } catch (Exception e) { Console.WriteLine(e.Message); return; } finally { // Cleanup ts.Complete(); ts.Dispose(); db = null; } } }
public Boolean AddCurrentDisplay() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { // Copy data into new object ConfigDisplay newConfigDisplay = new ConfigDisplay { Name = CurConfigDisplay.Name, ConfigID = CurConfig.ConfigID, DisplayID = CurConfigDisplay.Display.DisplayID, MeasureName = CurConfigDisplay.MeasureName, MetricName = CurConfigDisplay.MetricName, NumFactors = CurConfigDisplay.NumFactors, NumBlockedFactors = CurConfigDisplay.NumBlockedFactors, Width = CurConfigDisplay.Width, Height = CurConfigDisplay.Height }; // Copy DisplayFactors to new object foreach (DisplayFactor factor in CurConfigDisplay.DisplayFactors) { DisplayFactor newDisplayFactor = new DisplayFactor { FactorName = factor.FactorName, FactorLabel = factor.FactorLabel, FactorPos = factor.FactorPos }; newConfigDisplay.DisplayFactors.Add(newDisplayFactor); } // Copy DisplayBlockedFactors to new object foreach (DisplayBlockedFactor blockedFactor in CurConfigDisplay.DisplayBlockedFactors) { DisplayBlockedFactor newDisplayBlockedFactor = new DisplayBlockedFactor { MeasureID = blockedFactor.MeasureID, LevelName = blockedFactor.LevelName }; newConfigDisplay.DisplayBlockedFactors.Add(newDisplayBlockedFactor); } db.ConfigDisplays.InsertOnSubmit(newConfigDisplay); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } finally { ts.Complete(); ts.Dispose(); db = null; } } return(true); }
public ObservableCollection<ConfigDisplay> LoadConfigDisplays() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ObservableCollection<ConfigDisplay> displayConfigsCol = null; if (CurConfig == null) { return null; } // All Users in an experiment var diplayConfigs = from cd in db.ConfigDisplays where cd.ConfigID == CurConfig.ConfigID select cd; displayConfigsCol = new ObservableCollection<ConfigDisplay>(); diplayConfigs.ToList().ForEach(x => displayConfigsCol.Add(x)); return displayConfigsCol; }
public void LoadConfigInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); bool userFound = false; if (CurConfig == null) { return; } // Reset the CurConfigDisplay ClearConfigDisplay(); // Clear the Display Builder ClearDisplayBuilder(); // All Users in an experiment var allUsers = from uIe in db.UsersInExperiments where uIe.ExperimentID == CurExperimentID select uIe.User; // Load Users in Config var usersInExp = from u in db.Users join uIe in db.UsersInConfigs on new { u.UserID, ConfigID = CurConfig.ConfigID } equals new { uIe.UserID, uIe.ConfigID } orderby u.Username select u; UsersInConfig = new ObservableCollection<User>(); usersInExp.ToList().ForEach(x => UsersInConfig.Add(x)); ; // Load Users not in Config var usersNotInExp = allUsers.Except(usersInExp); UsersNotInConfig = new ObservableCollection<User>(); usersNotInExp.ToList().ForEach(x => UsersNotInConfig.Add(x)); // Load list of users names if ((usersInExp.ToList() != null) && (usersInExp.ToList().Count > 0)) { CurConfigUsers = new String[usersInExp.ToList().Count]; for (int i = 0; i < usersInExp.ToList().Count; i++) { CurConfigUsers[i] = usersInExp.ToList()[i].Username; } } else { CurConfigUsers = null; } // Load available measure names ConfigMeasuresTable = new ObservableCollection<ExperimentMeasure>(); List<ExperimentMeasure> expMeasuresAll = (from eM in db.ExperimentMeasures join uIc in db.UsersInConfigs on new { eM.UserID, ConfigID = CurConfig.ConfigID } equals new { uIc.UserID, uIc.ConfigID } where eM.ExperimentID == CurExperimentID select eM).ToList(); foreach (ExperimentMeasure expMeasure in expMeasuresAll) { if ((expMeasure.Allowed.HasValue) && (expMeasure.Allowed == false)) { continue; } // Make sure all users in configuration have access to this measure foreach (User user in UsersInConfig) { userFound = false; foreach (ExperimentMeasure expMeasure2 in expMeasuresAll) { if ((expMeasure2.UserID == user.UserID) && (expMeasure2.MeasureID == expMeasure.MeasureID)) { userFound = true; break; } } if (!userFound) { break; } } if (userFound) { // Add this measure to the available measure list ConfigMeasuresTable.Add(expMeasure); } } measureNames = new ObservableCollection<string>(); foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if (!MeasureNames.Contains(expMeasure.Measure.Category)) { MeasureNames.Add(expMeasure.Measure.Category); } } OnPropertyChanged("MeasureNames"); // Load Display Info LoadConfigDisplayInfo(); }
private void ClearExperimentEntities() { if (CurExperiment == null) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var oldEntities = from e in db.ExperimentEntities where e.ExperimentID == CurExperiment.ExperimentID select e; db.ExperimentEntities.DeleteAllOnSubmit(oldEntities); db.SubmitChanges(); }
public int LocateMeasureID(string measureName, string factorName, string levelName, out Measure measure) { foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if ((expMeasure.Measure.Name != null) && (expMeasure.Measure.Name.CompareTo(levelName) == 0) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorName) == 0) && ((!expMeasure.ExperimentEntityID.HasValue) || (expMeasure.ExperimentEntityID == 0)) ) { measure = expMeasure.Measure; return expMeasure.Measure.MeasureID; } else if ((expMeasure.Measure.Name != null) && (expMeasure.ExperimentEntityID > 0) && (expMeasure.ExperimentEntity.Name.CompareTo(levelName) == 0) && (expMeasure.Measure.Category != null) && (expMeasure.Measure.Category.CompareTo(measureName) == 0) && (expMeasure.Measure.SubCategory != null) && (expMeasure.Measure.SubCategory.CompareTo(factorName) == 0) ) { measure = expMeasure.Measure; return expMeasure.Measure.MeasureID; } } // Nothing found in experiment - Check full measure list VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var query = from p in db.Measures select p; foreach (var item in query) { if ((string.Compare(item.Category, measureName) == 0) && (string.Compare(item.SubCategory, factorName) == 0) && (string.Compare(item.Name, levelName) == 0)) { measure = item; return item.MeasureID; } } measure = null; return -1; }
public bool AddNewUser(CreateUserInfo newUserInfo) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { // Lookup the role ID Role desiredRole = null; var query = from p in db.Roles where p.RoleName == newUserInfo.UserInRole select p; try { desiredRole = query.Single(); } catch (Exception) { MessageBox.Show("Could not process user role.", "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } // Try to add new user to database User newUser = new User { Username = newUserInfo.Username, Password = newUserInfo.Password }; UserInRole newUserInRole = new UserInRole { ApplicationName = "DashboardPermissionTool", RoleID = desiredRole.RoleID }; newUserInRole.User = newUser; db.UserInRoles.InsertOnSubmit(newUserInRole); db.SubmitChanges(); ts.Complete(); } catch (SqlException e) { if (e.Message.Contains("Violation of UNIQUE KEY constraint 'U_Username'. Cannot insert duplicate key in object 'dbo.User'")) { MessageBox.Show("This user already exists.", "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Database Error: " + e.Message, "User Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); } return false; } catch (Exception e) { Console.WriteLine(e.Message); return false; } } return true; }
public void ScanDDDScenario(MeasuresDataModel measureDataModel) { List <String> dmIDs = new List <String>(); List <AssetEntity> entities = new List <AssetEntity>(); Dictionary <String, ExperimentEntity> entityMap = new Dictionary <string, ExperimentEntity>(); int operatorTypeID = -1; int assetTypeID = -1; try { if ((CurExperiment.ScenarioFilePath == null) || (CurExperiment.ScenarioFilePath.Length <= 0)) { return; } MessageBoxResult result = MessageBox.Show("Scanning a scenario file will clear all selections on the Measures tab. Do you wish to continue?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result != MessageBoxResult.Yes) { return; } // Open scenario file XPathDocument Doc = new XPathDocument(CurExperiment.ScenarioFilePath); XPathNavigator navigator = Doc.CreateNavigator(); navigator.MoveToRoot(); // Make sure this is a DDD Scenario file XPathNavigator node = navigator.SelectSingleNode("/Scenario/ScenarioName"); String scenarioName = node.Value; if ((scenarioName == null) || (scenarioName.Length <= 0)) { return; } // Get all of the DecisionMaker ids XPathNodeIterator iterator = navigator.Select("/Scenario/DecisionMaker"); String dmID = null; while (iterator.MoveNext()) { node = iterator.Current.SelectSingleNode("Identifier"); dmID = node.Value; if ((dmID == null) || (dmID.Length <= 0)) { continue; } dmIDs.Add(dmID); } // Get all of the entity names iterator = navigator.Select("/Scenario/Create_Event"); String entityID = null; while (iterator.MoveNext()) { string ownerName = null; node = iterator.Current.SelectSingleNode("ID"); entityID = node.Value; node = iterator.Current.SelectSingleNode("Owner"); if (node != null) { ownerName = node.Value; } if ((dmID == null) || (dmID.Length <= 0)) { continue; } AssetEntity newAssetEntity = new AssetEntity(); newAssetEntity.AssetName = entityID; newAssetEntity.OwnerName = ownerName; entities.Add(newAssetEntity); } // Clear the experiment measures measureDataModel.DeleteExperimentMeasures(CurExperiment); // Clear the experiment entities ClearExperimentEntities(); // Connect to database VisDashboardDataDataContext db = new VisDashboardDataDataContext(); // Get Entity type for operators var query = from et in db.EntityTypes where et.Name == "Operator" select et; try { operatorTypeID = query.Single().EntityTypeID; } catch (Exception) { return; } // Get Entity type for assets query = from et in db.EntityTypes where et.Name == "Asset" select et; try { assetTypeID = query.Single().EntityTypeID; } catch (Exception) { return; } // Add the new experiment DMs ExperimentEntity newExpEntity = null; foreach (String id in dmIDs) { newExpEntity = new ExperimentEntity(); newExpEntity.Name = id; newExpEntity.ExperimentID = CurExperiment.ExperimentID; newExpEntity.EntityTypeID = operatorTypeID; newExpEntity.OwnerExperimentEntityID = null; db.ExperimentEntities.InsertOnSubmit(newExpEntity); entityMap.Add(id, newExpEntity); } foreach (AssetEntity entity in entities) { newExpEntity = new ExperimentEntity(); newExpEntity.Name = entity.AssetName; newExpEntity.ExperimentID = CurExperiment.ExperimentID; newExpEntity.EntityTypeID = assetTypeID; if ((entity.OwnerName != null) && (entityMap.Keys.Contains(entity.OwnerName))) { newExpEntity.ExperimentEntity1 = entityMap[entity.OwnerName]; } else { newExpEntity.OwnerExperimentEntityID = null; } db.ExperimentEntities.InsertOnSubmit(newExpEntity); entityMap.Add(entity.AssetName, newExpEntity); } db.SubmitChanges(); // Add new Experiment Measures ExperimentMeasure newExperimentMeasure = null; var queryMeasures = from p in db.Measures select p; foreach (UsersInExperiment user in CurExperiment.UsersInExperiments) { foreach (var measure in queryMeasures) { if (measure.Name.CompareTo("Operator") == 0) { foreach (String id in dmIDs) { newExperimentMeasure = new ExperimentMeasure { ExperimentID = CurExperiment.ExperimentID, MeasureID = measure.MeasureID, UserID = user.UserID, ExperimentEntity = entityMap[id], Allowed = false }; db.ExperimentMeasures.InsertOnSubmit(newExperimentMeasure); } } else if (measure.Name.CompareTo("Asset") == 0) { foreach (AssetEntity entity in entities) { newExperimentMeasure = new ExperimentMeasure { ExperimentID = CurExperiment.ExperimentID, MeasureID = measure.MeasureID, UserID = user.UserID, ExperimentEntity = entityMap[entity.AssetName], Allowed = false }; db.ExperimentMeasures.InsertOnSubmit(newExperimentMeasure); } } } } db.SubmitChanges(); // Reload experiment measures measureDataModel.LoadExperiementMeasures(CurExperiment, UsersInExperiment); } catch (Exception) { return; } }
public void LoadUserExperiments(User user) { if (user.UserID <= 0) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var exp = from e in db.Experiments where e.CreatorID == user.UserID select e; Experiments = exp.ToArray(); ExperimentNames = (from e in db.Experiments where e.CreatorID == user.UserID select e.Name).ToArray(); }
public void LoadExperimentConfigs(Experiment experiment) { if ((experiment == null) || (experiment.ExperimentID <= 0)) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); var config = from c in db.Configs where c.ExperimentID == experiment.ExperimentID select c; Configs = config.ToArray(); ConfigNames = (from c in db.Configs where c.ExperimentID == experiment.ExperimentID select c.Name).ToArray(); CurExperimentID = experiment.ExperimentID; }
public void SaveScenarioFileInfo() { if (CurExperiment == null) { return; } VisDashboardDataDataContext db = new VisDashboardDataDataContext(); Experiment experiment = null; var query = from e in db.Experiments where e.ExperimentID == CurExperiment.ExperimentID select e; try { experiment = query.Single(); } catch (Exception) { return; } experiment.ScenarioFilePath = CurExperiment.ScenarioFilePath; experiment.ScenarioFileType = CurExperiment.ScenarioFileType; db.SubmitChanges(); }
public bool AddNewConfig(CreateConfigInfo newConfigInfo) { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { Config newConfig = new Config { Name = newConfigInfo.Name, ExperimentID = newConfigInfo.ExperimentID }; db.Configs.InsertOnSubmit(newConfig); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Config Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } catch (Exception e) { Console.WriteLine(e.Message); return false; } finally { ts.Complete(); ts.Dispose(); db = null; } } return true; }
public void LoadExperiementMeasures(Experiment currentExperiment, ObservableCollection <User> experimentUsers) { VisDashboardDataDataContext db = null; // Parameter checking if ((currentExperiment == null) || (experimentUsers == null) || (experimentUsers.Count == 0)) { return; } // Connect to database db = new VisDashboardDataDataContext(); var query = from em in db.ExperimentMeasures where em.ExperimentID == currentExperiment.ExperimentID select em; ExperimentMeasure [] expMeasures = query.ToArray(); // Clear Radio buttons ClearRadioButtons(); // Delete Existing scenerio specific entity measures for (int j = 0; j < fullMeasureCollection.Count; j++) { if (fullMeasureCollection[j].ExperimentEntityID > 0) { fullMeasureCollection.Remove(fullMeasureCollection[j]); j--; } } // Add scenerio specific entity measures int numAdded = 0; List <string> addedEntityNames = new List <string>(); for (int j = 0; j < fullMeasureCollection.Count; j++) { for (int i = 0; i < expMeasures.Length; i++) { if ((fullMeasureCollection[j].MeasureID == expMeasures[i].MeasureID) && (expMeasures[i].ExperimentEntityID > 0) && (addedEntityNames.Contains(expMeasures[i].ExperimentEntity.Name) != true)) { MeasureSelection insertMeasure = new MeasureSelection(expMeasures[i].ExperimentEntity.Name, fullMeasureCollection[j].Category, fullMeasureCollection[j].SubCategory, MeasureRowType.DataValue, numOperators, fullMeasureCollection[j].MeasureID); insertMeasure.ExperimentEntityID = (int)expMeasures[i].ExperimentEntityID; fullMeasureCollection.Insert(j + numAdded + 1, insertMeasure); addedEntityNames.Add(expMeasures[i].ExperimentEntity.Name); numAdded++; fullMeasureCollection[j].MeasureDisabled = true; } } j += numAdded; numAdded = 0; addedEntityNames.Clear(); } // Reload the display UpdateVisMeasureCollection(); // Fill out the radio button table for (int i = 0; i < expMeasures.Length; i++) { for (int j = 0; j < fullMeasureCollection.Count; j++) { if ((fullMeasureCollection[j].MeasureID == expMeasures[i].MeasureID) && ((!expMeasures[i].ExperimentEntityID.HasValue) || (fullMeasureCollection[j].ExperimentEntityID == expMeasures[i].ExperimentEntityID))) { for (int z = 0; z < experimentUsers.Count; z++) { if (experimentUsers[z].UserID == expMeasures[i].UserID) { if ((expMeasures[i].Allowed.HasValue && (expMeasures[i].Allowed == true)) || (expMeasures[i].Allowed.HasValue == false)) { // Set the radio button fullMeasureCollection[j][z] = RadioButtonType.On; break; } } } break; } } } // Recalculate all rollups RefreshAllCol(); // Recalculate Subcategory rollups RefreshSubCategory(); // Recalculated Category rollups RefreshCategory(); }
public void LoadConfigDisplayInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); bool userFound = false; if (CurConfig == null) { return; } // Load Available Display Names displayNames = new ObservableCollection<string>(); ConfigDisplayTable = new ObservableCollection<ExperimentDisplay>(); List<ExperimentDisplay> expDisplayAll = (from eD in db.ExperimentDisplays join uIc in db.UsersInConfigs on new { eD.UserID, ConfigID = CurConfig.ConfigID } equals new { uIc.UserID, uIc.ConfigID } where eD.ExperimentID == CurExperimentID select eD).ToList(); foreach (ExperimentDisplay expDisplay in expDisplayAll) { // Make sure all users in configuration have access to this display foreach (User user in UsersInConfig) { userFound = false; foreach (ExperimentDisplay expDisplay2 in expDisplayAll) { if ((expDisplay2.UserID == user.UserID) && (expDisplay2.DisplayID == expDisplay.DisplayID)) { userFound = true; break; } } if (!userFound) { break; } } if ((userFound) && (!DisplayNames.Contains(expDisplay.Display.Name))) { // Add this Display to the available Display list ConfigDisplayTable.Add(expDisplay); DisplayNames.Add(expDisplay.Display.Name); } } OnPropertyChanged("DisplayNames"); }
public void SaveDatabaseChanges() { if (dbContext != null) { // Add pending adds foreach (UsersInExperiment addObject in pendingAdds) { // Make sure this add object does not already exist UsersInExperiment[] userInExperiment = (from uIe in dbContext.UsersInExperiments where ((uIe.UserID == addObject.UserID) && (uIe.ExperimentID == ExpDataModel.CurExperiment.ExperimentID)) select uIe).ToArray(); if (userInExperiment.Length == 0) { dbContext.UsersInExperiments.InsertOnSubmit(addObject); } } // Add pending deletes foreach (int deleteUserID in pendingDeletes) { UsersInExperiment[] userInExperiment = (from uIe in dbContext.UsersInExperiments where ((uIe.UserID == deleteUserID) && (uIe.ExperimentID == ExpDataModel.CurExperiment.ExperimentID)) select uIe).ToArray(); if (userInExperiment.Length == 1) { DatabaseHelper.DeleteByPK<UsersInExperiment, int>(userInExperiment[0].ID, dbContext); } } dbContext.SubmitChanges(); ts.Complete(); ts.Dispose(); dbContext = null; } }
public Boolean AddCurrentDisplay() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); using (TransactionScope ts = new TransactionScope()) { try { // Copy data into new object ConfigDisplay newConfigDisplay = new ConfigDisplay { Name = CurConfigDisplay.Name, ConfigID = CurConfig.ConfigID, DisplayID = CurConfigDisplay.Display.DisplayID, MeasureName = CurConfigDisplay.MeasureName, MetricName = CurConfigDisplay.MetricName, NumFactors = CurConfigDisplay.NumFactors, NumBlockedFactors = CurConfigDisplay.NumBlockedFactors, Width = CurConfigDisplay.Width, Height = CurConfigDisplay.Height }; // Copy DisplayFactors to new object foreach (DisplayFactor factor in CurConfigDisplay.DisplayFactors) { DisplayFactor newDisplayFactor = new DisplayFactor { FactorName = factor.FactorName, FactorLabel = factor.FactorLabel, FactorPos = factor.FactorPos }; newConfigDisplay.DisplayFactors.Add(newDisplayFactor); } // Copy DisplayBlockedFactors to new object foreach (DisplayBlockedFactor blockedFactor in CurConfigDisplay.DisplayBlockedFactors) { DisplayBlockedFactor newDisplayBlockedFactor = new DisplayBlockedFactor { MeasureID = blockedFactor.MeasureID, LevelName = blockedFactor.LevelName }; newConfigDisplay.DisplayBlockedFactors.Add(newDisplayBlockedFactor); } db.ConfigDisplays.InsertOnSubmit(newConfigDisplay); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Creation Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } catch (Exception e) { Console.WriteLine(e.Message); return false; } finally { ts.Complete(); ts.Dispose(); db = null; } } return true; }
public void LoadConfigInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); bool userFound = false; if (CurConfig == null) { return; } // Reset the CurConfigDisplay ClearConfigDisplay(); // Clear the Display Builder ClearDisplayBuilder(); // All Users in an experiment var allUsers = from uIe in db.UsersInExperiments where uIe.ExperimentID == CurExperimentID select uIe.User; // Load Users in Config var usersInExp = from u in db.Users join uIe in db.UsersInConfigs on new { u.UserID, ConfigID = CurConfig.ConfigID } equals new { uIe.UserID, uIe.ConfigID } orderby u.Username select u; UsersInConfig = new ObservableCollection <User>(); usersInExp.ToList().ForEach(x => UsersInConfig.Add(x));; // Load Users not in Config var usersNotInExp = allUsers.Except(usersInExp); UsersNotInConfig = new ObservableCollection <User>(); usersNotInExp.ToList().ForEach(x => UsersNotInConfig.Add(x)); // Load list of users names if ((usersInExp.ToList() != null) && (usersInExp.ToList().Count > 0)) { CurConfigUsers = new String[usersInExp.ToList().Count]; for (int i = 0; i < usersInExp.ToList().Count; i++) { CurConfigUsers[i] = usersInExp.ToList()[i].Username; } } else { CurConfigUsers = null; } // Load available measure names ConfigMeasuresTable = new ObservableCollection <ExperimentMeasure>(); List <ExperimentMeasure> expMeasuresAll = (from eM in db.ExperimentMeasures join uIc in db.UsersInConfigs on new { eM.UserID, ConfigID = CurConfig.ConfigID } equals new { uIc.UserID, uIc.ConfigID } where eM.ExperimentID == CurExperimentID select eM).ToList(); foreach (ExperimentMeasure expMeasure in expMeasuresAll) { if ((expMeasure.Allowed.HasValue) && (expMeasure.Allowed == false)) { continue; } // Make sure all users in configuration have access to this measure foreach (User user in UsersInConfig) { userFound = false; foreach (ExperimentMeasure expMeasure2 in expMeasuresAll) { if ((expMeasure2.UserID == user.UserID) && (expMeasure2.MeasureID == expMeasure.MeasureID)) { userFound = true; break; } } if (!userFound) { break; } } if (userFound) { // Add this measure to the available measure list ConfigMeasuresTable.Add(expMeasure); } } measureNames = new ObservableCollection <string>(); foreach (ExperimentMeasure expMeasure in ConfigMeasuresTable) { if (!MeasureNames.Contains(expMeasure.Measure.Category)) { MeasureNames.Add(expMeasure.Measure.Category); } } OnPropertyChanged("MeasureNames"); // Load Display Info LoadConfigDisplayInfo(); }
public Boolean RemoveCurrentDisplay() { // Remove the current display if it already exists VisDashboardDataDataContext db = new VisDashboardDataDataContext(); ConfigDisplay existingConfigDisplay = null; using (TransactionScope ts = new TransactionScope()) { try { var query = from cd in db.ConfigDisplays where cd.ConfigID == CurConfig.ConfigID && cd.Name == CurConfigDisplay.Name select cd; try { existingConfigDisplay = query.Single(); } catch (Exception) { return false; } // Delete any contained DisplayFactors foreach (DisplayFactor factor in existingConfigDisplay.DisplayFactors) { db.DisplayFactors.DeleteOnSubmit(factor); } // Delete any contained DisplayBlockedFactors foreach (DisplayBlockedFactor blockedFactor in existingConfigDisplay.DisplayBlockedFactors) { db.DisplayBlockedFactors.DeleteOnSubmit(blockedFactor); } // Delete this ConfigDisplay db.ConfigDisplays.DeleteOnSubmit(existingConfigDisplay); db.SubmitChanges(); } catch (SqlException e) { MessageBox.Show("Database Error: " + e.Message, "Display Deletion Failed", MessageBoxButton.OK, MessageBoxImage.Error); return false; } catch (Exception e) { Console.WriteLine(e.Message); return false; } finally { ts.Complete(); ts.Dispose(); db = null; } } return true; }
public void ReloadExperimentInfo() { VisDashboardDataDataContext db = new VisDashboardDataDataContext(); if (CurExperiment == null) { return; } // All Users var allUsers = (from u in db.Users join uIr in db.UserInRoles on new { u.UserID, RoleName = "Experimenter" } equals new { uIr.UserID, uIr.Role.RoleName } orderby u.Username select u) .Union (from u in db.Users join uIr in db.UserInRoles on new { u.UserID, RoleName = "Operator" } equals new { uIr.UserID, uIr.Role.RoleName } orderby u.Username select u); // Load Users in Experiment var usersInExp = from u in db.Users join uIe in db.UsersInExperiments on new { u.UserID, ExperimentID = CurExperiment.ExperimentID } equals new { uIe.UserID, uIe.ExperimentID } orderby u.Username select u; UsersInExperiment = new ObservableCollection<User>(); usersInExp.ToList().ForEach(x => UsersInExperiment.Add(x)); ; // Load Users not in Experiment var usersNotInExp = allUsers.Except(usersInExp); UsersNotInExperiment = new ObservableCollection<User>(); usersNotInExp.ToList().ForEach(x => UsersNotInExperiment.Add(x)); // Load list of users names if ((usersInExp.ToList() != null) && (usersInExp.ToList().Count > 0)) { CurExperimentUsers = new String[usersInExp.ToList().Count]; for (int i = 0; i < usersInExp.ToList().Count; i++) { CurExperimentUsers[i] = usersInExp.ToList()[i].Username; } } else { CurExperimentUsers = null; } }