Untitled
unknown
plain_text
a year ago
3.4 kB
11
Indexable
import 'package:cafe/data/sync/sync_server_repository.dart';
import 'package:cafe/models/group_models/get_all_group_model.dart';
import 'package:cafe/models/group_models/get_selected_group.dart';
import 'package:cafe/models/survey_models/survey_list_model.dart';
class SyncRepository extends SyncServerRepository {
static final SyncRepository _instance = SyncRepository._internal();
factory SyncRepository() => _instance;
SyncRepository._internal();
Future<bool> syncDataFromServer() async {
try {
await getDependencyLess();
await getGroups();
await getSurveys();
return true;
} catch (err, str) {
print(err);
print(str);
return false;
}
}
Future<void> getGroups() async {
final List<GetAllGroup> groups = await groupRepository.getAllGroups();
for (int i = 0; i < groups.length; i++) {
if (groups[i].id != null) {
final GetSelectedGroup? group = await groupRepository.getGroupDetails(groups[i].id!);
if (group != null) {
await getGroupDetails(group);
await getGroupLearnerDetails(group);
}
}
}
}
Future<void> getGroupDetails(GetSelectedGroup group) async {
if (group.currentSession?.id != null) {
final groupId = group.id.toString();
final sessionId = group.currentSession!.id.toString();
await Future.wait([
groupRepository.getSessionStatus(groupId: groupId, sessionId: sessionId),
groupRepository.getSelfCheckInStatus(groupId: groupId, sessionId: sessionId),
trainerRepository.getTrainerQuestions(groupId: groupId, sessionId: sessionId),
]);
}
}
Future<void> getGroupLearnerDetails(GetSelectedGroup group) async {
await learnerRepository.getLearnerProfileQuestions(
groupId: group.id.toString(),
learnerId: '',
);
if (group.currentSession?.id != null) {
await learnerRepository.getLearnerQuestions(
sessionId: group.currentSession!.id.toString(),
learnerId: '',
);
}
for (int i = 0; i < (group.learners?.length ?? 0); i++) {
if (group.learners?[i].id != null) {
await learnerRepository.getLearnerProfileQuestions(
groupId: group.id.toString(),
learnerId: group.learners![i].id.toString(),
);
if (group.currentSession?.id != null) {
await learnerRepository.getLearnerQuestions(
sessionId: group.currentSession!.id.toString(),
learnerId: group.learners![i].id.toString(),
);
}
}
}
}
Future<void> getSurveys() async {
final List<SurveyList> surveys = await surveyRepository.getSurveyList();
for (SurveyList item in surveys) {
if (item.id != null) {
await surveyRepository.getSurveyDetails(surveyId: item.id.toString());
}
}
}
Future<List> getDependencyLess() async {
return await Future.wait([
commonRepository.getCourseList(),
commonRepository.getBrandingDetails(),
commonRepository.getIconMedia(),
commonRepository.getLocalAudio(),
commonRepository.getLanguageList(),
commonRepository.getLocalization('en'),
groupRepository.getLocationForGroup(),
commonRepository.getPlayModeData(),
]);
}
}
Editor is loading...
Leave a Comment