-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #68 from mario-bermonti:mario-bermonti/issue67
Save demographics data to Firebase
- Loading branch information
Showing
12 changed files
with
352 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Design of Authentication and Participant | ||
|
||
## Authentication | ||
### Requirements | ||
- Sign in to fcm (returns a Participant object) | ||
|
||
## Participant | ||
### Requirements | ||
- Contains data about a single study Participant | ||
|
||
### Structure | ||
|
||
- Data | ||
- id | ||
- firebase cloud messaging (fcm) tokens | ||
- registration time | ||
- nickname | ||
- avatar | ||
- timezone | ||
- location (country level) | ||
|
||
- Behaviors | ||
- Sign in to fcm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,12 @@ | ||
/// Represents a single study participant. | ||
import 'package:get/get.dart'; | ||
|
||
/// Represents a single study participant and performs authentication | ||
/// Can be used to keep track of participants' important info, including | ||
/// "identifying" info. | ||
class Participant { | ||
late final String uid; | ||
late final DateTime registerDateTime; | ||
class Participant extends GetxController { | ||
final String id; | ||
|
||
Participant({ | ||
required String? uid, | ||
required DateTime? registerDateTime, | ||
}) { | ||
if (uid == null || registerDateTime == null) { | ||
throw Exception('Error creating participant model'); | ||
} else { | ||
this.uid = uid; | ||
this.registerDateTime = registerDateTime; | ||
} | ||
} | ||
required this.id, | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import 'package:cloud_firestore/cloud_firestore.dart'; | ||
import 'package:mdigit_span_tasks_ema/src/baseline/data/survey_data.dart'; | ||
import 'package:mdigit_span_tasks_ema/src/baseline/data/survey_item_data.dart'; | ||
|
||
class EMAData { | ||
final FirebaseFirestore db; | ||
final String participantID; | ||
|
||
EMAData( | ||
this.db, { | ||
required this.participantID, | ||
}); | ||
|
||
/// Adds data from a cross-sectional survey data to Firebase | ||
Future<void> addCrossSectionalSurveyData({ | ||
required String measureName, | ||
required SurveyData data, | ||
}) async { | ||
final Map<String, dynamic> surveyData = data.toJson(); | ||
|
||
await addCrossSectionalSurveyItemData( | ||
measureName: measureName, | ||
data: surveyData['items'], | ||
); | ||
|
||
surveyData.remove('items'); | ||
await addCrossSectionalSurveyMetadata( | ||
measureName: measureName, | ||
data: surveyData, | ||
); | ||
} | ||
|
||
/// Add data from cross-sectional items to Firebase | ||
Future<void> addCrossSectionalSurveyItemData({ | ||
required String measureName, | ||
required List<SurveyItemData> data, | ||
}) async { | ||
final CollectionReference itemsRef = db | ||
.collection('cross_sectional') | ||
.doc(measureName) | ||
.collection('participants') | ||
.doc(participantID) | ||
.collection('items'); | ||
|
||
final WriteBatch batch = db.batch(); | ||
|
||
for (SurveyItemData item in data) { | ||
Map<String, dynamic> jsonItem = item.toJson(); | ||
batch.set(itemsRef.doc(item.identifier), jsonItem); | ||
} | ||
await batch.commit(); | ||
} | ||
|
||
/// Add metadata from a cross-sectional survey to Firebase | ||
Future<void> addCrossSectionalSurveyMetadata({ | ||
required String measureName, | ||
required Map<String, dynamic> data, | ||
}) async { | ||
final CollectionReference metadataRef = db | ||
.collection('cross_sectional') | ||
.doc(measureName) | ||
.collection('participants') | ||
.doc(participantID) | ||
.collection('metadata'); | ||
|
||
await metadataRef.doc('metadata').set(data); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Design of ema data subpackage | ||
|
||
## Requirements | ||
- Handle data collected longitudinally (recurring) and cross-sectionally (one-time) | ||
- Handle survey data | ||
- Handle data cognitive tasks | ||
- Adaptable to handle other types of data | ||
|
||
## Structure | ||
|
||
- Single object that manages the data | ||
- Stores participantID | ||
- Other required data passed as parameters to methods |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.