60 lines
1.6 KiB
Dart
60 lines
1.6 KiB
Dart
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
|
import 'dart:io';
|
|
|
|
import 'package:ebroker/data/model/property_model.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
import '../../Repositories/advertisement_repository.dart';
|
|
|
|
abstract class CreateAdvertisementState {}
|
|
|
|
class CreateAdvertisementInitial extends CreateAdvertisementState {}
|
|
|
|
class CreateAdvertisementInProgress extends CreateAdvertisementState {}
|
|
|
|
class CreateAdvertisementSuccess extends CreateAdvertisementState {
|
|
final dynamic proeprtyId;
|
|
final PropertyModel property;
|
|
CreateAdvertisementSuccess({
|
|
required this.property,
|
|
required this.proeprtyId,
|
|
});
|
|
}
|
|
|
|
class CreateAdvertisementFailure extends CreateAdvertisementState {
|
|
final String errorMessage;
|
|
CreateAdvertisementFailure(
|
|
this.errorMessage,
|
|
);
|
|
}
|
|
|
|
class CreateAdvertisementCubit extends Cubit<CreateAdvertisementState> {
|
|
final AdvertisementRepository _advertisementRepository =
|
|
AdvertisementRepository();
|
|
|
|
CreateAdvertisementCubit()
|
|
: super(
|
|
CreateAdvertisementInitial(),
|
|
);
|
|
|
|
Future<void> create({
|
|
required String type,
|
|
required String propertyId,
|
|
File? image,
|
|
}) async {
|
|
try {
|
|
emit(CreateAdvertisementInProgress());
|
|
Map<String, dynamic> result = await _advertisementRepository.create(
|
|
propertyId: propertyId,
|
|
type: type,
|
|
image: image,
|
|
);
|
|
emit(CreateAdvertisementSuccess(
|
|
proeprtyId: propertyId,
|
|
property: PropertyModel.fromMap(result['data'][0])));
|
|
} catch (e) {
|
|
emit(CreateAdvertisementFailure(e.toString()));
|
|
}
|
|
}
|
|
}
|