attendence login/logout has been implemented

This commit is contained in:
Daniah Ayad Al-sultani
2026-01-15 22:35:10 +03:00
parent 3b3ed5e640
commit 56e2c0ffaa
20 changed files with 538 additions and 200 deletions

View File

@@ -0,0 +1,41 @@
import '../../domain/models/attendance_login_request.dart';
import '../../domain/models/attendance_logout_request.dart';
import '../../domain/models/attendance_response_model.dart';
import '../../domain/repositories/attendance_repository.dart';
import '../datasources/attendance_remote_data_source.dart';
class AttendanceRepositoryImpl implements AttendanceRepository {
final AttendanceRemoteDataSource remoteDataSource;
AttendanceRepositoryImpl({required this.remoteDataSource});
@override
Future<AttendanceResponseModel> login(AttendanceLoginRequest request) async {
final dto = await remoteDataSource.login(
employeeId: request.employeeId,
faceImage: request.faceImage,
);
return AttendanceResponseModel(
id: dto.id,
employeeId: dto.employeeId,
login: dto.login,
);
}
@override
Future<AttendanceResponseModel> logout(
AttendanceLogoutRequest request,
) async {
final dto = await remoteDataSource.logout(
employeeId: request.employeeId,
faceImage: request.faceImage,
);
return AttendanceResponseModel(
id: dto.id,
employeeId: dto.employeeId,
logout: dto.logout,
);
}
}

View File

@@ -4,7 +4,6 @@ import '../../core/error/failures.dart';
import '../datasources/auth_remote_data_source.dart';
import '../datasources/user_local_data_source.dart';
import '../dto/login_dto.dart';
import '../dto/login_response_dto.dart';
import '../../domain/models/login_request.dart';
import '../../domain/models/login_response_model.dart';
import '../../domain/repositories/auth_repository.dart';
@@ -19,7 +18,9 @@ class AuthRepositoryImpl implements AuthRepository {
});
@override
Future<Either<Failure, LoginResponseModel>> login(LoginRequest request) async {
Future<Either<Failure, LoginResponseModel>> login(
LoginRequest request,
) async {
try {
final dto = LoginDto(
phoneNumber: request.phoneNumber,
@@ -27,30 +28,38 @@ class AuthRepositoryImpl implements AuthRepository {
);
final responseDto = await remoteDataSource.login(dto);
print("LOGIN RESPONSE DATA: ${responseDto.toJson()}"); // Debugging Log
// Cache the token locally
if (responseDto.data?.token != null) {
await localDataSource.cacheUserToken(responseDto.data!.token!);
}
if (responseDto.data?.employeeId != null) {
print("AUTH_REPO: Caching EmployeeId: ${responseDto.data!.employeeId}");
await localDataSource.cacheEmployeeId(responseDto.data!.employeeId!);
} else {
print("AUTH_REPO: EmployeeId is NULL in response!");
}
// Convert DTO to Model
final responseModel = LoginResponseModel(
statusCode: responseDto.statusCode,
isSuccess: responseDto.isSuccess,
message: responseDto.message,
data: responseDto.data != null
? LoginDataModel(
token: responseDto.data!.token,
id: responseDto.data!.id,
employeeId: responseDto.data!.employeeId,
username: responseDto.data!.username,
fullName: responseDto.data!.fullName,
role: responseDto.data!.role,
email: responseDto.data!.email,
phoneNumber: responseDto.data!.phoneNumber,
permissions: responseDto.data!.permissions,
)
: null,
data:
responseDto.data != null
? LoginDataModel(
token: responseDto.data!.token,
id: responseDto.data!.id,
employeeId: responseDto.data!.employeeId,
username: responseDto.data!.username,
fullName: responseDto.data!.fullName,
role: responseDto.data!.role,
email: responseDto.data!.email,
phoneNumber: responseDto.data!.phoneNumber,
permissions: responseDto.data!.permissions,
)
: null,
);
return Right(responseModel);