Attendance log now record both check in and out photos and allow IT Staffs, Dispatchers and Admins to view for verification
This commit is contained in:
@@ -91,10 +91,16 @@ class AttendanceController {
|
||||
required String attendanceId,
|
||||
required double lat,
|
||||
required double lng,
|
||||
String? justification,
|
||||
}) async {
|
||||
await _client.rpc(
|
||||
'attendance_check_out',
|
||||
params: {'p_attendance_id': attendanceId, 'p_lat': lat, 'p_lng': lng},
|
||||
params: {
|
||||
'p_attendance_id': attendanceId,
|
||||
'p_lat': lat,
|
||||
'p_lng': lng,
|
||||
if (justification != null) 'p_justification': justification,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -118,10 +124,12 @@ class AttendanceController {
|
||||
required Uint8List bytes,
|
||||
required String fileName,
|
||||
required String status, // 'verified', 'unverified'
|
||||
bool isCheckOut = false,
|
||||
}) async {
|
||||
final userId = _client.auth.currentUser!.id;
|
||||
final ext = fileName.split('.').last.toLowerCase();
|
||||
final path = '$userId/$attendanceId.$ext';
|
||||
final prefix = isCheckOut ? 'checkout' : 'checkin';
|
||||
final path = '$userId/${prefix}_$attendanceId.$ext';
|
||||
await _client.storage
|
||||
.from('attendance-verification')
|
||||
.uploadBinary(
|
||||
@@ -132,9 +140,12 @@ class AttendanceController {
|
||||
final url = _client.storage
|
||||
.from('attendance-verification')
|
||||
.getPublicUrl(path);
|
||||
final column = isCheckOut
|
||||
? 'check_out_verification_photo_url'
|
||||
: 'check_in_verification_photo_url';
|
||||
await _client
|
||||
.from('attendance_logs')
|
||||
.update({'verification_status': status, 'verification_photo_url': url})
|
||||
.update({'verification_status': status, column: url})
|
||||
.eq('id', attendanceId);
|
||||
}
|
||||
|
||||
|
||||
@@ -102,12 +102,13 @@ class VerificationSessionController {
|
||||
})
|
||||
.eq('id', session.userId);
|
||||
} else if (session.type == 'verification' && session.contextId != null) {
|
||||
// Update attendance log verification status
|
||||
// Update attendance log verification status.
|
||||
// Cross-device verification defaults to check-in photo column.
|
||||
await _client
|
||||
.from('attendance_logs')
|
||||
.update({
|
||||
'verification_status': 'verified',
|
||||
'verification_photo_url': session.imageUrl,
|
||||
'check_in_verification_photo_url': session.imageUrl,
|
||||
})
|
||||
.eq('id', session.contextId!);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user