import 'package:eatvio_app/features/chat/repositories/chat_repository.dart'; import 'package:eatvio_app/features/chat/services/chat_service.dart'; import 'package:eatvio_app/features/consultant/become_consultant/models/consultation_request_model.dart'; import 'package:eatvio_app/features/consultant/become_consultant/repositories/consultant_repository.dart'; import 'package:eatvio_app/features/consultant/become_consultant/services/consultant_service.dart'; import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart'; import 'package:eatvio_app/features/profile/models/circumference_model.dart'; import 'package:eatvio_app/features/profile/models/profile_model.dart'; import 'package:eatvio_app/features/profile/models/weight_model.dart'; import 'package:eatvio_app/features/profile/repositories/profile_repository.dart'; import 'package:eatvio_app/features/profile/services/profile_service.dart'; import '../fixture_reader.dart'; class FixtureProfileRepository extends ProfileRepository { FixtureProfileRepository() : super(profileService: _NoopProfileService()); final List> addWeightRequests = >[]; final List> addCircumferenceRequests = >[]; @override Future getMyProfile() async { final profileFixture = FixtureReader.readAsMap('profile/my_profile_response.json'); return ProfileModel.fromJson(profileFixture); } @override Future getMyProfileDetails() async { final detailsFixture = FixtureReader.readAsMap('profile/profile_details_response.json'); return ProfileDetailsModel.fromJson(detailsFixture); } @override Future addWeight({required double weight}) async { addWeightRequests.add({'weight': weight}); } @override Future addCircumference({required int chestCircumference, required int waistCircumference, required int hipCircumference}) async { addCircumferenceRequests.add({'chest_circumference': chestCircumference, 'waist_circumference': waistCircumference, 'hip_circumference': hipCircumference}); } @override Future> getWeight({required String period, String? slug}) async { final weightListFixture = FixtureReader.readAsList('profile/weight_list_response.json'); return weightListFixture.map((item) => WeightModel.fromJson(item as Map)).toList(); } @override Future> getCircumferences({required String period, String? slug}) async { final circumferenceListFixture = FixtureReader.readAsList('profile/circumference_list_response.json'); return circumferenceListFixture.map((item) => CircumferenceModel.fromJson(item as Map)).toList(); } @override Future> getBlogPostsByAuthorSlug({required String slug}) async { return []; } } class _NoopProfileService implements ProfileService { @override noSuchMethod(Invocation invocation) => throw UnimplementedError('ProfileService call ${invocation.memberName}'); } class FixtureChatRepository extends ChatRepository { FixtureChatRepository() : super(chatService: _NoopChatService()); @override Future getChatByUserSlug(String slug) async { return 'chat-uuid-123'; } } class _NoopChatService implements ChatService { @override noSuchMethod(Invocation invocation) => throw UnimplementedError('ChatService call ${invocation.memberName}'); } class FixtureConsultantRepository extends ConsultantRepository { FixtureConsultantRepository() : super(consultantService: _NoopConsultantService()); @override Future getConsultantRequestStatus(String slug) async { return const ConsultationRequestModel( educationModel: EducationModel( hasMedicalEducation: 1, completedCourses: null, vkLink: null, instaLink: null, fbLink: null, tgLink: null, personalSiteLink: null, requestState: ModerationStatus.approved, ), photos: [], ratingPlace: null, canceledModeration: null, ); } } class _NoopConsultantService implements ConsultantService { @override noSuchMethod(Invocation invocation) => throw UnimplementedError('ConsultantService call ${invocation.memberName}'); }