// lib/app/modules/home_patient/controllers/home_patient_controller.dart import 'package:get/get.dart'; import 'package:flutter/material.dart'; import '../../../models/chart_data_point.dart'; // Import model yang terpisah class InfusData { final String dropsPerMinute; final String room; final String deviceId; final String updateTime; InfusData({ required this.dropsPerMinute, required this.room, required this.deviceId, required this.updateTime, }); } class NotificationData { final String title; final String message; final String room; final String deviceId; final String timeAgo; NotificationData({ required this.title, required this.message, required this.room, required this.deviceId, required this.timeAgo, }); } class HomePatientController extends GetxController { // Patient info final patientName = 'Mrs. Shinta'.obs; // Banner carousel final currentCarouselIndex = 0.obs; final bannerImages = [ 'assets/images/banner-slider3.png', 'assets/images/banner-slider4.png', ]; // Current monitoring data final currentInfusData = InfusData( dropsPerMinute: '30 tetes per menit', room: 'MAWAR 002', deviceId: 'SI001', updateTime: '5min ago', ).obs; // Chart data dengan 10 data points final chartDataPoints = [ ChartDataPoint(hour: 8, dropsPerMinute: 25), ChartDataPoint(hour: 9, dropsPerMinute: 28), ChartDataPoint(hour: 10, dropsPerMinute: 30), ChartDataPoint(hour: 11, dropsPerMinute: 32), ChartDataPoint(hour: 12, dropsPerMinute: 35), ChartDataPoint(hour: 13, dropsPerMinute: 33), ChartDataPoint(hour: 14, dropsPerMinute: 30), ChartDataPoint(hour: 15, dropsPerMinute: 28), ChartDataPoint(hour: 16, dropsPerMinute: 26), ChartDataPoint(hour: 17, dropsPerMinute: 30), ].obs; // Notifications list final notificationsList = [ NotificationData( title: 'Peringatan!!', message: 'Aliran infus telah terhenti. Mohon hubungi perawat segera.', room: 'MAWAR 002', deviceId: 'SI001', timeAgo: '5min ago', ), NotificationData( title: 'Peringatan!!', message: 'Aliran infus telah terhenti. Mohon hubungi perawat segera.', room: 'MELATI 001', deviceId: 'SI002', timeAgo: '10min ago', ), ].obs; @override void onInit() { super.onInit(); } @override void onReady() { super.onReady(); } @override void onClose() { super.onClose(); } void updateCarouselIndex(int index) { currentCarouselIndex.value = index; } // Show call dialog void showCallDialog(BuildContext context) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), title: const Text( 'Hubungi Perawat', style: TextStyle(fontWeight: FontWeight.bold), ), content: const Text('Apakah Anda ingin menghubungi perawat?'), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(), child: Text('Batal', style: TextStyle(color: Colors.grey[600])), ), ElevatedButton( onPressed: () { Navigator.of(context).pop(); // Implement call functionality Get.snackbar( 'Menghubungi', 'Sedang menghubungi perawat...', snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.blue, colorText: Colors.white, ); }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF2196F3), foregroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: const Text('Hubungi'), ), ], ); }, ); } }