import 'dart:developer'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:professional_repository/professional_repository.dart'; import 'package:prosappco/blocs/professional_list_bloc/professional_list_bloc.dart'; import 'package:user_repository/user_repository.dart'; part 'professional_event.dart'; part 'professional_state.dart'; class ProfessionalBloc extends Bloc { final ApiProfessionalRepository _professionalRepository; final UserRepository _userRepository; ProfessionalBloc( {required ApiProfessionalRepository professionalRepository, required UserRepository userRepository}) : _professionalRepository = professionalRepository, _userRepository = userRepository, super(ProfessionalInitial()) { bool isProModeActive = _professionalRepository.isProModeActive; final proInfo = _professionalRepository.lastProInfo(); emit(LoadedModeProState(isProModeActive, proInfo)); _professionalRepository.streamProInfo().listen((proInfo) { if (proInfo == null) { emit(const ProfessionalStateFailure()); } else { final isProModeActive = _professionalRepository.isProModeActive; emit(LoadedModeProState(isProModeActive, proInfo)); } }); _professionalRepository.sreamIsProModeActive().listen((isProModeActive) { add(UpdateProfessionalEvent(isProModeActive: isProModeActive)); }); on((event, emit) async { await _professionalRepository.switchProMode(); }); on((event, emit) async { final proInfo = _professionalRepository.lastProInfo(); emit(LoadedModeProState(event.isProModeActive, proInfo)); }); on((event, emit) async { final myUser = await _userRepository.lastUser(); if (myUser == null) return; try { final identificationPdfUrl = await _professionalRepository .uploadPdfCedula(event.identificationPicture, myUser.id); final certificatePdfUrl = await _professionalRepository .uploadPdfCertificado(event.certificatePicture, myUser.id); List specializationsPdfUrls = []; if (event.specializationsPictures.isNotEmpty) { specializationsPdfUrls = await _professionalRepository.uploadPdfsEspecializaciones( event.specializationsPictures, myUser.id); } else { specializationsPdfUrls = []; } await _professionalRepository.saveProfessionalInfo(ProfessionalEntity( id: event.id, identification: event.identification, identificationPicture: identificationPdfUrl, address: '', aditionalAddress: '', profession: event.profession, specializations: event.specializations, specializationsPictures: specializationsPdfUrls, certificatePicture: certificatePdfUrl, latitude: 0, longitude: 0, ratePreferences: false, rate: '', locationPreferences: LocationPreferences.office, bannerPicture: '', schedules: Schedules.empty, paymentMethods: PaymentMethodEntity.empty, )); } catch (e) { log('error acceso a pro ${e.toString()}'); } // _userRepository.updateUserInfo(myUser.copyWith(proState: ProState.pending)); }); } }