private static void ValidDirectory()
        {
            Console.Write("> Your current directory is ");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("valid ");
            Console.ResetColor();
            Console.WriteLine("for generating code.");

            if (!ValidPaths.ContainsKey(Program.CurrentDirectory))
            {
                ValidPaths.Add(Program.CurrentDirectory, true);
            }
        }
        public static void NotValidDirectory()
        {
            Console.Write("> Your current directory is ");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("not valid ");
            Console.ResetColor();
            Console.WriteLine("for generating code.");

            if (!ValidPaths.ContainsKey(Program.CurrentDirectory))
            {
                ValidPaths.Add(Program.CurrentDirectory, false);
            }

            Program.EmptyLine();
        }
        public static void CheckIfDirectoryIsValid()
        {
            if (ValidPaths.ContainsKey(Program.CurrentDirectory))
            {
                var valid = ValidPaths.First(m => m.Key.Equals(Program.CurrentDirectory)).Value;

                if (valid)
                {
                    ValidDirectory();
                    return;
                }

                NotValidDirectory();
                return;
            }

            var solutions = Directory.GetFiles(Program.CurrentDirectory, "*.sln");

            if (!solutions.Any())
            {
                NotValidDirectory();
                return;
            }

            var directories = Directory.GetDirectories(Program.CurrentDirectory);

            if (!directories.Any(directory => directory.Contains(".DAL", StringComparison.InvariantCultureIgnoreCase)) ||
                !directories.Any(directory => directory.Contains(".Providers", StringComparison.InvariantCultureIgnoreCase)) ||
                !directories.Any(directory => directory.Contains(".Services", StringComparison.InvariantCultureIgnoreCase)))
            {
                NotValidDirectory();
                return;
            }

            var directoryDAL       = directories.First(directory => directory.Contains(".DAL", StringComparison.InvariantCultureIgnoreCase));
            var directoryProviders = directories.First(directory => directory.Contains(".Providers", StringComparison.InvariantCultureIgnoreCase));
            var directoryServices  = directories.First(directory => directory.Contains(".Services", StringComparison.InvariantCultureIgnoreCase));

            ValidProjectDirectory(directoryDAL);
            ValidProjectDirectory(directoryProviders);
            ValidProjectDirectory(directoryServices);
            ValidDirectory();
        }
        public static void Actions(List <string> actions)
        {
            if (actions.Count <= 1)
            {
                Help();
                return;
            }

            var action = actions[1];

            switch (action.ToLower())
            {
            case "help":
                Help();
                return;

            case "providers":
                ProviderGenerator.GenerateProviders();
                Program.EmptyLine();
                return;

            case "services":
                ServiceGenerator.GenerateServices();
                Program.EmptyLine();
                return;

            case "valid":
                CheckIfDirectoryIsValid();
                Program.EmptyLine();
                return;

            case "viewmodel":
                var model = string.Empty;

                SetModules();

                if (actions.Count < 3)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    var modelname = Models.Any() ? Models.First().Value : "Model1";
                    Console.WriteLine($"You forget to give a model (example: generate viewmodel {modelname})");
                    Console.ResetColor();
                    Program.EmptyLine();
                    return;
                }

                if (Models.Any(m => m.Value.Equals(
                                   actions[2].Trim(),
                                   StringComparison.InvariantCultureIgnoreCase)))
                {
                    model = Models.First(m => m.Value.Equals(
                                             actions[2].Trim(),
                                             StringComparison.InvariantCultureIgnoreCase)).Value;

                    Console.WriteLine($"Model {model} geselecteerd");

                    Program.EmptyLine();
                    return;
                }

                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("We could not found your specified model");
                Console.ResetColor();

                Program.EmptyLine();
                return;

            case "models":
                CheckIfDirectoryIsValid();

                if (!ValidPaths.ContainsKey(Program.CurrentDirectory) ||
                    !ValidPaths.First(x => x.Key.Equals(Program.CurrentDirectory, StringComparison.InvariantCultureIgnoreCase)).Value)
                {
                    Program.EmptyLine();
                    return;
                }

                SetModules();
                PrintModules();
                Program.EmptyLine();
                return;

            default:
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("> The module 'generate' does not recognize your specified command, use 'generate help' to find your command.");
                Console.ResetColor();
                Program.EmptyLine();
                return;
            }
        }