public NewIdeaListener(IInitiativeMessageReceiver initiativeMessageReceiver,
                               IInitiativeMessageSender initiativeMessageSender,
                               IInitiativeService initiativeService,
                               IRemedyService remedyService,
                               IPeopleService peopleService,
                               IInitiativeStatusEtaService initiativeStatusEtaService,
                               Serilog.ILogger logger)
        {
            EnsureArg.IsNotNull(initiativeMessageReceiver);
            EnsureArg.IsNotNull(initiativeMessageSender);
            EnsureArg.IsNotNull(initiativeService);
            EnsureArg.IsNotNull(remedyService);
            EnsureArg.IsNotNull(peopleService);
            EnsureArg.IsNotNull(initiativeStatusEtaService);
            EnsureArg.IsNotNull(logger);

            _initiativeMessageReceiver  = initiativeMessageReceiver;
            _initiativeMessageSender    = initiativeMessageSender;
            _initiativeService          = initiativeService;
            _remedyService              = remedyService;
            _peopleService              = peopleService;
            _initiativeStatusEtaService = initiativeStatusEtaService;
            _logger = logger ?? throw new ArgumentNullException("logger");

            _logger.Information("Starting messsage pump for New Initiatives");
            initiativeMessageReceiver.ReceiveMessages(initiativeCreatedHandler: OnNewInitiative);
        }
        public RemedyChecker(IRemedyService remedyService,
                             IInitiativeRepository initiativeRepository,
                             IInitiativeMessageSender initiativeMessageSender,
                             IPeopleService peopleService,
                             IInitiativeStatusEtaService initiativeStatusEtaService,
                             Serilog.ILogger logger,
                             IOptions <RemedyCheckerOptions> options)
        {
            _remedyService              = remedyService ?? throw new ArgumentNullException("remedyService");
            _initiativeRepository       = initiativeRepository ?? throw new ArgumentNullException("initiativeRepository");
            _initiativeMessageSender    = initiativeMessageSender ?? throw new ArgumentNullException("initiativeMessageSender");
            _peopleService              = peopleService ?? throw new ArgumentNullException("peopleService");
            _initiativeStatusEtaService = initiativeStatusEtaService ?? throw new ArgumentNullException("initiativeStatusEtaService");
            _logger = logger ?? throw new ArgumentException("logger");

            if (options == null || options.Value == null)
            {
                throw new ArgumentNullException("options");
            }
            _options = options.Value;
        }