package provider import "abdanhafidz.com/go-boilerplate/controllers" type ControllerProvider interface { ProvideAdminAcademyController() controllers.AdminAcademyController ProvideAdminEventController() controllers.AdminEventController ProvideAdminExamController() controllers.AdminExamController ProvideAdminStatisticController() controllers.AdminStatisticController ProvideAdminProblemSetController() controllers.AdminProblemSetController ProvideAcademyController() controllers.AcademyController ProvideAcademyExamController() controllers.AcademyExamController ProvideAccountDetailController() controllers.AccountDetailController ProvideAuthenticationController() controllers.AuthenticationController ProvideEmailVerificationController() controllers.EmailVerificationController ProvideEventController() controllers.EventController ProvideEventExamController() controllers.EventExamController ProvideEventExamProctoringController() controllers.EventExamProctoringController ProvideForgotPasswordController() controllers.ForgotPasswordController ProvideOptionController() controllers.OptionController ProvideRegionController() controllers.RegionController ProvideUploadController() controllers.UploadController ProvideUserController() controllers.UserController ProvideSuperAdminInjectController() controllers.SuperAdminInjectController ProvideRepairController() controllers.RepairController } type controllerProvider struct { adminAcademyController controllers.AdminAcademyController adminEventController controllers.AdminEventController adminExamController controllers.AdminExamController adminStatisticController controllers.AdminStatisticController adminProblemSetController controllers.AdminProblemSetController academyController controllers.AcademyController academyExamController controllers.AcademyExamController accountDetailController controllers.AccountDetailController authenticationController controllers.AuthenticationController emailVerificationController controllers.EmailVerificationController eventController controllers.EventController eventExamController controllers.EventExamController eventExamProctoringController controllers.EventExamProctoringController forgotPasswordController controllers.ForgotPasswordController optionController controllers.OptionController regionController controllers.RegionController uploadController controllers.UploadController userController controllers.UserController superAdminInjectController controllers.SuperAdminInjectController repairController controllers.RepairController } func NewControllerProvider(servicesProvider ServicesProvider) ControllerProvider { adminEventController := controllers.NewAdminEventController(servicesProvider.ProvideAdminEventService()) adminExamController := controllers.NewAdminExamController(servicesProvider.ProvideAdminExamService()) adminStatisticController := controllers.NewAdminStatisticController(servicesProvider.ProvideAdminStatisticService()) adminAcademyController := controllers.NewAdminAcademyController(servicesProvider.ProvideAdminAcademyService()) adminProblemSetController := controllers.NewAdminProblemSetController(servicesProvider.ProvideProblemSetService()) academyController := controllers.NewAcademyController(servicesProvider.ProvideAcademyService()) academyExamController := controllers.NewAcademyExamController(servicesProvider.ProvideAcademyExamService()) accountDetailController := controllers.NewAccountDetailController(servicesProvider.ProvideAccountService()) authenticationController := controllers.NewAuthenticationController( servicesProvider.ProvideAccountService(), servicesProvider.ProvideExternalAuthService(), servicesProvider.ProvideEmailVerificationService(), ) emailVerificationController := controllers.NewEmailVerificationController(servicesProvider.ProvideEmailVerificationService()) eventController := controllers.NewEventController(servicesProvider.ProvideEventService()) eventExamController := controllers.NewEventExamController(servicesProvider.ProvideEventExamService()) eventExamProctoringController := controllers.NewEventExamProctoringController(servicesProvider.ProvideEventExamProctoringService()) forgotPasswordController := controllers.NewForgotPasswordController(servicesProvider.ProvideForgotPasswordService()) optionController := controllers.NewOptionController(servicesProvider.ProvideOptionService()) regionController := controllers.NewRegionController(servicesProvider.ProvideRegionService()) uploadController := controllers.NewUploadController(servicesProvider.ProvideUploadService()) userController := controllers.NewUserController(servicesProvider.ProvideAccountService()) superAdminInjectController := controllers.NewSuperAdminInjectController( servicesProvider.ProvideProblemSetService(), servicesProvider.ProvideZipInjectService(), ) repairController := controllers.NewRepairController(servicesProvider.ProvideRepairService()) return &controllerProvider{ adminAcademyController: adminAcademyController, adminEventController: adminEventController, adminExamController: adminExamController, adminStatisticController: adminStatisticController, adminProblemSetController: adminProblemSetController, academyController: academyController, academyExamController: academyExamController, accountDetailController: accountDetailController, authenticationController: authenticationController, emailVerificationController: emailVerificationController, eventController: eventController, eventExamController: eventExamController, eventExamProctoringController: eventExamProctoringController, forgotPasswordController: forgotPasswordController, optionController: optionController, regionController: regionController, uploadController: uploadController, userController: userController, superAdminInjectController: superAdminInjectController, repairController: repairController, } } // --- Getter Methods --- func (c *controllerProvider) ProvideAdminAcademyController() controllers.AdminAcademyController { return c.adminAcademyController } func (c *controllerProvider) ProvideAdminEventController() controllers.AdminEventController { return c.adminEventController } func (c *controllerProvider) ProvideAdminExamController() controllers.AdminExamController { return c.adminExamController } func (c *controllerProvider) ProvideAdminStatisticController() controllers.AdminStatisticController { return c.adminStatisticController } func (c *controllerProvider) ProvideAdminProblemSetController() controllers.AdminProblemSetController { return c.adminProblemSetController } func (c *controllerProvider) ProvideAcademyController() controllers.AcademyController { return c.academyController } func (c *controllerProvider) ProvideAcademyExamController() controllers.AcademyExamController { return c.academyExamController } func (c *controllerProvider) ProvideAccountDetailController() controllers.AccountDetailController { return c.accountDetailController } func (c *controllerProvider) ProvideAuthenticationController() controllers.AuthenticationController { return c.authenticationController } func (c *controllerProvider) ProvideEmailVerificationController() controllers.EmailVerificationController { return c.emailVerificationController } func (c *controllerProvider) ProvideEventController() controllers.EventController { return c.eventController } func (c *controllerProvider) ProvideEventExamController() controllers.EventExamController { return c.eventExamController } func (c *controllerProvider) ProvideEventExamProctoringController() controllers.EventExamProctoringController { return c.eventExamProctoringController } func (c *controllerProvider) ProvideForgotPasswordController() controllers.ForgotPasswordController { return c.forgotPasswordController } func (c *controllerProvider) ProvideOptionController() controllers.OptionController { return c.optionController } func (c *controllerProvider) ProvideRegionController() controllers.RegionController { return c.regionController } func (c *controllerProvider) ProvideUploadController() controllers.UploadController { return c.uploadController } func (c *controllerProvider) ProvideUserController() controllers.UserController { return c.userController } func (c *controllerProvider) ProvideSuperAdminInjectController() controllers.SuperAdminInjectController { return c.superAdminInjectController } func (c *controllerProvider) ProvideRepairController() controllers.RepairController { return c.repairController }