public String calculateDepositedAmountAgainstCostOfSoda(BigDecimal costOfSoda, BrandsOfSoda soda, int compared, boolean hasStock) {
        if (workingBalance.equals(new BigDecimal(ZERO_DOLLARS)) && hasStock) {
            return MESSAGE_PLEASE_INSERT_PROPER_AMOUNT_PREFIX + costOfSoda.toString() + CENTS;
        }

        if (compared == 0) {
            if (hasStock) {
                resetWorkingBalance();
            }
        } else if (compared == -1) {
            BigDecimal differenceInPriceAndMoneyInserted = costOfSoda.subtract(workingBalance);

            if (hasStock) {
                return MESSAGE_NEED_TO_INSERT_MORE_MONEY_PREFIX + differenceInPriceAndMoneyInserted + CENTS;
            }
        } else {
            String msg = "";
            if (hasStock) {
                BigDecimal overage = workingBalance.subtract(costOfSoda);
                setWorkingBalance(overage);
                msg = MESSAGE_DISPENSED_PREFIX + soda.toString() + MESSAGE_DISPENSED_OWE_CHANGE_SUFFIX + overage.toString() +
                        CENTS + COIN_RETURN_MESSAGE;
            }

            return msg;
        }

        return EMPTY_STRING;
    }