Init All Docs
This commit is contained in:
+96
-24
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
"eslogad-be/config"
|
||||
"eslogad-be/internal/client"
|
||||
internalConfig "eslogad-be/internal/config"
|
||||
"eslogad-be/internal/handler"
|
||||
"eslogad-be/internal/middleware"
|
||||
"eslogad-be/internal/processor"
|
||||
@@ -51,6 +52,7 @@ func (a *App) Initialize(cfg *config.Config) error {
|
||||
dispositionRouteHandler := handler.NewDispositionRouteHandler(services.dispositionRouteService)
|
||||
onlyOfficeHandler := handler.NewOnlyOfficeHandler(services.onlyOfficeService)
|
||||
analyticsHandler := handler.NewAnalyticsHandler(services.analyticsService)
|
||||
notificationHandler := handler.NewNotificationHandler(services.notificationService)
|
||||
|
||||
a.router = router.NewRouter(
|
||||
cfg,
|
||||
@@ -67,6 +69,7 @@ func (a *App) Initialize(cfg *config.Config) error {
|
||||
dispositionRouteHandler,
|
||||
onlyOfficeHandler,
|
||||
analyticsHandler,
|
||||
notificationHandler,
|
||||
)
|
||||
|
||||
return nil
|
||||
@@ -182,32 +185,39 @@ func (a *App) initRepositories() *repositories {
|
||||
}
|
||||
|
||||
type processors struct {
|
||||
userProcessor *processor.UserProcessorImpl
|
||||
letterProcessor *processor.LetterProcessorImpl
|
||||
letterOutgoingProcessor *processor.LetterOutgoingProcessorImpl
|
||||
activityLogger *processor.ActivityLogProcessorImpl
|
||||
letterNumberGenerator *processor.LetterNumberGeneratorImpl
|
||||
onlyOfficeProcessor *processor.OnlyOfficeProcessorImpl
|
||||
userProcessor *processor.UserProcessorImpl
|
||||
cachedUserProcessor *processor.CachedUserProcessor
|
||||
letterProcessor *processor.LetterProcessorImpl
|
||||
letterOutgoingProcessor *processor.LetterOutgoingProcessorImpl
|
||||
activityLogger *processor.ActivityLogProcessorImpl
|
||||
letterNumberGenerator *processor.LetterNumberGeneratorImpl
|
||||
onlyOfficeProcessor *processor.OnlyOfficeProcessorImpl
|
||||
novuProcessor processor.NovuProcessor
|
||||
notificationProcessor processor.NotificationProcessor
|
||||
recipientProcessor *processor.RecipientProcessorImpl
|
||||
letterDispositionProcessor *processor.LetterDispositionProcessorImpl
|
||||
letterDispositionDeptProcessor *processor.LetterDispositionDepartmentProcessorImpl
|
||||
}
|
||||
|
||||
func (a *App) initProcessors(cfg *config.Config, repos *repositories) *processors {
|
||||
txMgr := repository.NewTxManager(a.db)
|
||||
activity := processor.NewActivityLogProcessor(repos.activityLogRepo)
|
||||
|
||||
|
||||
// Create the letter number generator
|
||||
letterNumberGen := processor.NewLetterNumberGenerator(repos.settingRepo)
|
||||
|
||||
|
||||
// Create letter processors with the number generator
|
||||
letterProc := processor.NewLetterProcessor(
|
||||
repos.letterRepo, repos.letterAttachRepo, txMgr, activity,
|
||||
repos.letterDispositionRepo, repos.letterDispositionDeptRepo,
|
||||
repos.letterDispActionSelRepo, repos.dispositionNoteRepo,
|
||||
repos.letterDiscussionRepo, repos.settingRepo,
|
||||
repos.recipientRepo, repos.departmentRepo, repos.userDeptRepo,
|
||||
repos.recipientRepo, repos.letterOutgoingRecipientRepo,
|
||||
repos.departmentRepo, repos.userDeptRepo,
|
||||
repos.priorityRepo, repos.institutionRepo, repos.dispRepo,
|
||||
letterNumberGen,
|
||||
letterNumberGen, repos.dispositionRouteRepo,
|
||||
)
|
||||
|
||||
|
||||
letterOutgoingProc := processor.NewLetterOutgoingProcessor(
|
||||
a.db,
|
||||
repos.letterOutgoingRepo,
|
||||
@@ -220,14 +230,16 @@ func (a *App) initProcessors(cfg *config.Config, repos *repositories) *processor
|
||||
repos.letterOutgoingApprovalRepo,
|
||||
letterNumberGen,
|
||||
txMgr,
|
||||
repos.priorityRepo,
|
||||
repos.institutionRepo,
|
||||
)
|
||||
|
||||
|
||||
// Create document repositories
|
||||
docSessionRepo := repository.NewDocumentSessionRepository(a.db)
|
||||
docVersionRepo := repository.NewDocumentVersionRepository(a.db)
|
||||
docMetadataRepo := repository.NewDocumentMetadataRepository(a.db)
|
||||
docErrorRepo := repository.NewDocumentErrorRepository(a.db)
|
||||
|
||||
|
||||
// Create OnlyOffice processor
|
||||
onlyOfficeProc := processor.NewOnlyOfficeProcessor(
|
||||
a.db,
|
||||
@@ -237,14 +249,61 @@ func (a *App) initProcessors(cfg *config.Config, repos *repositories) *processor
|
||||
docErrorRepo,
|
||||
txMgr,
|
||||
)
|
||||
|
||||
// Create Novu processor for backward compatibility
|
||||
novuConfig := internalConfig.LoadNovuConfig(cfg)
|
||||
novuProc := processor.NewNovuProcessor(novuConfig)
|
||||
|
||||
// Create notification processor with Novu provider
|
||||
novuProvider := processor.NewNovuProvider(novuConfig)
|
||||
notificationProc := processor.NewNotificationProcessor(novuProvider, novuConfig.IncomingLetterWorkflowID)
|
||||
|
||||
// Create user processor with Novu integration
|
||||
userProc := processor.NewUserProcessor(repos.userRepo, repos.userProfileRepo)
|
||||
userProc.SetNovuProcessor(novuProc)
|
||||
|
||||
// Create cached user processor for auth middleware
|
||||
cachedUserProc := processor.NewCachedUserProcessor(repos.userRepo, repos.userProfileRepo)
|
||||
|
||||
// Create recipient processor
|
||||
recipientProc := processor.NewRecipientProcessor(
|
||||
repos.recipientRepo,
|
||||
repos.settingRepo,
|
||||
repos.departmentRepo,
|
||||
repos.userDeptRepo,
|
||||
)
|
||||
|
||||
// Create letter disposition processor
|
||||
letterDispositionProc := processor.NewLetterDispositionProcessor(
|
||||
repos.letterDispositionRepo,
|
||||
repos.letterDispositionDeptRepo,
|
||||
repos.letterDispActionSelRepo,
|
||||
repos.dispositionNoteRepo,
|
||||
repos.letterDiscussionRepo,
|
||||
repos.dispRepo,
|
||||
activity,
|
||||
)
|
||||
|
||||
// Create letter disposition department processor
|
||||
letterDispositionDeptProc := processor.NewLetterDispositionDepartmentProcessor(
|
||||
repos.letterDispositionDeptRepo,
|
||||
repos.dispositionNoteRepo,
|
||||
repos.letterRepo,
|
||||
)
|
||||
|
||||
return &processors{
|
||||
userProcessor: processor.NewUserProcessor(repos.userRepo, repos.userProfileRepo),
|
||||
letterProcessor: letterProc,
|
||||
letterOutgoingProcessor: letterOutgoingProc,
|
||||
activityLogger: activity,
|
||||
letterNumberGenerator: letterNumberGen,
|
||||
onlyOfficeProcessor: onlyOfficeProc,
|
||||
userProcessor: userProc,
|
||||
cachedUserProcessor: cachedUserProc,
|
||||
letterProcessor: letterProc,
|
||||
letterOutgoingProcessor: letterOutgoingProc,
|
||||
activityLogger: activity,
|
||||
letterNumberGenerator: letterNumberGen,
|
||||
onlyOfficeProcessor: onlyOfficeProc,
|
||||
novuProcessor: novuProc,
|
||||
notificationProcessor: notificationProc,
|
||||
recipientProcessor: recipientProc,
|
||||
letterDispositionProcessor: letterDispositionProc,
|
||||
letterDispositionDeptProcessor: letterDispositionDeptProc,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,6 +319,7 @@ type services struct {
|
||||
dispositionRouteService *service.DispositionRouteServiceImpl
|
||||
onlyOfficeService *service.OnlyOfficeServiceImpl
|
||||
analyticsService *service.AnalyticsServiceImpl
|
||||
notificationService *service.NotificationServiceImpl
|
||||
}
|
||||
|
||||
func (a *App) initServices(processors *processors, repos *repositories, cfg *config.Config) *services {
|
||||
@@ -277,10 +337,17 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
|
||||
masterSvc := service.NewMasterService(repos.labelRepo, repos.priorityRepo, repos.institutionRepo, repos.dispRepo, repos.departmentRepo)
|
||||
|
||||
letterSvc := service.NewLetterService(processors.letterProcessor)
|
||||
dispRouteSvc := service.NewDispositionRouteService(repos.dispositionRouteRepo)
|
||||
|
||||
txManager := repository.NewTxManager(a.db)
|
||||
letterSvc := service.NewLetterService(
|
||||
processors.letterProcessor,
|
||||
txManager,
|
||||
processors.letterNumberGenerator,
|
||||
processors.recipientProcessor,
|
||||
processors.activityLogger,
|
||||
processors.letterDispositionProcessor,
|
||||
processors.notificationProcessor,
|
||||
)
|
||||
dispRouteSvc := service.NewDispositionRouteService(repos.dispositionRouteRepo)
|
||||
letterOutgoingSvc := service.NewLetterOutgoingService(processors.letterOutgoingProcessor)
|
||||
|
||||
approvalFlowStepRepo := repository.NewApprovalFlowStepRepository(a.db)
|
||||
@@ -293,10 +360,14 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
|
||||
// Create OnlyOffice service with file storage
|
||||
onlyOfficeSvc := service.NewOnlyOfficeService(processors.onlyOfficeProcessor, &cfg.OnlyOffice, a.db, s3Client)
|
||||
|
||||
|
||||
// Create Analytics service
|
||||
analyticsSvc := service.NewAnalyticsService(repos.analyticsRepo)
|
||||
|
||||
|
||||
// Create Notification service
|
||||
novuConfig := internalConfig.LoadNovuConfig(cfg)
|
||||
notificationSvc := service.NewNotificationService(novuConfig, processors.userProcessor)
|
||||
|
||||
return &services{
|
||||
userService: userSvc,
|
||||
authService: authService,
|
||||
@@ -309,6 +380,7 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
dispositionRouteService: dispRouteSvc,
|
||||
onlyOfficeService: onlyOfficeSvc,
|
||||
analyticsService: analyticsSvc,
|
||||
notificationService: notificationSvc,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user