public string ParseCommand(string line)
        {
            string[] commandParts = CommandUtilities.ParseCommandWithParameters(line);
            string   commandName  = commandParts[0];

            string[] commandParameters = new string[commandParts.Length - 1];
            for (int i = 1; i < commandParts.Length; i++)
            {
                commandParameters[i - 1] = commandParts[i];
            }

            string commandResult = "Invalid command!";

            switch (commandName)
            {
            case "AddAir":
                commandResult = this.AddAirTicket(
                    flightNumber: commandParameters[0],
                    from: commandParameters[1],
                    to: commandParameters[2],
                    airline: commandParameters[3],
                    dateTime: Parser.ParseDateTime(commandParameters[4]),
                    price: decimal.Parse(commandParameters[5]));
                break;

            case "DeleteAir":
                commandResult = this.DeleteAirTicket(
                    commandParameters[0]);
                break;

            case "AddTrain":
                commandResult = this.AddTrainTicket(
                    commandParameters[0],
                    commandParameters[1],
                    Parser.ParseDateTime(commandParameters[2]),
                    decimal.Parse(commandParameters[3]),
                    decimal.Parse(commandParameters[4]));
                break;

            case "DeleteTrain":
                commandResult = this.DeleteTrainTicket(
                    commandParameters[0],
                    commandParameters[1],
                    Parser.ParseDateTime(commandParameters[2]));
                break;

            case "AddBus":
                commandResult = this.AddBusTicket(
                    commandParameters[0],
                    commandParameters[1],
                    commandParameters[2],
                    Parser.ParseDateTime(commandParameters[3]),
                    decimal.Parse(commandParameters[4]));
                break;

            case "DeleteBus":
                commandResult = this.DeleteBusTicket(
                    commandParameters[0],
                    commandParameters[1],
                    commandParameters[2],
                    Parser.ParseDateTime(commandParameters[3]));
                break;

            case "FindTickets":
                commandResult = this.FindTickets(
                    commandParameters[0],
                    commandParameters[1]);
                break;

            case "FindTicketsInInterval":
                commandResult = this.FindTicketsInInterval(
                    Parser.ParseDateTime(commandParameters[0]),
                    Parser.ParseDateTime(commandParameters[1]));
                break;
            }

            return(commandResult);
        }