import 'package:flutter_bloc/flutter_bloc.dart'; import '../../data/models/teacher_models.dart'; import '../../data/repositories/teacher_repository.dart'; /** * ============================================================================== * SAQEL TEACHER STUDIO - STUDIO UPLOAD CUBIT * ============================================================================== * * إدارة حالة استوديو رفع الحصص وفحص الجودة الإدراكي: * - التحقق من معيار معهد ماساتشوستس (20 - 25 دقيقة) * - استدعاء التدقيق الآلي للدرس ومخرجات المنهاج الوزاري. */ class TeacherStudioState { final String lessonTitle; final double durationMinutes; final bool isAuditing; final TeacherLessonAuditModel? auditResult; const TeacherStudioState({ required this.lessonTitle, required this.durationMinutes, required this.isAuditing, this.auditResult, }); TeacherStudioState copyWith({ String? lessonTitle, double? durationMinutes, bool? isAuditing, TeacherLessonAuditModel? auditResult, }) { return TeacherStudioState( lessonTitle: lessonTitle ?? this.lessonTitle, durationMinutes: durationMinutes ?? this.durationMinutes, isAuditing: isAuditing ?? this.isAuditing, auditResult: auditResult ?? this.auditResult, ); } } class TeacherStudioCubit extends Cubit { final TeacherRepository repository; TeacherStudioCubit({required this.repository}) : super(const TeacherStudioState( lessonTitle: 'شرح قاعدة لنتز والحث الكهرومغناطيسي — فيزياء 2008', durationMinutes: 22.5, isAuditing: false, auditResult: null, )); void updateLessonTitle(String title) { emit(state.copyWith(lessonTitle: title)); } void updateDuration(double duration) { emit(state.copyWith(durationMinutes: duration)); } Future runQualityGate() async { emit(state.copyWith(isAuditing: true)); try { final result = await repository.auditStudioVideo( title: state.lessonTitle, durationMinutes: state.durationMinutes, subject: 'الفيزياء', ); emit(state.copyWith( isAuditing: false, auditResult: result, )); } catch (_) { emit(state.copyWith(isAuditing: false)); } } }