Exemple #1
0
        private static Order GetOrder(ColaType colaType, int quantity)
        {
            Console.WriteLine(MessageLookup.ENTER_USERNAME);

            string username = Console.ReadLine();

            Console.WriteLine(MessageLookup.ENTER_PASSWORD);

            string password = Console.ReadLine();

            var colasOrdered = Colas.Take(quantity).ToList();

            var totalColaCount = Colas.Count(c => c.ColaType == colaType);

            //Contract.Requires<InvalidOperationException>(colasOrdered.Count < totalColaCount, ErrorMessageLookup.LOW_COLA);
            if (colasOrdered.Count > totalColaCount)
            {
                throw new InvalidOperationException(ErrorMessageLookup.LOW_COLA);
            }

            var money = new Money(0);

            foreach (var cola in colasOrdered)
            {
                money = money + cola.Price;
            }

            var order = new Order(Gateway.Pay(username, password, money), colasOrdered);

            foreach (var item in colasOrdered)
            {
                Colas.Remove(item);
            }

            return(order);
        }
Exemple #2
0
 public Cola(Money price, ColaType colaType)
 {
     this.ColaType = colaType;
     this.Price    = price;
 }