This commit is contained in:
Mohammed Al-Samarraie
2026-01-18 19:52:10 +03:00
parent 79b53b6303
commit 33099c4497
19 changed files with 1036 additions and 40 deletions

View File

@@ -6,6 +6,7 @@ import '../dto/vacation_request_dto.dart';
import '../../domain/models/vacation_request.dart';
import '../../domain/models/vacation_response_model.dart';
import '../../domain/models/vacation_type_model.dart';
import '../../domain/models/vacations_list_response_model.dart';
import '../../domain/repositories/vacation_repository.dart';
class VacationRepositoryImpl implements VacationRepository {
@@ -90,4 +91,52 @@ class VacationRepositoryImpl implements VacationRepository {
return Left(ServerFailure('خطأ غير متوقع: $e'));
}
}
@override
Future<Either<Failure, VacationsListResponseModel>> getVacations() async {
try {
final responseDto = await remoteDataSource.getVacations();
// Convert DTO to Model
final responseModel = VacationsListResponseModel(
statusCode: responseDto.statusCode,
isSuccess: responseDto.isSuccess,
message: responseDto.message,
data: responseDto.data != null
? VacationsListDataModel(
items: responseDto.data!.items
.map((dto) => VacationDataModel(
employeeId: dto.employeeId,
employeeFullName: dto.employeeFullName,
startDate: dto.startDate,
endDate: dto.endDate,
reason: dto.reason,
submittedBy: dto.submittedBy,
submittedByUser: dto.submittedByUser,
state: dto.state,
type: dto.type,
id: dto.id,
createdAt: dto.createdAt,
updatedAt: dto.updatedAt,
deletedAt: dto.deletedAt,
isDeleted: dto.isDeleted,
))
.toList(),
pageNumber: responseDto.data!.pageNumber,
pageSize: responseDto.data!.pageSize,
totalCount: responseDto.data!.totalCount,
totalPages: responseDto.data!.totalPages,
)
: null,
);
return Right(responseModel);
} on ServerException catch (e) {
return Left(ServerFailure(e.message));
} on NetworkException catch (e) {
return Left(NetworkFailure(e.message));
} catch (e) {
return Left(ServerFailure('خطأ غير متوقع: $e'));
}
}
}