.
This commit is contained in:
parent
50c7d6a345
commit
0a8ced6490
@ -18,15 +18,61 @@ type DeviceControlRequest struct {
|
|||||||
Action string `json:"action"`
|
Action string `json:"action"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Struct baru untuk menangkap input Token dari layar ESP32
|
||||||
|
type VerifyRequest struct {
|
||||||
|
Token string `json:"token"`
|
||||||
|
}
|
||||||
|
|
||||||
// =========================================================================
|
// =========================================================================
|
||||||
// FUNGSI 1: VERIFIKASI HARDWARE (Mengatasi Error undefined di main.go)
|
// FUNGSI 1: VERIFIKASI HARDWARE & HITUNG SISA WAKTU DINAMIS
|
||||||
// =========================================================================
|
// =========================================================================
|
||||||
func VerifyHardwareCode(c *gin.Context) {
|
func VerifyHardwareCode(c *gin.Context) {
|
||||||
// Ini adalah fungsi bawaan yang mengembalikan status verified
|
var req VerifyRequest
|
||||||
// agar main.go tidak error saat memanggilnya.
|
|
||||||
|
// 1. Tangkap JSON { "token": "..." } dari ESP32
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Format token tidak valid"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tokenInput := req.Token
|
||||||
|
sekarang := time.Now()
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
// 2. LOGIKA DATABASE PENGGANTI (Silakan sesuaikan dengan model GORM-mu)
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
/* // CONTOH ASLI JIKA SUDAH MENGHUBUNGKAN KE DATABASE:
|
||||||
|
var jadwal models.Booking
|
||||||
|
if err := db.Where("token = ?", tokenInput).First(&jadwal).Error; err != nil {
|
||||||
|
c.JSON(http.StatusUnauthorized, gin.H{"error": "Token salah atau tidak ditemukan"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
jamSelesai := jadwal.JamSelesai
|
||||||
|
*/
|
||||||
|
|
||||||
|
// SIMULASI SEMENTARA (Hapus bagian ini jika query DB di atas sudah aktif):
|
||||||
|
// Mengatur jam selesai kelas pada jam 19:00:00 di hari ini sebagai sampel waktu
|
||||||
|
jamSelesai := time.Date(sekarang.Year(), sekarang.Month(), sekarang.Day(), 19, 0, 0, 0, sekarang.Location())
|
||||||
|
|
||||||
|
// Tampilkan log di terminal backend
|
||||||
|
fmt.Printf("[VERIFY] Token masuk: %s | Jam Selesai: %v\n", tokenInput, jamSelesai)
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
// 3. Kalkulasi Selisih Waktu
|
||||||
|
selisihWaktu := jamSelesai.Sub(sekarang)
|
||||||
|
sisaMenit := int(selisihWaktu.Minutes())
|
||||||
|
|
||||||
|
// 4. Proteksi Jika Waktu Sudah Habis / Kelas Selesai
|
||||||
|
if sisaMenit <= 0 {
|
||||||
|
c.JSON(http.StatusForbidden, gin.H{"error": "Waktu peminjaman sudah habis"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Kirim balasan ke ESP32 beserta nilai duration_minutes
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"status": "success",
|
"status": "success",
|
||||||
"message": "Hardware terverifikasi",
|
"message": "Token Valid, Akses Diberikan",
|
||||||
|
"duration_minutes": sisaMenit,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +173,9 @@ func ControlHardware(c *gin.Context) {
|
|||||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Device tidak dikenali sistem"})
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Device tidak dikenali sistem"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =========================================================================
|
||||||
|
// FUNGSI 3: MENDAPATKAN STATUS DAYA DARI HOME ASSISTANT
|
||||||
|
// =========================================================================
|
||||||
func GetPowerStatus(c *gin.Context) {
|
func GetPowerStatus(c *gin.Context) {
|
||||||
haURL := os.Getenv("HA_URL")
|
haURL := os.Getenv("HA_URL")
|
||||||
haToken := os.Getenv("HA_TOKEN")
|
haToken := os.Getenv("HA_TOKEN")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user