コード例 #1
0
        /// <summary>
        /// Lit et interprète la commande de l'utilisateur.
        /// </summary>
        /// <returns>Un booléen qui indique si l'utilisateur continue l'exécution.</returns>
        private bool ParseAnswer()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write(_contactManager.GetPrompt());
            Console.ResetColor();
            string userResponse = Console.ReadLine();
            string command      = userResponse.Split(" ")[0];

            string[] arguments = userResponse.Split(" ").Skip(1).ToArray();

            switch (command)
            {
            case "afficher":
                Console.WriteLine(_contactManager);
                break;

            case "enregistrer":
                SaveToFile(_serializationType);
                break;

            case "charger":
                LoadFromFile(_serializationType);
                break;

            case "ajouterdossier":
            case "addfolder":
                if (arguments.Length == 0)
                {
                    Console.WriteLine("Syntaxe incorrecte. Utilisez: ajouterdossier nom");
                }
                else
                {
                    _contactManager.AddFolder(arguments[0]);
                }
                break;

            case "ajoutercontact":
            case "addcontact":
                if (arguments.Length < 5)
                {
                    Console.WriteLine("Syntaxe incorrecte. Utilisez: ajoutercontact nom prenom email entreprise lien");
                }
                else
                {
                    try
                    {
                        if (_contactManager.AddContact(arguments[0], arguments[1], arguments[2], arguments[3], (Link)Enum.Parse(typeof(Link), arguments[4])))
                        {
                            Console.WriteLine("Contact ajouté");
                        }
                        else
                        {
                            Console.Error.WriteLine("Format de l'email invalide");
                        }
                    }
                    catch (ArgumentException e)
                    {
                        Console.Error.WriteLine($"Ajout du contact impossible: {e.Message}");
                    }
                }
                break;

            case "cd":
                if (arguments.Length == 0)
                {
                    Console.WriteLine("Syntaxe incorrecte. Utilisez: cd chemin. Par exemple: cd ../../dossier1/mondossier");
                }
                else
                {
                    _contactManager.ChangeDirectory(arguments[0]);
                }
                break;

            case "typeserialisation":
                if (arguments.Length == 0)
                {
                    Console.WriteLine("Syntaxe incorrecte. Utilisez: typeserialisation type. Par exemple: typeserialisation xml");
                }
                else
                {
                    _serializationType = arguments[0];
                    Console.WriteLine($"Le type de serialisation utilisé a été modifié en: {_serializationType}");
                }
                break;

            case "sortir":
            case "quit":
                return(false);

            case "":
            case "help":
                ShowHelp();
                break;

            default:
                Console.WriteLine($"La commande \"{command}\" n'a pas été reconnue. Faites help pour avoir la liste.");
                break;
            }
            return(true);
        }