passo_mobile_app/lib/bloc/profile/profile_bloc.dart

88 lines
3.5 KiB
Dart

import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:unit2/model/profile/basic_info.dart';
import 'package:unit2/model/profile/basic_information/primary-information.dart';
import 'package:unit2/model/profile/eligibility.dart';
import 'package:unit2/model/profile/profileInfomation.dart';
import 'package:unit2/model/utils/eligibility.dart';
import 'package:unit2/sevices/profile/profile_service.dart';
import 'package:unit2/utils/location_utilities.dart';
import 'package:unit2/utils/profile_utilities.dart';
import '../../model/location/country.dart';
import '../../model/location/region.dart';
import '../../model/location/provinces.dart';
import '../../model/location/city.dart';
import '../../model/location/barangay.dart';
part 'profile_event.dart';
part 'profile_state.dart';
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
ProfileBloc() : super(ProfileInitial()) {
ProfileInformation? _profileInformation;
on<LoadProfile>((event, emit) async {
// try {
emit(ProfileLoading());
ProfileInformation? profileInformation =
await ProfileService.instance.getProfile(event.token, event.userID);
_profileInformation = profileInformation;
emit(ProfileLoaded(profileInformation: _profileInformation!));
// } catch (e) {
// emit(ProfileErrorState(mesage: e.toString()));
// }
});
on<LoadEligibility>((event, emit) {
emit(ProfileLoading());
emit(EligibilityLoaded(eligibilities: event.eligibilities));
});
on<EditEligibilityNotOverseas>((event, emit) async {
// try{
emit(ProfileLoading());
List<Region> regions = await LocationUtils.instance.getRegions();
List<Eligibility> eligibilities =
await ProfileUtilities.instance.getEligibilities();
bool? isOverseas = event.eligibityCert.overseas;
List<Province> provinces =
event.eligibityCert.examAddress?.cityMunicipality?.province?.region != null
? await LocationUtils.instance.getProvinces(
regionCode: event.eligibityCert.examAddress!.cityMunicipality!
.province!.region!.code!
.toString())
: [];
List<CityMunicipality> citymuns =
event.eligibityCert.examAddress?.cityMunicipality != null
? await LocationUtils.instance.getCities(
code: event.eligibityCert.examAddress!.cityMunicipality!
.province!.code!)
: [];
emit(EditNotOverseasEligibilityState(
currentEligibility: null,
currentRegion: null,
isOverseas: isOverseas!,
cityMuns: citymuns,
provinces: provinces,
eligibityCert: event.eligibityCert,
regions: regions,
eligibilities: eligibilities));
// }catch(e){
// emit(ProfileErrorState(mesage: e.toString()));
// }
});on<EditEligibilityOverseas>((event,emit)async{
emit(ProfileLoading());
List<Country> countries = await LocationUtils.instance.getCountries();
List<Eligibility> eligibilities =
await ProfileUtilities.instance.getEligibilities();
bool? isOverseas = event.eligibityCert.overseas;
emit(EditOverseasEligibilityState(
countries: countries,
currentCOuntry: null,
currentEligibility: null,
isOverseas: isOverseas!,
eligibityCert: event.eligibityCert,
eligibilities: eligibilities));
});
}
}