Update Saqel Platform: 2026-09-04 21:26:55
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
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<TeacherStudioState> {
|
||||
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<void> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user