public InventoryManager(
     ISendsEmails emailer,
     IAmqpQueue queue,
     IDatabase database,
     IRecipesApi recipesApi)
 {
     _emailer    = emailer;
     _queue      = queue;
     _database   = database;
     _recipesApi = recipesApi;
 }
        /// <summary>
        /// Invoked by the client (our Main method).  This method decides based on data at run-time
        /// which DeliveryCreator type we're eventually binding.  Thanks to (dynamic) polymorphism, the
        /// compiler is cool with us declaring the return type of this method as an abstract type.
        /// even though it will return a concrete subclass.
        /// In this case, the decision of which concrete type will eventually be bound is made by evaluating the
        /// value of a string `deliveryType` provided by the user of our client.
        /// </summary>
        /// <param name="deliveryType"></param>
        /// <param name="deliveryQueue"></param>
        /// <returns></returns>
        public static DeliveryCreator BuildDeliveryCreator(string deliveryType, IAmqpQueue deliveryQueue)
        {
            var logger = new ConsoleLogger();

            List <string> validDeliveryOptions = new() { "bicycle", "car" };

            if (!validDeliveryOptions.Contains(deliveryType))
            {
                logger.LogInfo("Please enter a type of delivery [bicycle, car]");
                throw new InvalidOperationException("Cannot set up delivery without valid deliveryType.");
            }

            return(deliveryType switch {
                "bicycle" => new BicycleDeliveryCreator(deliveryQueue, logger),
                "car" => new CarDeliveryCreator(deliveryQueue, logger),
                _ => throw new InvalidOperationException("Cannot set up delivery without valid Delivery Type."),
            });
        }
 public DeliveryCreator(IAmqpQueue deliveryQueue, IApplicationLogger logger)
 {
     _deliveryQueue = deliveryQueue;
     _logger        = logger;
 }
Exemplo n.º 4
0
 public AddressQueueCommand(IApplicationLogger logger, IAmqpQueue queue, string address)
 {
     _logger  = logger;
     _queue   = queue;
     _address = address;
 }
 public CarDeliveryCreator(IAmqpQueue deliveryQueue, IApplicationLogger logger) : base(deliveryQueue, logger)
 {
 }
 public SmsMessageDecorator(Notifier component, IAmqpQueue queue) : base(component)
 {
     _queue = queue;
 }