├── .nuget
├── NuGet.exe
└── NuGet.Config
├── Crucial-CQRS.png
├── API
├── Global.asax
├── Models
│ ├── User.cs
│ ├── Category.cs
│ └── Question.cs
├── Mappers
│ ├── QuestionToQuestionMapper.cs
│ └── CategoryMapper.cs
├── NLog.config
├── Global.asax.cs
├── App_Start
│ ├── WebApiConfig.cs
│ ├── RealtimeStartup.cs
│ └── Bootstraper.cs
├── Web.Debug.config
├── Web.Release.config
├── Properties
│ └── AssemblyInfo.cs
├── packages.config
└── Controllers
│ └── QuestionController.cs
├── Web
├── Web.config
├── templates
│ ├── settings.html
│ ├── menu.html
│ ├── category
│ │ ├── new.html
│ │ └── category.html
│ └── question
│ │ ├── new.html
│ │ └── question.html
├── js
│ ├── settings
│ │ ├── controller.js
│ │ └── module.js
│ ├── layout.js
│ ├── category
│ │ ├── module.js
│ │ └── factory.js
│ ├── question
│ │ ├── module.js
│ │ └── factory.js
│ ├── utils
│ │ └── utils.js
│ ├── app.js
│ └── signalr
│ │ └── signalrHubProxy.js
├── readme.txt
├── css
│ └── layout.css
├── Gruntfile.js
├── package.json
├── vwd.webinfo
├── bower.json
└── img
│ └── icons
│ └── ic_menu_24px.svg
├── Crucial.Qyz
├── packages.config
├── Domain
│ ├── QuestionType.cs
│ ├── Mementos
│ │ ├── UserCategoryMemento.cs
│ │ └── Question.cs
│ ├── Question.cs
│ └── QuestionBase.cs
├── app.config
├── Commands
│ ├── Question
│ │ ├── QuestionDeleteCommand.cs
│ │ ├── QuestionTextChangeCommand.cs
│ │ └── QuestionCreateCommand.cs
│ └── UserCategory
│ │ ├── UserCategoryDeleteCommand.cs
│ │ ├── UserCategoryCreateCommand.cs
│ │ ├── UserCategoryNameChangeCommand.cs
│ │ └── AddQuestionToCategoryCommand.cs
├── Events
│ ├── Question
│ │ ├── QuestionDeletedEvent.cs
│ │ ├── QuestionTextChangedEvent.cs
│ │ └── QuestionCreatedEvent.cs
│ └── UserCategory
│ │ ├── UserCategoryDeletedEvent.cs
│ │ ├── UserCategoryCreatedEvent.cs
│ │ ├── UserCategoryNameChangedEvent.cs
│ │ └── QuestionAddedToCategoryEvent.cs
├── EventHandlers
│ ├── Question
│ │ ├── QuestionDeletedEventHandler.cs
│ │ ├── QuestionCreatedEventHandler.cs
│ │ └── QuestionTextChangedEventHandler.cs
│ └── UserCategory
│ │ ├── UserCategoryNameChangedEventHandler.cs
│ │ ├── QuestionAddedToCategoryEventHandler.cs
│ │ ├── UserCategoryCreatedEventHandler.cs
│ │ └── UserCategoryDeletedEventHandler.cs
├── CommandHandlers
│ ├── Question
│ │ ├── QuestionDeleteCommandHandler.cs
│ │ ├── QuestionCreateCommandHandler.cs
│ │ └── QuestionTextChangeCommandHandler.cs
│ └── UserCategory
│ │ ├── UserCategoryDeleteCommandHandler.cs
│ │ ├── UserCategoryCreateCommandHandler.cs
│ │ ├── UserCategoryNameChangeCommandHandler.cs
│ │ └── AddQuestionToCategoryCommandHandler.cs
└── Properties
│ └── AssemblyInfo.cs
├── Crucial.EventStore
├── packages.config
├── Mappers
│ ├── AggregateMapper.cs
│ ├── EventMapper.cs
│ └── MementoMapper.cs
├── App.config
└── Properties
│ └── AssemblyInfo.cs
├── Crucial.Providers
├── packages.config
├── Filesystem
│ ├── Entities
│ │ ├── Enums
│ │ │ └── FilesystemPathSeparator.cs
│ │ ├── DirectoryUpdate.cs
│ │ ├── Directory.cs
│ │ └── Extensions
│ │ │ └── DirectoryExtensions.cs
│ ├── Interfaces
│ │ └── IDirectoryRepository.cs
│ ├── Exceptions
│ │ ├── GeneralException.cs
│ │ ├── PathNotFoundException.cs
│ │ └── DirectoryNotEmptyException.cs
│ ├── Mappers
│ │ └── DirectoryMapper.cs
│ └── DirectoryRepository.cs
├── Identity
│ ├── Data
│ │ ├── Identity.cs
│ │ ├── IIdentityDbContext.cs
│ │ ├── AspNetUserRoleConfiguration.cs
│ │ ├── AspNetUserClaimConfiguration.cs
│ │ ├── AspNetUserLoginConfiguration.cs
│ │ └── AspNetUserConfiguration.cs
│ ├── Interfaces
│ │ ├── IIdentityContextProvider.cs
│ │ └── IUserRepository.cs
│ ├── Entities
│ │ ├── Identity.cs
│ │ ├── AspNetUserRole.cs
│ │ ├── AspNetUserLogin.cs
│ │ ├── AspNetUserClaim.cs
│ │ └── AspNetUser.cs
│ └── UserRepository.cs
├── EventStore
│ ├── Entities
│ │ ├── BaseMemento.cs
│ │ ├── AggregateRoot.cs
│ │ ├── Event.cs
│ │ └── EventStore.cs
│ ├── Data
│ │ ├── IEventStoreContext.cs
│ │ ├── EventStore.cs
│ │ ├── AggregateRootConfiguration.cs
│ │ ├── EventConfiguration.cs
│ │ └── BaseMementoConfiguration.cs
│ ├── EventRepositoryAsync.cs
│ ├── MementoRepositoryAsync.cs
│ └── AggregateRepositoryAsync.cs
├── Questions
│ ├── Entities
│ │ ├── Questions.cs
│ │ ├── QuestionAnswer.cs
│ │ ├── Category.cs
│ │ └── Question.cs
│ ├── Data
│ │ ├── IQuestionsDbContext.cs
│ │ ├── Questions.cs
│ │ ├── QuestionAnswerConfiguration.cs
│ │ ├── QuestionConfiguration.cs
│ │ └── CategoryConfiguration.cs
│ ├── CategoryRepositoryAsync.cs
│ └── QuestionRepositoryAsync.cs
├── Properties
│ └── AssemblyInfo.cs
└── App.config
├── Crucial.Framework
├── Data
│ └── EntityFramework
│ │ ├── T4Templating
│ │ ├── EF.Reverse.POCO.ttinclude
│ │ └── EF.Reverse.POCO.Core.ttinclude
│ │ ├── IDatabaseContextProvider.cs
│ │ ├── IDbContext.cs
│ │ └── DatabaseContextProvider.cs
├── Entities
│ ├── EntityBase.cs
│ ├── ServiceEntityBase.cs
│ ├── ProviderEntityBase.cs
│ └── CqrsViewModel.cs
├── IoC
│ ├── IAutoRegister.cs
│ ├── StructureMap
│ │ ├── DependencyResolver.cs
│ │ └── ServiceActivator.cs
│ └── Windsor
│ │ └── Resolver.cs
├── DesignPatterns
│ ├── CQRS
│ │ ├── Utils
│ │ │ ├── IStateHelper.cs
│ │ │ ├── ICommandHandlerFactory.cs
│ │ │ ├── IEventHandlerFactory.cs
│ │ │ ├── StructureMapCommandHandlerFactory.cs
│ │ │ ├── Converter.cs
│ │ │ ├── StructureMapEventHandlerFactory.cs
│ │ │ └── StateHelper.cs
│ │ ├── Commands
│ │ │ ├── ICommand.cs
│ │ │ ├── ICommandHandler.cs
│ │ │ └── Command.cs
│ │ ├── Exceptions
│ │ │ ├── UnregisteredDomainEventException.cs
│ │ │ ├── UnregisteredDomainCommandException.cs
│ │ │ ├── ConcurrencyException.cs
│ │ │ └── AggregateNotFoundException.cs
│ │ ├── Messaging
│ │ │ ├── ICommandBus.cs
│ │ │ ├── IEventBus.cs
│ │ │ ├── CommandBus.cs
│ │ │ └── EventBus.cs
│ │ ├── Domain
│ │ │ ├── BasePoco.cs
│ │ │ ├── BaseMemento.cs
│ │ │ ├── IEventProvider.cs
│ │ │ └── AggregateRoot.cs
│ │ ├── Events
│ │ │ ├── IHandle.cs
│ │ │ ├── IEventHandler.cs
│ │ │ ├── IEvent.cs
│ │ │ └── Event.cs
│ │ └── Storage
│ │ │ ├── IRepository.cs
│ │ │ ├── IOriginator.cs
│ │ │ ├── IEventStorage.cs
│ │ │ └── Repository.cs
│ └── Repository
│ │ ├── ICountRepository.cs
│ │ ├── IDeleteRepository.cs
│ │ ├── IReadRepository.cs
│ │ ├── IUpdateRepository.cs
│ │ ├── Async
│ │ ├── IDeleteRepository.cs
│ │ ├── IUpdateRepository.cs
│ │ └── ICreateRepository.cs
│ │ ├── ICreateRepository.cs
│ │ ├── IPageableRepository.cs
│ │ └── IQueryableRepository.cs
├── Crucial.Framework.csproj.user
├── Enums
│ └── SortOrder.cs
├── Attributes
│ └── AllowCrossSiteJsonAttribute.cs
├── packages.config
├── App.config
├── Threading
│ └── NamedLocker.cs
├── Interceptors
│ └── PerformanceInterceptor.cs
├── Properties
│ └── AssemblyInfo.cs
└── Logging
│ └── ILogger.cs
├── Crucial.Services
├── Interfaces
│ ├── IQuestionManager.cs
│ └── ICategoryManager.cs
├── app.config
├── ServiceEntities
│ ├── Category.cs
│ └── Question.cs
├── Mappers
│ ├── CategoryMapper.cs
│ └── QuestionMapper.cs
├── Properties
│ └── AssemblyInfo.cs
└── QuestionManager.cs
└── Crucial.Tests
├── packages.config
├── NLog.config
├── App.config
├── Properties
└── AssemblyInfo.cs
└── Bootstrap
└── Dependencies.cs
/.nuget/NuGet.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andyhoyle/Crucial-CQRS/HEAD/.nuget/NuGet.exe
--------------------------------------------------------------------------------
/Crucial-CQRS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andyhoyle/Crucial-CQRS/HEAD/Crucial-CQRS.png
--------------------------------------------------------------------------------
/API/Global.asax:
--------------------------------------------------------------------------------
1 | <%@ Application Codebehind="Global.asax.cs" Inherits="API.WebApiApplication" Language="C#" %>
2 |
--------------------------------------------------------------------------------
/Web/Web.config:
--------------------------------------------------------------------------------
1 |
2 |