add app setting letter out
This commit is contained in:
+80
-59
@@ -131,64 +131,96 @@ type repositories struct {
|
||||
departmentRepo *repository.DepartmentRepository
|
||||
userDeptRepo *repository.UserDepartmentRepository
|
||||
// letter outgoing repos
|
||||
letterOutgoingRepo *repository.LetterOutgoingRepository
|
||||
letterOutgoingAttachmentRepo *repository.LetterOutgoingAttachmentRepository
|
||||
letterOutgoingRecipientRepo *repository.LetterOutgoingRecipientRepository
|
||||
letterOutgoingDiscussionRepo *repository.LetterOutgoingDiscussionRepository
|
||||
letterOutgoingDiscussionAttachRepo *repository.LetterOutgoingDiscussionAttachmentRepository
|
||||
letterOutgoingActivityLogRepo *repository.LetterOutgoingActivityLogRepository
|
||||
approvalFlowRepo *repository.ApprovalFlowRepository
|
||||
letterOutgoingApprovalRepo *repository.LetterOutgoingApprovalRepository
|
||||
letterOutgoingRepo *repository.LetterOutgoingRepository
|
||||
letterOutgoingAttachmentRepo *repository.LetterOutgoingAttachmentRepository
|
||||
letterOutgoingRecipientRepo *repository.LetterOutgoingRecipientRepository
|
||||
letterOutgoingDiscussionRepo *repository.LetterOutgoingDiscussionRepository
|
||||
letterOutgoingDiscussionAttachRepo *repository.LetterOutgoingDiscussionAttachmentRepository
|
||||
letterOutgoingActivityLogRepo *repository.LetterOutgoingActivityLogRepository
|
||||
approvalFlowRepo *repository.ApprovalFlowRepository
|
||||
letterOutgoingApprovalRepo *repository.LetterOutgoingApprovalRepository
|
||||
}
|
||||
|
||||
func (a *App) initRepositories() *repositories {
|
||||
return &repositories{
|
||||
userRepo: repository.NewUserRepository(a.db),
|
||||
userProfileRepo: repository.NewUserProfileRepository(a.db),
|
||||
titleRepo: repository.NewTitleRepository(a.db),
|
||||
rbacRepo: repository.NewRBACRepository(a.db),
|
||||
labelRepo: repository.NewLabelRepository(a.db),
|
||||
priorityRepo: repository.NewPriorityRepository(a.db),
|
||||
institutionRepo: repository.NewInstitutionRepository(a.db),
|
||||
dispRepo: repository.NewDispositionActionRepository(a.db),
|
||||
letterRepo: repository.NewLetterIncomingRepository(a.db),
|
||||
letterAttachRepo: repository.NewLetterIncomingAttachmentRepository(a.db),
|
||||
activityLogRepo: repository.NewLetterIncomingActivityLogRepository(a.db),
|
||||
dispositionRouteRepo: repository.NewDispositionRouteRepository(a.db),
|
||||
letterDispositionRepo: repository.NewLetterIncomingDispositionRepository(a.db),
|
||||
letterDispositionDeptRepo: repository.NewLetterIncomingDispositionDepartmentRepository(a.db),
|
||||
letterDispActionSelRepo: repository.NewLetterDispositionActionSelectionRepository(a.db),
|
||||
dispositionNoteRepo: repository.NewDispositionNoteRepository(a.db),
|
||||
letterDiscussionRepo: repository.NewLetterDiscussionRepository(a.db),
|
||||
settingRepo: repository.NewAppSettingRepository(a.db),
|
||||
recipientRepo: repository.NewLetterIncomingRecipientRepository(a.db),
|
||||
departmentRepo: repository.NewDepartmentRepository(a.db),
|
||||
userDeptRepo: repository.NewUserDepartmentRepository(a.db),
|
||||
// letter outgoing repos
|
||||
letterOutgoingRepo: repository.NewLetterOutgoingRepository(a.db),
|
||||
letterOutgoingAttachmentRepo: repository.NewLetterOutgoingAttachmentRepository(a.db),
|
||||
letterOutgoingRecipientRepo: repository.NewLetterOutgoingRecipientRepository(a.db),
|
||||
letterOutgoingDiscussionRepo: repository.NewLetterOutgoingDiscussionRepository(a.db),
|
||||
letterOutgoingDiscussionAttachRepo: repository.NewLetterOutgoingDiscussionAttachmentRepository(a.db),
|
||||
letterOutgoingActivityLogRepo: repository.NewLetterOutgoingActivityLogRepository(a.db),
|
||||
approvalFlowRepo: repository.NewApprovalFlowRepository(a.db),
|
||||
letterOutgoingApprovalRepo: repository.NewLetterOutgoingApprovalRepository(a.db),
|
||||
userRepo: repository.NewUserRepository(a.db),
|
||||
userProfileRepo: repository.NewUserProfileRepository(a.db),
|
||||
titleRepo: repository.NewTitleRepository(a.db),
|
||||
rbacRepo: repository.NewRBACRepository(a.db),
|
||||
labelRepo: repository.NewLabelRepository(a.db),
|
||||
priorityRepo: repository.NewPriorityRepository(a.db),
|
||||
institutionRepo: repository.NewInstitutionRepository(a.db),
|
||||
dispRepo: repository.NewDispositionActionRepository(a.db),
|
||||
letterRepo: repository.NewLetterIncomingRepository(a.db),
|
||||
letterAttachRepo: repository.NewLetterIncomingAttachmentRepository(a.db),
|
||||
activityLogRepo: repository.NewLetterIncomingActivityLogRepository(a.db),
|
||||
dispositionRouteRepo: repository.NewDispositionRouteRepository(a.db),
|
||||
letterDispositionRepo: repository.NewLetterIncomingDispositionRepository(a.db),
|
||||
letterDispositionDeptRepo: repository.NewLetterIncomingDispositionDepartmentRepository(a.db),
|
||||
letterDispActionSelRepo: repository.NewLetterDispositionActionSelectionRepository(a.db),
|
||||
dispositionNoteRepo: repository.NewDispositionNoteRepository(a.db),
|
||||
letterDiscussionRepo: repository.NewLetterDiscussionRepository(a.db),
|
||||
settingRepo: repository.NewAppSettingRepository(a.db),
|
||||
recipientRepo: repository.NewLetterIncomingRecipientRepository(a.db),
|
||||
departmentRepo: repository.NewDepartmentRepository(a.db),
|
||||
userDeptRepo: repository.NewUserDepartmentRepository(a.db),
|
||||
letterOutgoingRepo: repository.NewLetterOutgoingRepository(a.db),
|
||||
letterOutgoingAttachmentRepo: repository.NewLetterOutgoingAttachmentRepository(a.db),
|
||||
letterOutgoingRecipientRepo: repository.NewLetterOutgoingRecipientRepository(a.db),
|
||||
letterOutgoingDiscussionRepo: repository.NewLetterOutgoingDiscussionRepository(a.db),
|
||||
letterOutgoingDiscussionAttachRepo: repository.NewLetterOutgoingDiscussionAttachmentRepository(a.db),
|
||||
letterOutgoingActivityLogRepo: repository.NewLetterOutgoingActivityLogRepository(a.db),
|
||||
approvalFlowRepo: repository.NewApprovalFlowRepository(a.db),
|
||||
letterOutgoingApprovalRepo: repository.NewLetterOutgoingApprovalRepository(a.db),
|
||||
}
|
||||
}
|
||||
|
||||
type processors struct {
|
||||
userProcessor *processor.UserProcessorImpl
|
||||
letterProcessor *processor.LetterProcessorImpl
|
||||
activityLogger *processor.ActivityLogProcessorImpl
|
||||
userProcessor *processor.UserProcessorImpl
|
||||
letterProcessor *processor.LetterProcessorImpl
|
||||
letterOutgoingProcessor *processor.LetterOutgoingProcessorImpl
|
||||
activityLogger *processor.ActivityLogProcessorImpl
|
||||
letterNumberGenerator *processor.LetterNumberGeneratorImpl
|
||||
}
|
||||
|
||||
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.priorityRepo, repos.institutionRepo, repos.dispRepo,
|
||||
letterNumberGen,
|
||||
)
|
||||
|
||||
letterOutgoingProc := processor.NewLetterOutgoingProcessor(
|
||||
a.db,
|
||||
repos.letterOutgoingRepo,
|
||||
repos.letterOutgoingAttachmentRepo,
|
||||
repos.letterOutgoingRecipientRepo,
|
||||
repos.letterOutgoingDiscussionRepo,
|
||||
repos.letterOutgoingDiscussionAttachRepo,
|
||||
repos.letterOutgoingActivityLogRepo,
|
||||
repos.approvalFlowRepo,
|
||||
repos.letterOutgoingApprovalRepo,
|
||||
letterNumberGen,
|
||||
txMgr,
|
||||
)
|
||||
|
||||
return &processors{
|
||||
userProcessor: processor.NewUserProcessor(repos.userRepo, repos.userProfileRepo),
|
||||
letterProcessor: 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.priorityRepo, repos.institutionRepo, repos.dispRepo),
|
||||
activityLogger: activity,
|
||||
userProcessor: processor.NewUserProcessor(repos.userRepo, repos.userProfileRepo),
|
||||
letterProcessor: letterProc,
|
||||
letterOutgoingProcessor: letterOutgoingProc,
|
||||
activityLogger: activity,
|
||||
letterNumberGenerator: letterNumberGen,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,25 +249,14 @@ func (a *App) initServices(processors *processors, repos *repositories, cfg *con
|
||||
|
||||
rbacSvc := service.NewRBACService(repos.rbacRepo)
|
||||
|
||||
masterSvc := service.NewMasterService(repos.labelRepo, repos.priorityRepo, repos.institutionRepo, repos.dispRepo)
|
||||
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)
|
||||
letterOutgoingSvc := service.NewLetterOutgoingService(
|
||||
a.db,
|
||||
repos.letterOutgoingRepo,
|
||||
repos.letterOutgoingAttachmentRepo,
|
||||
repos.letterOutgoingRecipientRepo,
|
||||
repos.letterOutgoingDiscussionRepo,
|
||||
repos.letterOutgoingDiscussionAttachRepo,
|
||||
repos.letterOutgoingActivityLogRepo,
|
||||
repos.approvalFlowRepo,
|
||||
repos.letterOutgoingApprovalRepo,
|
||||
txManager,
|
||||
)
|
||||
|
||||
letterOutgoingSvc := service.NewLetterOutgoingService(processors.letterOutgoingProcessor)
|
||||
|
||||
approvalFlowStepRepo := repository.NewApprovalFlowStepRepository(a.db)
|
||||
approvalFlowSvc := service.NewApprovalFlowService(
|
||||
a.db,
|
||||
|
||||
Reference in New Issue
Block a user