class FileResponseModel { final FileModel data; final String message; final bool success; FileResponseModel({ required this.data, required this.message, required this.success, }); factory FileResponseModel.fromJson(Map json) { return FileResponseModel( data: FileModel.fromJson(json['data']), message: json['message'] as String, success: json['success'] as bool, ); } Map toJson() => { 'data': data.toJson(), 'message': message, 'success': success, }; factory FileResponseModel.fromMap(Map map) => FileResponseModel.fromJson(map); Map toMap() => toJson(); FileResponseModel copyWith({ FileModel? data, String? message, bool? success, }) { return FileResponseModel( data: data ?? this.data, message: message ?? this.message, success: success ?? this.success, ); } @override String toString() => 'FileResponseModel(data: $data, message: $message, success: $success)'; } class FileModel { final String id; final String organizationId; final String userId; final String fileName; final String originalName; final String fileUrl; final int fileSize; final String mimeType; final String fileType; final String uploadPath; final bool isPublic; final DateTime createdAt; final DateTime updatedAt; FileModel({ required this.id, required this.organizationId, required this.userId, required this.fileName, required this.originalName, required this.fileUrl, required this.fileSize, required this.mimeType, required this.fileType, required this.uploadPath, required this.isPublic, required this.createdAt, required this.updatedAt, }); factory FileModel.fromJson(Map json) { return FileModel( id: json['id'] as String, organizationId: json['organization_id'] as String, userId: json['user_id'] as String, fileName: json['file_name'] as String, originalName: json['original_name'] as String, fileUrl: json['file_url'] as String, fileSize: json['file_size'] as int, mimeType: json['mime_type'] as String, fileType: json['file_type'] as String, uploadPath: json['upload_path'] as String, isPublic: json['is_public'] as bool, createdAt: DateTime.parse(json['created_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String), ); } Map toJson() => { 'id': id, 'organization_id': organizationId, 'user_id': userId, 'file_name': fileName, 'original_name': originalName, 'file_url': fileUrl, 'file_size': fileSize, 'mime_type': mimeType, 'file_type': fileType, 'upload_path': uploadPath, 'is_public': isPublic, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), }; factory FileModel.fromMap(Map map) => FileModel.fromJson(map); Map toMap() => toJson(); FileModel copyWith({ String? id, String? organizationId, String? userId, String? fileName, String? originalName, String? fileUrl, int? fileSize, String? mimeType, String? fileType, String? uploadPath, bool? isPublic, DateTime? createdAt, DateTime? updatedAt, }) { return FileModel( id: id ?? this.id, organizationId: organizationId ?? this.organizationId, userId: userId ?? this.userId, fileName: fileName ?? this.fileName, originalName: originalName ?? this.originalName, fileUrl: fileUrl ?? this.fileUrl, fileSize: fileSize ?? this.fileSize, mimeType: mimeType ?? this.mimeType, fileType: fileType ?? this.fileType, uploadPath: uploadPath ?? this.uploadPath, isPublic: isPublic ?? this.isPublic, createdAt: createdAt ?? this.createdAt, updatedAt: updatedAt ?? this.updatedAt, ); } @override String toString() { return 'FileModel(id: $id, organizationId: $organizationId, userId: $userId, fileName: $fileName, originalName: $originalName, fileUrl: $fileUrl, fileSize: $fileSize, mimeType: $mimeType, fileType: $fileType, uploadPath: $uploadPath, isPublic: $isPublic, createdAt: $createdAt, updatedAt: $updatedAt)'; } }