using System.Diagnostics; using System.Drawing; using System.IO; using Contacts; using static Crayon.Output; using Crayon; /// /// Test program for the contacts manager. Currently, to use, export a contacts list from your Google account or iCloud, in a CSV format. Save this file to bin/Debug/net7.0/testResources. /// This will allow you to test with your own contacts. /// Please remove this file prior to any pushes to Github. /// public class Program { public static void Main(string[] args) { OperatingSystem os = Environment.OSVersion; // checking what OS is running Console.WriteLine("Platform: {0}", os.Platform); Console.WriteLine("Version: {0}", os.Version); Console.WriteLine("Service Pack: {0}", os.ServicePack); bool isMacOS = (os.Platform == PlatformID.MacOSX || os.Platform == PlatformID.Unix); FileIO fileIO = new FileIO(); Resolver? resolver; Console.Clear(); Console.ResetColor(); var rainbow = new Rainbow(0.5); Console.WriteLine(Bold(""" ___ _ _ / __\ ___ _ __ | |_ __ _ ___ | |_ ___ /\/\ ___ _ __ __ _ ___ _ __ / / / _ \ | '_ \ | __|/ _` | / __|| __|/ __| / \ / _ \| '__|/ _` | / _ \| '__| / /___| (_) || | | || |_| (_| || (__ | |_ \__ \ / /\/\ \| __/| | | (_| || __/| | \____/ \___/ |_| |_| \__|\__,_| \___| \__||___/ \/ \/ \___||_| \__, | \___||_| |___/ """)); // DrawLines(); Console.WriteLine($"\n{Output.Background.Red(White(new string('~', Console.BufferWidth - 2)))}"); Console.Write("> "); Point point = new Point(Console.CursorLeft, Console.CursorTop); bool isDebug = false; bool isExported = false; writeHelpCommand(Console.BufferWidth / 2, 9); Console.SetCursorPosition(point.X, point.Y); string? commandString = Console.ReadLine(); while (commandString != "exit") { List arguments = commandString.Split(" ").ToList(); string command = arguments[0]; arguments.RemoveAt(0); switch (command.ToLower()) { case "add": if (arguments.Count < 4) { Console.WriteLine("This command requires an argument. Use \"help\" for more info."); break; } Contact.AddContact(arguments[0], arguments[1], arguments[2], arguments[3]); break; case "remove": if (arguments.Count < 2) { Console.WriteLine("This command requires an argument. Use \"help\" for more info."); break; } string fullname = arguments[0]; fullname += " " + arguments[1]; Contact.RemoveContact(fullname); break; case "view": if (!isDebug) { if (isExported) { if (isMacOS) { Process.Start("/System/Applications/TextEdit.app/Contents/MacOS/TextEdit", Path.Combine(Directory.GetCurrentDirectory(), "yourContacts.save")); } else { Process.Start("notepad.exe", "yourContacts.save"); } } else { Console.WriteLine($"The database hasn't been exported to a {Red(".save")} file. Use {Cyan("EXPORT")} before using this command"); } } else { if (isMacOS) { Process.Start("/System/Applications/TextEdit.app/Contents/MacOS/TextEdit", Path.Combine(Directory.GetCurrentDirectory(), "yourContacts.save")); } else { Process.Start("notepad.exe", "yourContacts.save"); } } break; case "import": if (arguments.Count <= 0) { System.Console.WriteLine("This command requires an argument. Use \"help\" for more info."); break; } resolver = new Resolver(@arguments[0]); fileIO.Import(resolver); break; case "export": fileIO.Save(); isExported = true; Console.WriteLine($"Your new {Red(".save")} file has been saved @ {Path.Combine(Directory.GetCurrentDirectory(), "yourContacts.save")}"); // TODO: Some way to tell them that it was saved to a certain spot in their computer break; case "help": writeHelpCommand(0, 0); break; case "clear": Console.Clear(); break; case "debug": if (arguments.Count <= 0) { System.Console.WriteLine("This command requires an argument. Use \"help\" for more info."); break; } if (arguments[0] == "true") { isDebug = true; Console.WriteLine(Yellow("ABSOLUTE FILE PATH TO yourContacts.save: {0}"), Path.Combine(Directory.GetCurrentDirectory(), "yourContacts.save")); } else if (arguments[0] == "false") { isDebug = false; } else { Console.WriteLine("Invalid argument. Try again."); } break; case "": break; default: Console.WriteLine("Invalid Opperation. Try again."); break; } // DEAD LAST DO NOT TOUCHY Console.Write(rainbow.Next().Bold().Text("> ")); commandString = Console.ReadLine(); } } public static void DrawLines() { for (int i = 0; i < 1; i++) { if (i % 2 == 0) { Console.Write($"{Red(new string('*', 1))}"); Console.Write($"{Magenta(new string('*', 1))}"); Console.Write($"{Yellow(new string('*', 1))}"); } else { Console.Write($"{Yellow(new string('*', 1))}"); Console.Write($"{Magenta(new string('*', 1))}"); Console.Write($"{Red(new string('*', 1))}"); } } for (int i = 0; i < 51; i++) { if (i % 2 == 0) { Console.Write($"{Red(new string('*', 1))}"); Console.Write($"{Magenta(new string('*', 1))}"); Console.Write($"{Yellow(new string('*', 1))}"); } else { Console.Write($"{Yellow(new string('*', 1))}"); Console.Write($"{Magenta(new string('*', 1))}"); Console.Write($"{Red(new string('*', 1))}"); } //Console.Write($"{Cyan(new string('*', i))}"); // Console.WriteLine($"{('*', Console.BufferWidth - i))}"); } for (int i = 0; i < 33; i++) { if (i % 2 == 0) { Console.SetCursorPosition(153, 6 + i); Console.Write($"{Magenta(new string('*', 1))}"); Console.Write($"{Yellow(new string('*', 1))}"); } else { Console.SetCursorPosition(153, 6 + i); Console.Write($"{Red(new string('*', 1))}"); Console.Write($"{Yellow(new string('*', 1))}"); } // Console.WriteLine($"{('*', Console.BufferWidth - i))}"); if (i == 31) { } } Console.SetCursorPosition(1, 7); } private static void writeHelpCommand(int left, int top) { if (left == 0 && top == 0) { Console.WriteLine("Contacts Merger Help\n"); Console.WriteLine(Bold(Green("ADD {0} {1}")), new string('.', 8), " "); Console.WriteLine("Adds a new contact to the final save file"); Console.WriteLine(Bold(Yellow("REMOVE {0} {1}")), new string('.', 5), " "); Console.WriteLine("Removes contact from final save file"); Console.WriteLine(Bold(Blue("IMPORT {0} {1}")), new string('.', 5), ""); Console.WriteLine($"Brings in contacts from either a {Red(".csv")} file or a {Red(".vcf")} file."); Console.WriteLine(Bold(Cyan("EXPORT {0}")), new string('.', 5)); Console.WriteLine($"Takes all contacts taken from {Blue("IMPORT")} and compiles them-"); Console.WriteLine("-into a pipe-separated file."); Console.WriteLine(Bold(Magenta("VIEW {0}")), new string('.', 5)); Console.WriteLine($"Opens the .save file that has been exported."); Console.WriteLine(Bold(Yellow("EXIT {0}")), new string('.', 7)); Console.WriteLine($"Exits the program"); } else { Console.SetCursorPosition(left, top); Console.WriteLine("Contacts Merger Help\n"); Console.SetCursorPosition(left, top++); Console.WriteLine(Bold(Green("ADD {0} {1}")), new string('.', 8), " "); Console.SetCursorPosition(left, top++); Console.WriteLine("Adds a new contact to the final save file"); Console.SetCursorPosition(left, top++); Console.WriteLine(Bold(Yellow("REMOVE {0} {1}")), new string('.', 5), " "); Console.SetCursorPosition(left, top++); Console.WriteLine("Removes contact from final save file"); Console.SetCursorPosition(left, top++); Console.WriteLine(Bold(Blue("IMPORT {0} {1}")), new string('.', 5), ""); Console.SetCursorPosition(left, top++); Console.WriteLine($"Brings in contacts from either a {Red(".csv")} file or a {Red(".vcf")} file."); Console.SetCursorPosition(left, top++); Console.WriteLine(Bold(Cyan("EXPORT {0}")), new string('.', 5)); Console.SetCursorPosition(left, top++); Console.WriteLine($"Takes all contacts taken from {Blue("IMPORT")} and compiles-."); Console.SetCursorPosition(left, top++); Console.WriteLine("-into a pipe-separated file."); Console.SetCursorPosition(left, top++); Console.WriteLine(Bold(Magenta("VIEW {0}")), new string('.', 5)); Console.SetCursorPosition(left, top++); Console.WriteLine($"Opens the .save file that has been exported."); } } }