MIF_E31230910_MP-HRIS-MOBILE/lib/repositories/signature_repository.dart

52 lines
1.8 KiB
Dart

import 'dart:convert';
import 'dart:typed_data';
import 'package:dio/dio.dart';
import '../services/api_client.dart';
class SignatureRepository {
final ApiClient _apiClient = ApiClient();
Future<Map<String, dynamic>> getActiveSignature() async {
try {
final response = await _apiClient.dio.get('/signature');
if (response.statusCode == 200 && response.data['success'] == true) {
return {'success': true, 'data': response.data['data']};
}
return {'success': false, 'data': null, 'message': response.data['message'] ?? 'Gagal'};
} on DioException catch (e) {
if (e.response?.statusCode == 404) {
return {'success': false, 'data': null, 'message': 'Belum ada tanda tangan'};
}
return {'success': false, 'error': true, 'message': e.message ?? 'Gagal koneksi ke server'};
} catch (e) {
return {'success': false, 'error': true, 'message': e.toString()};
}
}
Future<Map<String, dynamic>> uploadSignature(Uint8List pngBytes) async {
try {
final base64String = base64Encode(pngBytes);
final response = await _apiClient.dio.post('/signature', data: {
'signature_data': 'data:image/png;base64,$base64String',
});
if (response.statusCode == 201 && response.data['success'] == true) {
return {'success': true, 'data': response.data['data']};
}
return {'success': false, 'message': response.data['message'] ?? 'Gagal'};
} catch (e) {
return {'success': false, 'message': e.toString()};
}
}
Future<Map<String, dynamic>> deleteSignature(String id) async {
try {
final response = await _apiClient.dio.delete('/signature/$id');
return {'success': response.data['success'] == true};
} catch (e) {
return {'success': false, 'message': e.toString()};
}
}
}