public EventSourceController(ICommandManager commandManager)
        {
            _commandManager = commandManager;

            // set this one to eventsourced for testing

            // you would normally do this in DI, but we're supporting different
            // implementations here side-by-side for demonstration purposes
            _companyStateRepository = new EventSourcedMainRepository();
            _companyService         = new CompanyService(_companyStateRepository, new DateTimeProvider());
            _contactStateRepository = new EventSourcedMainRepository();
            _contactService         = new ContactService(_contactStateRepository, new DateTimeProvider());
            _projectStateRepository = new EventSourcedMainRepository();
            _projectService         = new ProjectService(_projectStateRepository, new DateTimeProvider());
            _productStateRepository = new EventSourcedMainRepository();
            _productService         = new ProductService(_productStateRepository, new DateTimeProvider());
            ConfigureCommandManager();
        }
 public CompanyService(ICompanyStateRepository repo, IDateTimeProvider dateTimeProvider)
 {
     _repo             = repo;
     _dateTimeProvider = dateTimeProvider;
 }
 public Company(ICompanyState state, ICompanyStateRepository repo) : this(state)
 {
     _repo = repo;
 }
 public CompaniesController(ICompanyStateRepository companyStateRepository)
 {
     _companyStateRepository = companyStateRepository;
 }