public void DeprecateCI() { ListItems(); Console.Write("Specify a CI to deprecate: "); string baseCI = Console.ReadLine(); Console.WriteLine("Before deprecating any CI, it is mandatory that you speak to all the responsible people of the dependant CIs"); var reports = new ReportsManager(_dbContext, this); var found = _dbContext.ConfigurationItems.Find(baseCI.ToUpper()); var node = reports.BuildNodesForCi(found); reports.PrintNodeTree(node); Console.ReadKey(); }
public void PerfomCiUpgradeOrDowngrade() { Console.WriteLine("PERFOM UPGRADE/DOWNGRADE"); Console.WriteLine(new string('-', 25)); _configurationItemManager.ListCIWithVersion(); Console.WriteLine(new string('-', 25)); Console.Write("Select Configuration Item to Ugrade/Downgrade: "); string selectedCi = Console.ReadLine()?.ToUpper(); var ci = _dbContext.ConfigurationItems.Find(selectedCi); if (ci == null) { _menuManager.PerformConsolePause("The given configuration item was not found in the database"); return; } bool versionValid = false; string writtenVersion = "0.0.0"; while (!versionValid) { Console.Write($"Enter new version ({ci.Version}): "); string version = Console.ReadLine()?.ToUpper(); var match = Regex.Match(version, _semVerPattern, RegexOptions.IgnoreCase); if (match.Success) { versionValid = true; writtenVersion = version; } else { Console.Write(" YOU ENTERED AN INVALID SEMANTIC VERSION NUMBER"); Console.WriteLine(); } } int[] newVersionChunks = writtenVersion.Split('.').Select(str => Int32.Parse(str)).ToArray(); int[] oldVersionChunks = ci.Version.Split('.').Select(str => Int32.Parse(str)).ToArray(); CINode node = _reportsManager.BuildNodesForCi(ci); //0 => Major //1 => Minor //2 => Patch if (oldVersionChunks[0] != newVersionChunks[0]) { Console.WriteLine("Detected Major Change in versions"); Console.WriteLine("Dangerous Action!"); Console.WriteLine("Changes were not saved !"); Console.WriteLine("HERE IS THE HIERARCHY TREE"); _reportsManager.PrintNodeTree(node); } else if (oldVersionChunks[1] != newVersionChunks[1]) { Console.WriteLine("Detected Minor Change in versions"); Console.WriteLine("It is possible that certain Items may be affected"); ci.Version = writtenVersion; _dbContext.Entry(ci).State = EntityState.Modified; _dbContext.SaveChanges(); Console.WriteLine("HERE IS THE HIERARCHY TREE"); _reportsManager.PrintNodeTree(node); } else if (oldVersionChunks[2] != newVersionChunks[2]) { Console.WriteLine("Detected a patch change"); ci.Version = writtenVersion; _dbContext.Entry(ci).State = EntityState.Modified; _dbContext.SaveChanges(); } else { Console.WriteLine("No changes detected at all"); } _menuManager.PerformConsolePause("Press any key to continue..."); }