public string DispatchCommand(string[] commandParams, IServiceProvider serviceProvider)
        {
            string commandName = commandParams[0];

            var commandArg = commandParams.Skip(1).ToArray();

            string result = string.Empty;

            switch (commandName)
            {
            case "AddEmployee":
                var addEmployee = new AddEmployeeCommand(serviceProvider.GetService <EmployeeService>());
                result = addEmployee.Execute(commandArg);
                break;

            case "SetBirthday":
                var setBirthday = new SetBirthdayCommand(serviceProvider.GetService <EmployeeService>());
                result = setBirthday.Execute(commandArg);
                break;

            case "SetAddress":
                var setAddress = new SetAddressCommand(serviceProvider.GetService <EmployeeService>());
                result = setAddress.Execute(commandArg);
                break;

            case "EmployeeInfo":
                var employeeInfo = new EmployeeInfoCommand(serviceProvider.GetService <EmployeeService>());
                result = employeeInfo.Execute(commandArg);
                break;

            case "EmployeePersonalInfo":
                var employeePersonalInfo = new EmployeePersonalInfoCommand(serviceProvider.GetService <EmployeeService>());
                result = employeePersonalInfo.Execute(commandArg);
                break;

            case "SetManager":
                var setManager = new SetManagerCommand(serviceProvider.GetService <EmployeeService>());
                result = setManager.Execute(commandArg);
                break;

            case "ManagerInfo":
                var managerInfo = new ManagerInfoCommand(serviceProvider.GetService <EmployeeService>());
                result = managerInfo.Execute(commandArg);
                break;

            case "ListEmployeesOlderThan":
                var olderThan = new ListEmployeesOlderThanCommand(serviceProvider.GetService <EmployeeService>());
                result = olderThan.Execute(commandArg);
                break;

            default: throw new InvalidOperationException("Invalid command!");
            }
            return(result);
        }