Exemple #1
0
        /*
         *  Builds the input message Command and argument(s).
         */
        /// <summary>
        /// Builds the input message Command and argument(s).
        /// </summary>
        /// <param name="inputMessage"></param>
        /// <param name="inputStrings"></param>
        /// <returns>AtmInputMessage object.</returns>
        private AtmInputMessage BuildInputMessage(
            AtmInputMessage inputMessage,
            List <string> inputStrings)
        {
            inputMessage.Command = GetCommand(inputStrings);
            inputMessage         = GetArguments(inputMessage, inputStrings);

            return(inputMessage);
        }
Exemple #2
0
        /*
         *  Gets Withdrawal or Inventory argument(s) depending on Command.
         */
        /// <summary>
        /// Gets Withdrawal or Inventory argument(s) depending on Command.
        /// </summary>
        /// <param name="inputMessage"></param>
        /// <param name="inputStrings"></param>
        /// <returns></returns>
        private AtmInputMessage GetArguments(
            AtmInputMessage inputMessage,
            List <string> inputStrings)
        {
            // Return if Error command or no args.
            if (inputMessage.Command == (int)CommandConstants.COMMAND_ENUM.Error ||
                inputStrings.Count <= 1)
            {
                return(inputMessage);
            }

            // Get Withdrawal Amount.
            if (inputMessage.Command == (int)CommandConstants.COMMAND_ENUM.Withdraw)
            {
                var isValid = int.TryParse(
                    inputStrings[InputConstants.AMOUNT],
                    NumberStyles.Currency,
                    CultureInfo.CurrentCulture,
                    out int amount);

                if (isValid)
                {
                    inputMessage.WithdrawalAmount = amount;
                }

                return(inputMessage);
            }

            // Get Inventory arguments.
            foreach (var amount in inputStrings.Skip(1))
            {
                var isValid = int.TryParse(
                    amount,
                    NumberStyles.Currency,
                    CultureInfo.CurrentCulture,
                    out int validAmount);

                if (isValid)
                {
                    inputMessage.CountRequests.Add(validAmount);
                }
            }

            // Remove Inventory request duplicates.
            inputMessage.CountRequests =
                inputMessage.CountRequests.Distinct().ToList();

            return(inputMessage);
        }
Exemple #3
0
        /*
         *    The GetInputMessage method prompts the user for input and
         *  returns an AtmInputMessage object.
         */
        /// <summary>
        ///    The GetInputMessage method prompts the user for input and
        ///    returns an AtmInputMessage object.
        ///    <example>
        ///    Example:
        ///    <code>
        ///       var inputMessage = _inputService.GetInputMessage();
        ///    </code>
        ///    returns an AtmInputMessage object.
        ///    </example>
        /// </summary>
        /// <returns>Returns an AtmInputMessage object.</returns>
        public AtmInputMessage GetInputMessage()
        {
            var inputMessage = new AtmInputMessage();

            // Get Command Input and split into strings delimited by spaces.
            var inputStrings = Console.ReadLine().Split(' ').ToList();

            // Validate inputStrings length.
            if (inputStrings.Count > (AtmConstants.MAX_INPUT_ARGUMENTS + 1) ||
                inputStrings.Count < AtmConstants.MIN_INPUT_ARGUMENTS + 1)
            {
                inputMessage.Command = (int)CommandConstants.COMMAND_ENUM.Error;
                return(inputMessage);
            }

            inputMessage = BuildInputMessage(inputMessage, inputStrings);

            return(inputMessage);
        }