/// <summary> /// Establishes an association between a check and a project. /// </summary> /// <param name="checkName">Check to enable on project.</param> /// <param name="project">Project to enable check on.</param> public void EnableCheckForProject(string checkName, string project) { var checkRow = Checks.Single(c => c.Name.Equals(checkName)); var projectRow = Projects.Single(p => p.Name.Equals(project)); if (ProjectChecks.Any(row => row.CheckID == checkRow.ID && row.ProjectID == projectRow.ID)) { return; } ProjectChecks.AddProjectChecksRow(checkRow, projectRow); }
/// <summary> /// Removes the association between a check and a project. /// If the association doesn't exist, nothing happens. /// </summary> /// <param name="checkName">Check to disable on project.</param> /// <param name="project">Project to disable check on.</param> public void DisableCheckForProject(string checkName, string project) { var candidates = from pc in ProjectChecks join prj in Projects on pc.ProjectID equals prj.ID join check in Checks on pc.CheckID equals check.ID where check.Name.Equals(checkName) where prj.Name.Equals(project) select pc; if (candidates.Count() == 0) { return; } ProjectChecks.RemoveProjectChecksRow(candidates.First()); }
/// <summary> /// Establishes or removes an association between a check and all projects. /// </summary> /// <param name="checkName">Check to enable or disable on all projects.</param> /// <param name="enable">If true, an association will be established. If false, the association will be removed if any.</param> public void EnableCheckForAllProjects(object checkName, bool enable) { var checkRow = Checks.Single(c => c.Name.Equals(checkName)); if (enable) { //Add any missing entries for this check foreach (var projectRow in Projects) { if (ProjectChecks.Any(row => row.CheckID == checkRow.ID && row.ProjectID == projectRow.ID)) { continue; } ProjectChecks.AddProjectChecksRow(checkRow, projectRow); } } else { //Remove existing entries for this check ProjectChecks.Where(c => c.ChecksRow.Name.Equals(checkName)).ToList().ForEach(ProjectChecks.RemoveProjectChecksRow); } }