package main import ( "bridging-rssa/config" "bridging-rssa/handlers/bpjs" icare "bridging-rssa/handlers/bpjs/i_care" "bridging-rssa/handlers/bpjs/jadwal_dokter" suratkontrol "bridging-rssa/handlers/bpjs/surat_kontrol" "log" _ "bridging-rssa/docs" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "github.com/joho/godotenv" cron "github.com/robfig/cron/v3" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // @title Crud User // @version 1 // @Description Rest API CRUD User // @host localhost:8080 func main() { err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } config.ConnectDB() r := gin.Default() scheduler := cron.New() defer scheduler.Stop() scheduler.AddFunc("0 2 * * *", func() { log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") for { success := jadwal_dokter.GetJadwalDokter() if success { log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===") break } } }) scheduler.AddFunc("10 2 8 * *", func() { log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER MONTHLY===") for { success := jadwal_dokter.GetDataJadwalDokter() if success { log.Println("=== SCHEDULE GET JADWAL DOKTER MONTHLY DONE ===") break } } }) go scheduler.Start() v1 := r.Group("/api") subspesialis := v1.Group("/subspesialis") { subspesialis.GET("/", bpjs.GetAllSubspesialis) } jadwalDokter := v1.Group("/jadwaldokter") { // jadwalDokter.GET("/", jadwal_dokter.GetJadwalDokter) jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) // jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetSpesialisByDate) jadwalDokter.GET("/tanggal/:tanggal", jadwal_dokter.GetJadwalSubspesialisByDate) jadwalDokter.GET("/tanggal/:tanggal/spesialis/:spesialis", jadwal_dokter.GetDokterBySpesialis) jadwalDokter.GET("/tanggal/:tanggal/subspesialis/:subspesialis", jadwal_dokter.GetDokterBySubspesialis) } suratKontrol := v1.Group("/suratkontrol") { suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/noSuratKontrol/:noSuratKontrol", suratkontrol.GetNomorSuratKontrol) suratKontrol.GET("/noSEP/:noSEP", suratkontrol.GetSuratKontrolBySEP) suratKontrol.GET("/printSurKon/:idxdaftar/tiperawat/:tiperawat", suratkontrol.PrintSurKon) suratKontrol.POST("/cari", suratkontrol.CariPasienTPP) suratKontrol.POST("/insert", suratkontrol.InsertSuratKontrol) suratKontrol.PUT("/update", suratkontrol.UpdateSuratKontrol) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) } iCare := v1.Group("/icare") { iCare.POST("/rs/validate", icare.GetFKRTL) iCare.POST("/pcare/validate", icare.GetFKTP) } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.POST("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.PUT("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.DELETE("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.Use(cors.New(cors.Config{ AllowOrigins: []string{"*"}, // or specific domains like "http://example.com" AllowMethods: []string{"GET", "POST", "PUT", "DELETE"}, AllowHeaders: []string{"Origin", "Content-Type"}, AllowCredentials: true, })) log.Println("JALAN DI PORT : 8080") err = r.Run(":8080") if err != nil { log.Fatal(err) } }