TKK_E32232276/lib/dashboard/a_admin/database/db_absen.dart

49 lines
1.7 KiB
Dart

import 'package:supabase_flutter/supabase_flutter.dart';
class AbsenService {
static final supabase = Supabase.instance.client;
/// Naik tingkat kelas:
/// 1. Pindahkan murid-murid ke kelas tujuan (targetClassId)
/// 2. Hapus seluruh data absen murid-murid tersebut
/// 3. Hapus seluruh chat private murid-murid tersebut
static Future<void> promoteClass({
required String sourceClassId,
required String targetClassId,
required List<String> studentIds,
}) async {
if (studentIds.isEmpty) return;
// 1. Pindahkan murid ke kelas tujuan
print("promoteClass Step 1: Updating murid.id_class to targetClassId...");
await supabase
.from('murid')
.update({'id_class': targetClassId})
.inFilter('id_tabel', studentIds);
print("promoteClass Step 1 completed.");
// 2. Hapus data absen murid-murid tersebut
print("promoteClass Step 2: Deleting murid records from 'absen'...");
await supabase
.from('absen')
.delete()
.inFilter('id_murid', studentIds);
print("promoteClass Step 2 completed.");
// 3. Hapus data chat private murid-murid tersebut (baik sebagai pengirim maupun penerima)
print("promoteClass Step 3a: Deleting chat_private where pengirim_murid in studentIds...");
await supabase
.from('chat_private')
.delete()
.inFilter('pengirim_murid', studentIds);
print("promoteClass Step 3a completed.");
print("promoteClass Step 3b: Deleting chat_private where penerima_murid in studentIds...");
await supabase
.from('chat_private')
.delete()
.inFilter('penerima_murid', studentIds);
print("promoteClass Step 3b completed.");
}
}