import 'package:bloc/bloc.dart'; import 'package:mobdr/model/integration/student_model.dart'; import 'package:mobdr/network/api_provider.dart'; import './bloc.dart'; class StudentBloc extends Bloc { StudentBloc() : super(InitialStudentState()) { on(_getStudent); on(_addStudent); on(_editStudent); on(_deleteStudent); } } void _getStudent(GetStudent event, Emitter emit) async { ApiProvider _apiProvider = ApiProvider(); emit(GetStudentWaiting()); try { List data = await _apiProvider.getStudent(event.sessionId, event.apiToken); emit(GetStudentSuccess(studentData: data)); } catch (ex) { if (ex != 'cancel') { emit(GetStudentError(errorMessage: ex.toString())); } } } void _addStudent(AddStudent event, Emitter emit) async { ApiProvider _apiProvider = ApiProvider(); String errorMessage = ''; if (event.studentName == '') { errorMessage = 'Student name cannot be empty'; } else if (event.studentPhoneNumber == '') { errorMessage = 'Student phone number can not be empty'; } else if (event.studentGender == '') { errorMessage = 'Student gender can not be empty'; } else if (event.studentAddress == '') { errorMessage = 'Student address can not be empty'; } if (errorMessage == '') { emit(AddStudentWaiting()); try { List data = await _apiProvider.addStudent( event.sessionId, event.studentName, event.studentPhoneNumber, event.studentGender, event.studentAddress, event.apiToken); emit(AddStudentSuccess( msg: data[0], studentId: data[1], studentName: event.studentName, studentPhoneNumber: event.studentPhoneNumber, studentGender: event.studentGender, studentAddress: event.studentAddress)); } catch (ex) { emit(AddStudentError(errorMessage: ex.toString())); } } else { emit(StudentErrorValidation(errorMessage: errorMessage)); } } void _editStudent(EditStudent event, Emitter emit) async { ApiProvider _apiProvider = ApiProvider(); String errorMessage = ''; if (event.studentName == '') { errorMessage = 'Student name cannot be empty'; } else if (event.studentPhoneNumber == '') { errorMessage = 'Student phone number can not be empty'; } else if (event.studentGender == '') { errorMessage = 'Student gender can not be empty'; } else if (event.studentAddress == '') { errorMessage = 'Student address can not be empty'; } if (errorMessage == '') { emit(EditStudentWaiting()); try { String message = await _apiProvider.editStudent( event.sessionId, event.studentId, event.studentName, event.studentPhoneNumber, event.studentGender, event.studentAddress, event.apiToken); emit(EditStudentSuccess( msg: message, index: event.index, studentId: event.studentId, studentName: event.studentName, studentPhoneNumber: event.studentPhoneNumber, studentGender: event.studentGender, studentAddress: event.studentAddress)); } catch (ex) { emit(EditStudentError(errorMessage: ex.toString())); } } else { emit(StudentErrorValidation(errorMessage: errorMessage)); } } void _deleteStudent(DeleteStudent event, Emitter emit) async { ApiProvider _apiProvider = ApiProvider(); emit(DeleteStudentWaiting()); try { String msg = await _apiProvider.deleteStudent( event.sessionId, event.studentId, event.apiToken); emit(DeleteStudentSuccess(msg: msg, index: event.index)); } catch (ex) { emit(DeleteStudentError(errorMessage: ex.toString())); } }