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" "github.com/gin-contrib/cors" "log" _ "bridging-rssa/docs" "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() 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, })) scheduler := cron.New() defer scheduler.Stop() // SCHEDULE HARIAN scheduler.AddFunc("0 2 * * *", func() { log.Println("=== RUNNING SCHEDULE GET JADWAL DOKTER ===") for { success := jadwal_dokter.GetJadwalDokterNew() if success { log.Println("=== SCHEDULE GET JADWAL DOKTER DONE ===") break } } }) //SCHEDULE TIAP 3 BULAN scheduler.AddFunc("10 2 * * 5", 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) } //API UNTUK JADWAL DOKTER jadwalDokter := v1.Group("/jadwaldokter") { jadwalDokter.GET("/date/:tanggal", jadwal_dokter.GetJadwalDokter) jadwalDokter.GET("/dpjp/:dpjp", jadwal_dokter.GetDokterByDPJP) 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) } // API UNTUK SURAT KONTROL suratKontrol := v1.Group("/suratkontrol") { suratKontrol.GET("/offset/:offset/limit/:limit", suratkontrol.GetDataSurKon) suratKontrol.GET("/idxdaftar/:idxdaftar/tiperawat/:tiperawat", suratkontrol.GetDataSurKonByID) suratKontrol.GET("/preview/idxdaftar/:idxdaftar/nomorsurkon/:nomorsurkon", suratkontrol.GetDataSurKonByNoSurkon) 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.PUT("/updatesurkon", suratkontrol.UpdateSuratKontrolnew) suratKontrol.POST("/delete", suratkontrol.DeleteSuratKontrol) suratKontrol.GET("/norm/:norm/limit/:limit/offset/:offset", suratkontrol.GethistoribyNorm) } 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)) log.Println("JALAN DI PORT : 8080") err = r.Run(":8080") if err != nil { log.Fatal(err) } }