You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.7KB

  1. import 'package:bloc/bloc.dart';
  2. import 'package:equatable/equatable.dart';
  3. import 'package:farm_tpf/presentation/screens/codes/models/stamp_timeline.dart';
  4. import '../../../../data/api/app_exception.dart';
  5. import '../../../../data/repository/repository.dart';
  6. import '../../../../utils/utils.dart';
  7. import '../../../custom_widgets/widget_utils.dart';
  8. import '../models/stamp.dart';
  9. part 'detail_stamp_state.dart';
  10. class DetailStampCubit extends Cubit<DetailStampState> {
  11. final repository = Repository();
  12. DetailStampCubit() : super(DetailStampInitial());
  13. Future<void> preparedData(int stampId) async {
  14. try {
  15. await Future.delayed(const Duration(seconds: 0));
  16. emit(DetailStampLoading());
  17. var stamp = await repository.getStampDetail(id: stampId);
  18. var timeline = await repository.getStampTimeline(stampId: stampId);
  19. // stampTypeRaws = await repository.stampTypes();
  20. // stampTypes.value = stampTypeRaws
  21. // .map(
  22. // (e) => ItemDropDown(key: e.id?.toString(), value: e.exampleStampName),
  23. // )
  24. // .toList();
  25. emit(DetailStampSuccessful(stamp, timeline));
  26. } catch (e) {
  27. emit(DetailStampFailure(AppException.handleError(e)));
  28. }
  29. }
  30. Future<void> updateStampStatus({
  31. required int stampId,
  32. required String status,
  33. }) async {
  34. UtilWidget.showLoading();
  35. await repository.updateStampStatus(
  36. (success) {
  37. UtilWidget.hideDialog();
  38. Utils.showSnackBarSuccess();
  39. preparedData(stampId);
  40. },
  41. (errorMessage) {
  42. UtilWidget.hideDialog();
  43. Utils.showSnackBarError();
  44. },
  45. stampId: stampId,
  46. status: status,
  47. );
  48. }
  49. }