import 'package:injectable/injectable.dart'; import '../datasources/remote/license_remote_datasource.dart'; import '../models/license/license_dto.dart'; import '../models/license/license_request_dto.dart'; import 'license_repository.dart'; /// 라이선스 Repository 구현체 @Injectable(as: LicenseRepository) class LicenseRepositoryImpl implements LicenseRepository { final LicenseRemoteDataSource remoteDataSource; LicenseRepositoryImpl(this.remoteDataSource); @override Future getLicenses({ int page = 1, int perPage = 20, String? search, Map? filters, }) async { // 검색 및 필터 파라미터를 DataSource 형식에 맞게 변환 bool? isActive = filters?['is_active']; int? companyId = filters?['company_id']; int? assignedUserId = filters?['assigned_user_id']; String? licenseType = filters?['license_type']; return await remoteDataSource.getLicenses( page: page, perPage: perPage, isActive: isActive, companyId: companyId, assignedUserId: assignedUserId, licenseType: licenseType, ); } @override Future getLicenseDetail(int id) async { return await remoteDataSource.getLicenseById(id); } @override Future createLicense(Map data) async { final request = CreateLicenseRequest.fromJson(data); return await remoteDataSource.createLicense(request); } @override Future updateLicense(int id, Map data) async { final request = UpdateLicenseRequest.fromJson(data); return await remoteDataSource.updateLicense(id, request); } @override Future deleteLicense(int id) async { await remoteDataSource.deleteLicense(id); } }