Skip to content

Commit

Permalink
Merge pull request #217 from SayedZeeshanHyder/main
Browse files Browse the repository at this point in the history
Added AttendanceService Files and Functionalities
  • Loading branch information
SayedZeeshanHyder authored Jul 20, 2024
2 parents cf8f1df + fe3a3f3 commit 0d8f9ca
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 42 deletions.
60 changes: 36 additions & 24 deletions lib/new_ui/screens/attendance_screen/attendance_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
int totalLectures = 0;
int attendedLectures = 0;

@override
/*@override
void initState() {
super.initState();
_fetchAndSetAttendance();
}
}*/

Future<void> _fetchAndSetAttendance() async {
var attendanceData = await fetchAttendanceData();
Expand Down Expand Up @@ -127,11 +127,7 @@ class _AttendanceScreenState extends State<AttendanceScreen> {

var data = documentSnapshot.data() as Map<String, dynamic>;
List attendanceList = data['attendance'];
List<Map<String, dynamic>> attendanceList2 = attendanceList.cast<Map<String, dynamic>>();




//List<Map<String, dynamic>> attendanceList2 = attendanceList.cast<Map<String, dynamic>>();

return ListView.builder(
shrinkWrap: true,
Expand Down Expand Up @@ -216,8 +212,15 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
int totalLectures = int.parse(totalLecturesController.text);
int attendedLectures = int.parse(attendedLecturesController.text);

// Fetch the document to get the current data
DocumentSnapshot doc = await FirebaseFirestore.instance
Map<String,dynamic> updatedSubject = {
"subject_name":subjectName,
"total":totalLectures,
"present":attendedLectures
};

await AttendanceService.updateSubject(attendanceList,index,updatedSubject);

/*DocumentSnapshot doc = await FirebaseFirestore.instance
.collection("Attendance")
.doc(FirebaseAuth.instance.currentUser!.uid)
.get();
Expand All @@ -242,17 +245,18 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
.doc(FirebaseAuth.instance.currentUser!.uid)
.update({'attendance': attendanceList});
}
}
}*/

Navigator.of(context).pop();
_fetchAndSetAttendance();
},
child: Text('Update', style: TextStyle(color: Colors.blue)),
),
TextButton(
onPressed: () async {
// Fetch the document to get the current data
DocumentSnapshot doc = await FirebaseFirestore.instance

await AttendanceService.deleteSubject(attendanceList, index);

/*DocumentSnapshot doc = await FirebaseFirestore.instance
.collection("Attendance")
.doc(FirebaseAuth.instance.currentUser!.uid)
.get();
Expand All @@ -269,7 +273,7 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
.doc(FirebaseAuth.instance.currentUser!.uid)
.update({'attendance': attendanceList});
}
_fetchAndSetAttendance();
_fetchAndSetAttendance();*/
Navigator.of(context).pop();
},
child: Text('Delete', style: TextStyle(color: Colors.red)),
Expand Down Expand Up @@ -332,9 +336,9 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () {
AttendanceService.markPresent(attendanceList, index);
_fetchAndSetAttendance();
onPressed: () async{
await AttendanceService.markPresent(attendanceList, index);
/*_fetchAndSetAttendance();*/
},
child: const Text('Present', style: TextStyle(color: Colors.white, fontSize: 12),),
style: ElevatedButton.styleFrom(
Expand All @@ -344,9 +348,9 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
),

ElevatedButton(
onPressed: () {
AttendanceService.markAbsent(attendanceList, index);
_fetchAndSetAttendance();
onPressed: () async{
await AttendanceService.markAbsent(attendanceList, index);
/*_fetchAndSetAttendance();*/
},
child: const Text('Absent', style: TextStyle(color: Colors.white, fontSize: 12),),
style: ElevatedButton.styleFrom(
Expand Down Expand Up @@ -381,6 +385,9 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
},
);
}),
SizedBox(
height: 20,
),
],
),
),
Expand Down Expand Up @@ -465,13 +472,18 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
child: Text('Cancel', style: TextStyle(color: Colors.red)),
),
TextButton(
onPressed: () {
onPressed: () async{
String subjectName = subjectNameController.text;
int totalLectures = int.parse(totalLecturesController.text);
int attendedLectures = int.parse(attendedLecturesController.text);

// Define your action here to handle the input data
FirebaseFirestore.instance
Map<String,dynamic> updatedSubject = {
"subject_name":subjectName,
"total":totalLectures,
"present":attendedLectures
};
await AttendanceService.addSubject(updatedSubject);
/*FirebaseFirestore.instance
.collection("Attendance")
.doc(FirebaseAuth.instance.currentUser!.uid)
.set({
Expand All @@ -481,7 +493,7 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
'present': attendedLectures
}])
}, SetOptions(merge: true));
_fetchAndSetAttendance();
_fetchAndSetAttendance();*/
Navigator.of(context).pop();
},
child: Text('Add', style: TextStyle(color: Colors.blue)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,33 @@ class AttendanceService{
static FirebaseAuth auth = FirebaseAuth.instance;
static CollectionReference firestore = FirebaseFirestore.instance.collection("Attendance");

static markPresent(List attendanceList,int index){
static markPresent(List attendanceList,int index)async{
attendanceList[index]['present']++;
attendanceList[index]['total']++;
print(attendanceList[index]['present']);
firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
await firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
}

static markAbsent(List attendanceList,int index){
static markAbsent(List attendanceList,int index)async{
attendanceList[index]['total']++;
print(attendanceList[index]['total']);
firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
await firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
}

static updateSubject(List attendanceList,int index,Map<String,dynamic> updatedSubject)async{
attendanceList[index] = updatedSubject;
await firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
}

static deleteSubject(List attendanceList,int index)async{
attendanceList.removeAt(index);
await firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
}

static addSubject(Map<String,dynamic> updatedSubject)async{
final get = await firestore.doc(auth.currentUser!.uid).get();
final data = get.data() as Map<String,dynamic>;
List attendanceList = data['attendance'];
attendanceList.add(updatedSubject);
await firestore.doc(auth.currentUser!.uid).set({"attendance":attendanceList});
}

}
24 changes: 12 additions & 12 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -788,26 +788,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "2.0.1"
linkify:
dependency: transitive
description:
Expand Down Expand Up @@ -860,10 +860,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.11.0"
mime:
dependency: transitive
description:
Expand Down Expand Up @@ -1249,10 +1249,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.6.1"
textfield_search:
dependency: "direct main"
description:
Expand Down Expand Up @@ -1377,10 +1377,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "14.2.1"
version: "13.0.0"
watcher:
dependency: transitive
description:
Expand Down

0 comments on commit 0d8f9ca

Please sign in to comment.