first commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
import '../../../../data/datasources/settings_local_datasource.dart';
|
||||
import '../../models/tax_model.dart';
|
||||
|
||||
part 'tax_settings_event.dart';
|
||||
part 'tax_settings_state.dart';
|
||||
part 'tax_settings_bloc.freezed.dart';
|
||||
|
||||
class TaxSettingsBloc extends Bloc<TaxSettingsEvent, TaxSettingsState> {
|
||||
final SettingsLocalDatasource settingsLocalDatasource;
|
||||
|
||||
TaxSettingsBloc(this.settingsLocalDatasource) : super(const _Initial()) {
|
||||
on<_LoadSettings>((event, emit) async {
|
||||
emit(const _Loading());
|
||||
try {
|
||||
final tax = await settingsLocalDatasource.getTax();
|
||||
final serviceCharge = await settingsLocalDatasource.getServiceCharge();
|
||||
|
||||
emit(_Loaded(
|
||||
taxModel: tax,
|
||||
serviceChargeValue: serviceCharge,
|
||||
));
|
||||
} catch (e) {
|
||||
emit(_Error(e.toString()));
|
||||
}
|
||||
});
|
||||
|
||||
on<_SaveTax>((event, emit) async {
|
||||
emit(const _Loading());
|
||||
try {
|
||||
await settingsLocalDatasource.saveTax(event.taxModel);
|
||||
final serviceCharge = await settingsLocalDatasource.getServiceCharge();
|
||||
|
||||
emit(_Loaded(
|
||||
taxModel: event.taxModel,
|
||||
serviceChargeValue: serviceCharge,
|
||||
));
|
||||
} catch (e) {
|
||||
emit(_Error(e.toString()));
|
||||
}
|
||||
});
|
||||
|
||||
on<_SaveServiceCharge>((event, emit) async {
|
||||
emit(const _Loading());
|
||||
try {
|
||||
await settingsLocalDatasource.saveServiceCharge(event.serviceCharge);
|
||||
final tax = await settingsLocalDatasource.getTax();
|
||||
|
||||
emit(_Loaded(
|
||||
taxModel: tax,
|
||||
serviceChargeValue: event.serviceCharge,
|
||||
));
|
||||
} catch (e) {
|
||||
emit(_Error(e.toString()));
|
||||
}
|
||||
});
|
||||
|
||||
on<_UpdateSettings>((event, emit) async {
|
||||
emit(const _Loading());
|
||||
try {
|
||||
// Create tax model
|
||||
final taxModel = TaxModel(
|
||||
name: 'Pajak PB1',
|
||||
type: TaxType.pajak,
|
||||
value: event.taxValue,
|
||||
);
|
||||
|
||||
await settingsLocalDatasource.saveTax(taxModel);
|
||||
await settingsLocalDatasource.saveServiceCharge(event.serviceChargeValue);
|
||||
|
||||
emit(_Loaded(
|
||||
taxModel: taxModel,
|
||||
serviceChargeValue: event.serviceChargeValue,
|
||||
));
|
||||
} catch (e) {
|
||||
emit(_Error(e.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
||||
part of 'tax_settings_bloc.dart';
|
||||
|
||||
@freezed
|
||||
class TaxSettingsEvent with _$TaxSettingsEvent {
|
||||
const factory TaxSettingsEvent.loadSettings() = _LoadSettings;
|
||||
const factory TaxSettingsEvent.saveTax(TaxModel taxModel) = _SaveTax;
|
||||
const factory TaxSettingsEvent.saveServiceCharge(int serviceCharge) = _SaveServiceCharge;
|
||||
const factory TaxSettingsEvent.updateSettings({
|
||||
required int taxValue,
|
||||
required int serviceChargeValue,
|
||||
}) = _UpdateSettings;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
part of 'tax_settings_bloc.dart';
|
||||
|
||||
@freezed
|
||||
class TaxSettingsState with _$TaxSettingsState {
|
||||
const factory TaxSettingsState.initial() = _Initial;
|
||||
const factory TaxSettingsState.loading() = _Loading;
|
||||
const factory TaxSettingsState.loaded({
|
||||
required TaxModel taxModel,
|
||||
required int serviceChargeValue,
|
||||
}) = _Loaded;
|
||||
const factory TaxSettingsState.error(String message) = _Error;
|
||||
}
|
||||
Reference in New Issue
Block a user