59 lines
1.5 KiB
Dart
59 lines
1.5 KiB
Dart
import 'dart:io';
|
|
import 'package:dio/dio.dart';
|
|
import '../../core/network/api_client.dart';
|
|
import '../dto/attendance_response_dto.dart';
|
|
|
|
abstract class AttendanceRemoteDataSource {
|
|
Future<AttendanceResponseDto> login({
|
|
required String employeeId,
|
|
required File faceImage,
|
|
});
|
|
|
|
Future<AttendanceResponseDto> logout({
|
|
required String employeeId,
|
|
required File faceImage,
|
|
});
|
|
}
|
|
|
|
class AttendanceRemoteDataSourceImpl implements AttendanceRemoteDataSource {
|
|
final ApiClient apiClient;
|
|
|
|
AttendanceRemoteDataSourceImpl({required this.apiClient});
|
|
@override
|
|
Future<AttendanceResponseDto> login({
|
|
required String employeeId,
|
|
required File faceImage,
|
|
}) async {
|
|
final formData = FormData.fromMap({
|
|
'EmployeeId': employeeId,
|
|
'FaceImage': await MultipartFile.fromFile(faceImage.path),
|
|
});
|
|
|
|
final response = await apiClient.post(
|
|
'/Attendance/login',
|
|
data: formData,
|
|
options: Options(contentType: 'multipart/form-data'),
|
|
);
|
|
return AttendanceResponseDto.fromJson(response.data);
|
|
}
|
|
|
|
@override
|
|
Future<AttendanceResponseDto> logout({
|
|
required String employeeId,
|
|
required File faceImage,
|
|
}) async {
|
|
final formData = FormData.fromMap({
|
|
'EmployeeId': employeeId,
|
|
'FaceImage': await MultipartFile.fromFile(faceImage.path),
|
|
});
|
|
|
|
final response = await apiClient.post(
|
|
'/Attendance/logout',
|
|
data: formData,
|
|
options: Options(contentType: 'multipart/form-data'),
|
|
);
|
|
|
|
return AttendanceResponseDto.fromJson(response.data);
|
|
}
|
|
}
|