import 'package:intl/intl.dart'; class Employee { final String id; final String firstName; final String lastName; final String? photo; final String jobRoleId; final String jobRoleName; Employee({ required this.id, required this.firstName, required this.lastName, this.photo, required this.jobRoleId, required this.jobRoleName, }); factory Employee.fromJson(Map json) { return Employee( id: json['id'], firstName: json['firstName'] ?? '', lastName: json['lastName'] ?? '', photo: json['photo']?.toString(), jobRoleId: json['jobRoleId'] ?? '', jobRoleName: json['jobRoleName'] ?? '', ); } Map toJson() { return { 'id': id, 'firstName': firstName, 'lastName': lastName, 'photo': photo, 'jobRoleId': jobRoleId, 'jobRoleName': jobRoleName, }; } } class AttendanceLogViewModel { final String id; final String? comment; final Employee employee; final DateTime? activityTime; final int activity; final String? photo; final String? thumbPreSignedUrl; final String? preSignedUrl; final String? longitude; final String? latitude; final DateTime? updatedOn; final Employee? updatedByEmployee; final String? documentId; AttendanceLogViewModel({ required this.id, this.comment, required this.employee, this.activityTime, required this.activity, this.photo, this.thumbPreSignedUrl, this.preSignedUrl, this.longitude, this.latitude, this.updatedOn, this.updatedByEmployee, this.documentId, }); factory AttendanceLogViewModel.fromJson(Map json) { return AttendanceLogViewModel( id: json['id'], comment: json['comment']?.toString(), employee: Employee.fromJson(json['employee']), activityTime: json['activityTime'] != null ? DateTime.tryParse(json['activityTime']) : null, activity: json['activity'] ?? 0, photo: json['photo']?.toString(), thumbPreSignedUrl: json['thumbPreSignedUrl']?.toString(), preSignedUrl: json['preSignedUrl']?.toString(), longitude: json['longitude']?.toString(), latitude: json['latitude']?.toString(), updatedOn: json['updatedOn'] != null ? DateTime.tryParse(json['updatedOn']) : null, updatedByEmployee: json['updatedByEmployee'] != null ? Employee.fromJson(json['updatedByEmployee']) : null, documentId: json['documentId']?.toString(), ); } Map toJson() { return { 'id': id, 'comment': comment, 'employee': employee.toJson(), 'activityTime': activityTime?.toIso8601String(), 'activity': activity, 'photo': photo, 'thumbPreSignedUrl': thumbPreSignedUrl, 'preSignedUrl': preSignedUrl, 'longitude': longitude, 'latitude': latitude, 'updatedOn': updatedOn?.toIso8601String(), 'updatedByEmployee': updatedByEmployee?.toJson(), 'documentId': documentId, }; } String? get formattedDate => activityTime != null ? DateFormat('yyyy-MM-dd').format(activityTime!) : null; String? get formattedTime => activityTime != null ? DateFormat('hh:mm a').format(activityTime!) : null; }