/// <summary> /// Badge service constructor /// </summary> /// <param name="repository">Repository</param> /// <param name="expenseManagerMapper">Mapper</param> /// <param name="unitOfWorkProvider">Unit of work provider</param> /// <param name="certifierResolver">Resolves badge certifiers according to badge name</param> /// <param name="accountBadgeRepository">Repository for accountBadges</param> /// <param name="accountsQuery">Query object for retrieving accounts</param> /// <param name="notAchievedBadgesQuery">Query for not achieved badges</param> internal BadgeService(ExpenseManagerRepository <BadgeModel, Guid> repository, Mapper expenseManagerMapper, IUnitOfWorkProvider unitOfWorkProvider, ExpenseManagerQuery <AccountModel> accountsQuery, IBadgeCertifierResolver certifierResolver, ExpenseManagerRepository <AccountBadgeModel, Guid> accountBadgeRepository, ExpenseManagerQuery <BadgeModel> notAchievedBadgesQuery) : base(BusinessLayerDIManager.Resolve <ExpenseManagerQuery <BadgeModel> >("ListBadgesQuery"), repository, expenseManagerMapper, unitOfWorkProvider) { _accountsQuery = accountsQuery; _certifierResolver = certifierResolver; _accountBadgeRepository = accountBadgeRepository; _notAchievedBadgesQuery = notAchievedBadgesQuery as NotAchievedBadgesQuery; }
/// <summary> /// This method gets called by the runtime. Use this method to add services to the container. /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { // Configure Identity persistence IdentityDatabaseInstaller.Install(services, Configuration.GetConnectionString("IdentityConnection")); // Configure Business Logic Layer BusinessLayerDIManager.BootstrapContainer(new ConnectionOptions { ConnectionString = Configuration.GetConnectionString("DefaultConnection") }); services.AddTransient <AccountFacade>(); services.AddTransient <BalanceFacade>(); services.AddTransient <ExpenseFacade>(); // Configure Presentation layer services.AddTransient <ICurrentAccountProvider, CurrentAccountProvider>(); services.AddSession(); services.AddSingleton <IAuthorizationHandler, HasAccountHandler>(); services.AddSingleton <IAuthorizationHandler, HasAccessRightsHandler>(); services.AddSingleton(typeof(Mapper), provider => { var config = new MapperConfiguration(cfg => { cfg.AddProfile <BussinessToViewModelMapping>(); }); return(config.CreateMapper()); }); services.AddAuthorization(options => { options.AddPolicy("HasAccount", policy => policy.Requirements.Add(new HasAccountRequirement())); options.AddPolicy("HasFullRights", policy => policy.Requirements.Add(new HasAccessRightsRequirement(AccountAccessType.Full))); }); var connectionString = Configuration.GetConnectionString("HangfireConnection"); //Used for periodic events management services.AddHangfire(cfg => cfg.UseSqlServerStorage(connectionString, new SqlServerStorageOptions { QueuePollInterval = TimeSpan.FromSeconds(60) })); services.AddMvc(options => { options.Filters.Add(new RequireHttpsAttribute()); }); }
private static void BootstrapBusinessLayerIoCContainer() { Func <DbContext> dbContextFactory = () => new ExpenseDbContext(Effort.DbConnectionFactory.CreatePersistent(ExpenseManagerTestDbConnection)); BusinessLayerInstaller.AddCustomComponent(Component.For <IUnitOfWorkProvider>() .Instance(Activator.CreateInstance(typeof(ExpenseManagerUnitOfWorkProvider), BindingFlags.Instance | BindingFlags.NonPublic, null, new object[] { dbContextFactory, new HttpContextUnitOfWorkRegistry( new ThreadLocalUnitOfWorkRegistry()) }, null, null) as ExpenseManagerUnitOfWorkProvider) .Named(Guid.NewGuid().ToString()) .LifestyleSingleton()); BusinessLayerDIManager.BootstrapContainer(new ConnectionOptions()); }