public static void RegisterContainers() { var builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetExecutingAssembly()); RegistrationExtensions.RegisterHubs(builder); #region Modules // Log4net module registration (this is for logging) XmlConfigurator.Configure(); builder.RegisterModule <Log4NetModule>(); #endregion #region Register Context & UnitOfWork builder.RegisterType <KCSGDbContext>().As <IKCSGDbContext>().InstancePerLifetimeScope(); builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerLifetimeScope(); var configurationService = new ConfigurationService(); builder.RegisterType <ConfigurationService>() .As <IConfigurationService>() .OnActivating(x => x.ReplaceInstance(configurationService)) .SingleInstance(); #endregion #region Register Domains #region Common Search builder.RegisterType <BaseDomain>().As <ICommonDomain>().InstancePerLifetimeScope(); builder.RegisterType <CommonSearchDomain>().As <ICommonSearchDomain>().InstancePerLifetimeScope(); #endregion builder.RegisterType <RetrievalOfOutOfSpecPreProductDomain>() .As <IRetrievalOfOutOfSpecPreProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StorageOfMaterialDomain>().As <IStorageOfMaterialDomain>().InstancePerLifetimeScope(); builder.RegisterType <StockTakingOfMaterialDomain>() .As <IStockTakingOfMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <MaterialSimulationDomain>().As <IMaterialSimulationDomain>().InstancePerLifetimeScope(); builder.RegisterType <SupplierDomain>().As <ISupplierDomain>().InstancePerLifetimeScope(); builder.RegisterType <MaterialDomain>().As <IMaterialDomain>().InstancePerLifetimeScope(); builder.RegisterType <PreProductDomain>().As <IPreProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <PrePdtMkpDomain>().As <IPrePdtMkpDomain>().InstancePerLifetimeScope(); builder.RegisterType <PdtPlnDomain>().As <IPdtPlnDomain>().InstancePerLifetimeScope(); builder.RegisterType <ProductDomain>().As <IProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <PckMtrDomain>().As <IPckMtrDomain>().InstancePerLifetimeScope(); builder.RegisterType <SubMaterialDomain>().As <ISubMaterialDomain>().InstancePerLifetimeScope(); builder.RegisterType <PreProductPlanDomain>().As <IPreProductPlanDomain>().InstancePerLifetimeScope(); builder.RegisterType <ConveyorDomain>().As <IConveyorDomain>().InstancePerLifetimeScope(); builder.RegisterType <MaterialRequirementListDomain>() .As <IMaterialRequirementListDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StorageOfWarehousePalletDomain>() .As <IStorageOfWarehousePalletDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RestorageOfMaterialDomain>() .As <IRestorageOfMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <Communication1Domain>() .As <ICommunication1Domain>().InstancePerLifetimeScope(); builder.RegisterType <Communication2Domain>() .As <ICommunication2Domain>().InstancePerLifetimeScope(); builder.RegisterType <Communication3Domain>() .As <ICommunication3Domain>() .InstancePerLifetimeScope(); builder.RegisterType <PreProductManagementDomain>() .As <IPreProductManagementDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StockTakingPreProductDomain>() .As <IStockTakingPreProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ProductCertificationDomain>() .As <IProductCertificationDomain>() .InstancePerLifetimeScope(); builder.RegisterType <MaterialShelfStatusDomain>() .As <IMaterialShelfStatusDomain>() .InstancePerLifetimeScope(); builder.RegisterType <WeighingEquipmentDomain>() .As <IWeighingEquipmentDomain>() .InstancePerLifetimeScope(); #region Material builder.RegisterType <MaterialPostReceptionInputDomain>() .As <IMaterialPostReceptionInputDomain>() .InstancePerLifetimeScope(); builder.RegisterType <MaterialReceptionDomain>().As <IMaterialReceptionDomain>().InstancePerLifetimeScope(); builder.RegisterType <AcceptanceOfMaterialDomain>() .As <IAcceptanceOfMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ForcedRetrievalOfRejectedMaterialDomain>() .As <IForcedRetrievalOfRejectedMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrieveOfMaterialDomain>().As <IRetrieveOfMaterialDomain>().InstancePerLifetimeScope(); builder.RegisterType <StorageOfSupplementaryMaterialDomain>() .As <IStorageOfSupplementaryMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <InterFloorMovementOfMaterialDomain>() .As <IInterFloorMovementOfMaterialDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrieveSupplierPalletDomain>() .As <IRetrieveSupplierPalletDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrievalOfWarehousePalletDomain>() .As <IRetrievalOfWarehousePalletDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StorageOfSupplierPalletDomain>() .As <IStorageOfSupplierPalletDomain>() .InstancePerLifetimeScope(); #endregion #region Material Reception Input builder.RegisterType <MaterialReceptionDomain>().As <IMaterialReceptionDomain>().InstancePerLifetimeScope(); #endregion #region Kneading Command builder.RegisterType <InputOfKneadingCommandDomain>() .As <IInputOfKneadingCommandDomain>() .InstancePerLifetimeScope(); #endregion #region Kneading command builder.RegisterType <KneadingStartEndControlDomain>() .As <IKneadingStartEndControlDomain>() .InstancePerLifetimeScope(); #endregion #region Management System builder.RegisterType <StartEndSystemDomain>().As <IStartEndSystemDomain>().InstancePerLifetimeScope(); builder.RegisterType <DailyProcessDomain>().As <IDailyProcessDomain>().InstancePerLifetimeScope(); builder.RegisterType <MonthlyProcessDomain>() .As <IMonthlyProcessDomain>() .InstancePerLifetimeScope(); #endregion #region Master database builder.RegisterType <DatabaseMaintainanceDomain>() .As <IDatabaseMaintainanceDomain>() .InstancePerLifetimeScope(); #endregion #region Tabletising builder.RegisterType <TabletisingStartStopDomain>() .As <ITabletisingStartStopDomain>() .InstancePerLifetimeScope(); builder.RegisterType <CreateTabletisingCommandDomain>() .As <ICreateTabletisingCommandDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ManagementOfProductLabelDomain>() .As <IManagementOfProductLabelDomain>() .InstancePerLifetimeScope(); #endregion #region PreProductManagement builder.RegisterType <PreProductManagementDomain>() .As <IPreProductManagementDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrievalOfPreProductDomain>() .As <IRetrievalOfPreProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ForcedRetrievalOfPreProductDomain>() .As <IForcedRetrievalOfPreProductDomain>() .InstancePerLifetimeScope(); #endregion #endregion #region Independent domains builder.RegisterType <LoginDomain>().As <ILoginDomain>().SingleInstance(); builder.RegisterType <IdentityService>().As <IIdentityService>().SingleInstance(); builder.RegisterType <ExportReportDomain>().As <IExportReportDomain>().SingleInstance(); #endregion #region Attributes builder.RegisterType <MvcAuthorizeAttribute>().PropertiesAutowired(); //builder.Register(c => new MvcAuthorizeAttribute()) // .PropertiesAutowired() // .AsAuthorizationFilterFor<Controller>().InstancePerHttpRequest(); builder.RegisterType <SignalrCookieAuthenticateAttribute>().PropertiesAutowired(); #endregion #region Services // Mvc authentication provider. // Notification service - broadcasting messages from domains to clients. builder.RegisterType <NotificationService>().As <INotificationService>().SingleInstance(); builder.RegisterType <LabelPrintService>().As <ILabelPrintService>().SingleInstance(); #endregion #region Product management builder.RegisterType <FontStorageOfSupplierPalletDomain>().As <IFontStorageOfSupplierPalletDomain>().InstancePerLifetimeScope(); builder.RegisterType <StorageOfProductDomain>().As <IStorageOfProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <ForceRetrievalOfProductDomain>() .As <IForcedRetrievalOfProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ProductShippingCommandDomain>() .As <IProductShippingCommandDomain>() .InstancePerLifetimeScope(); builder.RegisterType <InterFloorMovementOfProductDomain>() .As <IInterFloorMovementOfProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StockTakingOfProductDomain>() .As <IStockTakingOfProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RestorageOfProductDomain>().As <IRestorageOfProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <StorageOfEmptyProductPalletDomain>() .As <IStorageOfEmptyProductPalletDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrievalOfProductPalletDomain>() .As <IRetrievalOfProductPalletDomain>() .InstancePerLifetimeScope(); builder.RegisterType <StorageOfExternalPreProductDomain>() .As <IStorageOfExternalPreProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <ProductShippingPlanningDomain>() .As <IProductShippingPlanningDomain>() .InstancePerLifetimeScope(); builder.RegisterType <RetrievalOfExternalPreProductDomain>() .As <IRetrievalOfExternalProductDomain>() .InstancePerLifetimeScope(); builder.RegisterType <OutOfPlanProductDomain>().As <IOutOfPlanProductDomain>().InstancePerLifetimeScope(); #endregion #region Inquiry builder.RegisterType <InquiryByMaterialNameDomain>().As <IInquiryByMaterialNameDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryByPreProductDomain>().As <IInquiryByPreProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryByPreProductNameDomain>().As <IInquiryByPreProductNameDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryByExternalPreProductNameDomain>().As <IInquiryByExternalPreProductNameDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryBySupplierNameDomain>().As <IInquiryBySupplierNameDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryByProductNameDomain>().As <IInquiryByProductNameDomain>().InstancePerLifetimeScope(); //builder.RegisterType<InquiryByMaterialShelfStatusDomain>() // .As<IInquiryByMaterialShelfStatus>() // .InstancePerLifetimeScope(); //builder.RegisterType<InquiryByWarehouseLocationDomain>() // .As<IInquiryByWarehouseLocation>() // .InstancePerLifetimeScope(); builder.RegisterType <InquiryCommonDomain>() .As <IInquiryCommonDomain>() .InstancePerLifetimeScope(); builder.RegisterType <InquiryByProductDomain>().As <IInquiryByProductDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryKneadingLineNoDomain>().As <IInquiryKneadingLineNoDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryKneadingCommandNoDomain>().As <IInquiryKneadingCommandNoDomain>().InstancePerLifetimeScope(); builder.RegisterType <InquiryKneadingLotNoDomain>().As <IInquiryKneadingLotNoDomain>().InstancePerLifetimeScope(); builder.RegisterType <MaterialStockDomain>().As <IMaterialStockDomain>().InstancePerLifetimeScope(); builder.RegisterType <ManagementReportDomain>().As <IManagementReportDomain>().InstancePerLifetimeScope(); #endregion #region PreProduct Charging builder.RegisterType <PreProductChargingDomain>().As <IPreProductCharging>().InstancePerLifetimeScope(); #endregion #region Environment builder.RegisterType <EnvironmentBaseDomain>().As <IEnvironmentBaseDomain>().InstancePerLifetimeScope(); builder.RegisterType <CalculationOfControlLimitDomain>().As <ICalculationOfControlLimitDomain>().InstancePerLifetimeScope(); builder.RegisterType <LotDataCleanupDomain>().As <ILotDataCleanupDomain>().InstancePerLifetimeScope(); builder.RegisterType <ProductMasterManagementDomain>().As <IProductMasterManagementDomain>().InstancePerLifetimeScope(); builder.RegisterType <ControlLimitEditDomain>().As <IControlLimitEditDomain>().InstancePerLifetimeScope(); builder.RegisterType <CleanlinessDataInputDomain>().As <ICleanlinessDataInputDomain>().InstancePerLifetimeScope(); builder.RegisterType <LotDataSamplingDomain>().As <ILotDataSamplingDomain>().InstancePerLifetimeScope(); builder.RegisterType <XRTemperatureManagementDomain>().As <IXRTemperatureManagement>().InstancePerLifetimeScope(); builder.RegisterType <CreepingAndRollSpeedDurationDomain>().As <ICreepingAndRollSpeedDurationDomain>().InstancePerLifetimeScope(); builder.RegisterType <CreepingAndRollSpeedDataEditDomain>().As <ICreepingAndRollSpeedDataEditDomain>().InstancePerLifetimeScope(); builder.RegisterType <AvailabityDataEditDomain>().As <IAvailabityDataEditDomain>().InstancePerLifetimeScope(); #endregion var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); GlobalHost.DependencyResolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container); }
/// <summary> /// Register list of inversion of controls. /// </summary> public static void Register() { // Initiate container builder to register dependency injection. var containerBuilder = new ContainerBuilder(); #region Controllers & hubs // Controllers & hubs containerBuilder.RegisterApiControllers(typeof(Startup).Assembly); containerBuilder.RegisterControllers(typeof(Startup).Assembly); // Register your SignalR hubs. RegistrationExtensions.RegisterHubs(containerBuilder); #endregion #region Unit of work & Database context // Database context initialization. containerBuilder.RegisterType <RelationalDataContext>().As <DbContext>().InstancePerLifetimeScope(); // Unit of work registration. containerBuilder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerLifetimeScope(); #endregion #region Services // Time service. containerBuilder.RegisterType <TimeService>().As <ITimeService>().SingleInstance(); // Encryption service. containerBuilder.RegisterType <EncryptionService>().As <IEncryptionService>().SingleInstance(); // Handle businesses related to identity. containerBuilder.RegisterType <IdentityService>().As <IIdentityService>().SingleInstance(); // Handle businesses related to system configuration. containerBuilder.RegisterType <ConfigurationService>().As <IConfigurationService>().SingleInstance(); // Handle common businesses of repositories. containerBuilder.RegisterType <CommonRepository>().As <CommonRepository>().SingleInstance(); // Handle file business. containerBuilder.RegisterType <FileService>().As <IFileService>().SingleInstance(); // Handle queue business. containerBuilder.RegisterType <QueueService>().As <IQueueService>().SingleInstance(); // System email service. var systemEmailService = new SendGridService(); var sendGridMailConfigurationFile = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["SendGridMailTemplateConfiguration"]); systemEmailService.LoadEmailConfiguration(sendGridMailConfigurationFile); containerBuilder.RegisterType <SendGridService>() .As <IMailService>() .OnActivating(x => x.ReplaceInstance(systemEmailService)) .SingleInstance(); // Initiate signalr authorize attribute. containerBuilder.RegisterType <SignalrAuthorizeAttribute>().InstancePerLifetimeScope(); #endregion #region Modules // Log4net module registration (this is for logging) XmlConfigurator.Configure(); containerBuilder.RegisterModule <LogModule>(); #endregion #region Providers // Web api dependency registration. containerBuilder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); // Initiate bearer authentication settings. var bearerAuthenticationProvider = FindBearerAuthenticationSettings(); containerBuilder.RegisterType <BearerAuthenticationProvider>() .As <IBearerAuthenticationProvider>() .OnActivating(x => x.ReplaceInstance(bearerAuthenticationProvider)); #endregion #region IoC build // Container build. var container = containerBuilder.Build(); // Attach dependency injection into configuration. GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); GlobalHost.DependencyResolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container); #endregion }