// πŸ“± 슀마트기기(νŒ¨λ“œ) 반좜 μ‹ μ²­ ν™”λ©΄μ˜ κΈ°λŠ₯(μ„œλ²„ 톡신/μƒνƒœ) λ‹΄λ‹Ή 컨트둀러. // NFCκ°€ μ•ˆ λ˜λŠ” νŒ¨λ“œμš© λŒ€μ²΄ 절차 β€” μ‹œμž‘~μ’…λ£Œ μ‹œκ°κ³Ό μ‚¬μš© λͺ©μ μ„ 적어 μ‹ μ²­ν•˜λ©΄ // μ„ μƒλ‹˜ 승인 ν›„ μ €μšΈ(아두이노)이 μ‹€μ œ ν”½μ—…/λ°˜λ‚© μ—¬λΆ€λ₯Ό κ°μ‹œν•œλ‹€ (ν•˜λ“œμ›¨μ–΄λŠ” λ‚˜μ€‘μ— λΆ™μž„). import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; import '../config.dart'; class DeviceCheckoutController extends ChangeNotifier { bool _isSubmitting = false; bool get isSubmitting => _isSubmitting; /// βž• 반좜 μš”μ²­ 제좜. (성곡여뢀, λ©”μ‹œμ§€)λ₯Ό λ°˜ν™˜ν•œλ‹€. Future<(bool success, String message)> submitRequest({ required String studentId, required String studentName, required String purpose, required String startTime, required String endTime, }) async { _isSubmitting = true; notifyListeners(); try { final response = await http.post( Uri.parse('$baseUrl/api/device-checkout/request'), headers: {"Content-Type": "application/json"}, body: jsonEncode({ "studentId": studentId, "studentName": studentName, "purpose": purpose, "startTime": startTime, "endTime": endTime, }), ); final result = jsonDecode(utf8.decode(response.bodyBytes)); if (response.statusCode == 200 && result['status'] == 'success') { return (true, '${result['message'] ?? 'μš”μ²­μ΄ μ ‘μˆ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.'}'); } else { return (false, '${result['message'] ?? 'μš”μ²­ μ‹€νŒ¨'}'); } } catch (e) { return (false, 'λ„€νŠΈμ›Œν¬ μ—λŸ¬: $e'); } finally { _isSubmitting = false; notifyListeners(); } } }