import 'package:dartz/dartz.dart'; import 'package:equatable/equatable.dart'; import '../entities/dashboard_entity.dart'; import '../repositories/dashboard_repository.dart'; import '../../../../core/error/failures.dart'; import '../../../../core/usecases/usecase.dart'; class GetDashboardData implements UseCase { final DashboardRepository repository; GetDashboardData(this.repository); @override Future> call(GetDashboardDataParams params) async { return await repository.getDashboardData( params.organizationId, params.userId, ); } } class GetDashboardDataParams extends Equatable { final String organizationId; final String userId; const GetDashboardDataParams({ required this.organizationId, required this.userId, }); @override List get props => [organizationId, userId]; } class GetDashboardStats implements UseCase { final DashboardRepository repository; GetDashboardStats(this.repository); @override Future> call(GetDashboardStatsParams params) async { return await repository.getDashboardStats( params.organizationId, params.userId, ); } } class GetDashboardStatsParams extends Equatable { final String organizationId; final String userId; const GetDashboardStatsParams({ required this.organizationId, required this.userId, }); @override List get props => [organizationId, userId]; } class GetRecentActivities implements UseCase, GetRecentActivitiesParams> { final DashboardRepository repository; GetRecentActivities(this.repository); @override Future>> call(GetRecentActivitiesParams params) async { return await repository.getRecentActivities( params.organizationId, params.userId, limit: params.limit, ); } } class GetRecentActivitiesParams extends Equatable { final String organizationId; final String userId; final int limit; const GetRecentActivitiesParams({ required this.organizationId, required this.userId, this.limit = 10, }); @override List get props => [organizationId, userId, limit]; } class GetUpcomingEvents implements UseCase, GetUpcomingEventsParams> { final DashboardRepository repository; GetUpcomingEvents(this.repository); @override Future>> call(GetUpcomingEventsParams params) async { return await repository.getUpcomingEvents( params.organizationId, params.userId, limit: params.limit, ); } } class GetUpcomingEventsParams extends Equatable { final String organizationId; final String userId; final int limit; const GetUpcomingEventsParams({ required this.organizationId, required this.userId, this.limit = 5, }); @override List get props => [organizationId, userId, limit]; }