mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
build blocs for bookable and nonBookable spaces
This commit is contained in:
@ -0,0 +1,34 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/bookable_spaces_params.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/bookable_spaces_service.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_management_v2/main_module/shared/models/paginated_data_model.dart';
|
||||||
|
import 'package:syncrow_web/services/api/api_exception.dart';
|
||||||
|
|
||||||
|
part 'bookable_spaces_event.dart';
|
||||||
|
part 'bookable_spaces_state.dart';
|
||||||
|
|
||||||
|
class BookableSpacesBloc
|
||||||
|
extends Bloc<BookableSpacesEvent, BookableSpacesState> {
|
||||||
|
final BookableSpacesService bookableSpacesService;
|
||||||
|
BookableSpacesBloc(this.bookableSpacesService)
|
||||||
|
: super(BookableSpacesInitial()) {
|
||||||
|
on<LoadBookableSpacesEvent>(_onLoadBookableSpaces);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onLoadBookableSpaces(
|
||||||
|
LoadBookableSpacesEvent event, Emitter<BookableSpacesState> emit) async {
|
||||||
|
emit(BookableSpacesLoading());
|
||||||
|
try {
|
||||||
|
final bookableSpaces = await bookableSpacesService.load(event.params);
|
||||||
|
emit(BookableSpacesLoaded(bookableSpacesList: bookableSpaces));
|
||||||
|
} on APIException catch (e) {
|
||||||
|
emit(BookableSpacesError(error: e.message));
|
||||||
|
} catch (e) {
|
||||||
|
emit(
|
||||||
|
BookableSpacesError(error: e.toString()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
part of 'bookable_spaces_bloc.dart';
|
||||||
|
|
||||||
|
sealed class BookableSpacesEvent extends Equatable {
|
||||||
|
const BookableSpacesEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadBookableSpacesEvent extends BookableSpacesEvent {
|
||||||
|
final BookableSpacesParams params;
|
||||||
|
const LoadBookableSpacesEvent(this.params);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
part of 'bookable_spaces_bloc.dart';
|
||||||
|
|
||||||
|
sealed class BookableSpacesState extends Equatable {
|
||||||
|
const BookableSpacesState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class BookableSpacesInitial extends BookableSpacesState {}
|
||||||
|
|
||||||
|
final class BookableSpacesLoading extends BookableSpacesState {}
|
||||||
|
|
||||||
|
final class BookableSpacesLoaded extends BookableSpacesState {
|
||||||
|
final PaginatedDataModel<BookableSpacemodel> bookableSpacesList;
|
||||||
|
const BookableSpacesLoaded({
|
||||||
|
required this.bookableSpacesList,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
final class BookableSpacesError extends BookableSpacesState {
|
||||||
|
final String error;
|
||||||
|
const BookableSpacesError({
|
||||||
|
required this.error,
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/params/non_bookable_spaces_params.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/non_bookable_spaces_service.dart';
|
||||||
|
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/service/send_bookable_spaces_to_api_params.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_management_v2/main_module/shared/models/paginated_data_model.dart';
|
||||||
|
|
||||||
|
part 'non_bookaable_spaces_event.dart';
|
||||||
|
part 'non_bookaable_spaces_state.dart';
|
||||||
|
|
||||||
|
class NonBookableSpacesBloc
|
||||||
|
extends Bloc<NonBookableSpacesEvent, NonBookableSpacesState> {
|
||||||
|
NonBookableSpacesService nonBookableSpacesService;
|
||||||
|
List<BookableSpacemodel> selectedBookableSpaces = [];
|
||||||
|
NonBookableSpacesBloc(this.nonBookableSpacesService)
|
||||||
|
: super(NonBookableSpacesInitial()) {
|
||||||
|
on<LoadUnBookableSpacesEvent>(_onLoadUnBookableSpacesEvent);
|
||||||
|
on<AddToBookableSpaceEvent>(_onAddToBookableSpaceEvent);
|
||||||
|
on<RemoveFromBookableSpaceEvent>(_onRemoveFromBookableSpaceEvent);
|
||||||
|
on<SendBookableSpacesToApi>(_onSendBookableSpacesToApi);
|
||||||
|
}
|
||||||
|
Future<void> _onLoadUnBookableSpacesEvent(LoadUnBookableSpacesEvent event,
|
||||||
|
Emitter<NonBookableSpacesState> emit) async {
|
||||||
|
emit(NonBookableSpacesLoading());
|
||||||
|
try {
|
||||||
|
final nonBookableSpacesList = await nonBookableSpacesService.load(
|
||||||
|
event.nonBookableSpacesParams,
|
||||||
|
);
|
||||||
|
emit(
|
||||||
|
NonBookableSpacesLoaded(nonBookableSpaces: nonBookableSpacesList),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(
|
||||||
|
NonBookableSpacesError(e.toString()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onAddToBookableSpaceEvent(
|
||||||
|
AddToBookableSpaceEvent event,
|
||||||
|
Emitter<NonBookableSpacesState> emit,
|
||||||
|
) {
|
||||||
|
if (state is NonBookableSpacesLoaded) {
|
||||||
|
final currentState = state as NonBookableSpacesLoaded;
|
||||||
|
|
||||||
|
final updatedSelectedSpaces =
|
||||||
|
List<BookableSpacemodel>.from(currentState.selectedBookableSpaces)
|
||||||
|
..add(event.nonBookableSpace);
|
||||||
|
|
||||||
|
selectedBookableSpaces.add(event.nonBookableSpace);
|
||||||
|
|
||||||
|
emit(
|
||||||
|
NonBookableSpacesLoaded(
|
||||||
|
nonBookableSpaces: currentState.nonBookableSpaces,
|
||||||
|
selectedBookableSpaces: updatedSelectedSpaces,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onRemoveFromBookableSpaceEvent(RemoveFromBookableSpaceEvent event,
|
||||||
|
Emitter<NonBookableSpacesState> emit) {
|
||||||
|
if (state is NonBookableSpacesLoaded) {
|
||||||
|
final currentState = state as NonBookableSpacesLoaded;
|
||||||
|
currentState.selectedBookableSpaces.remove(event.bookableSpace);
|
||||||
|
selectedBookableSpaces.remove(event.bookableSpace);
|
||||||
|
emit(
|
||||||
|
NonBookableSpacesLoaded(
|
||||||
|
nonBookableSpaces: currentState.nonBookableSpaces,
|
||||||
|
selectedBookableSpaces: currentState.selectedBookableSpaces,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onSendBookableSpacesToApi(SendBookableSpacesToApi event,
|
||||||
|
Emitter<NonBookableSpacesState> emit) async {
|
||||||
|
emit(NonBookableSpacesLoading());
|
||||||
|
try {
|
||||||
|
await nonBookableSpacesService.sendBookableSpacesToApi(
|
||||||
|
SendBookableSpacesToApiParams.fromBookableSpacesModel(
|
||||||
|
selectedBookableSpaces),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(
|
||||||
|
NonBookableSpacesError(e.toString()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
part of 'non_bookaable_spaces_bloc.dart';
|
||||||
|
|
||||||
|
sealed class NonBookableSpacesEvent extends Equatable {
|
||||||
|
const NonBookableSpacesEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadUnBookableSpacesEvent extends NonBookableSpacesEvent {
|
||||||
|
final NonBookableSpacesParams nonBookableSpacesParams;
|
||||||
|
const LoadUnBookableSpacesEvent({
|
||||||
|
required this.nonBookableSpacesParams,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddToBookableSpaceEvent extends NonBookableSpacesEvent {
|
||||||
|
final BookableSpacemodel nonBookableSpace;
|
||||||
|
const AddToBookableSpaceEvent({
|
||||||
|
required this.nonBookableSpace,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class RemoveFromBookableSpaceEvent extends NonBookableSpacesEvent {
|
||||||
|
final BookableSpacemodel bookableSpace;
|
||||||
|
const RemoveFromBookableSpaceEvent({
|
||||||
|
required this.bookableSpace,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class SendBookableSpacesToApi extends NonBookableSpacesEvent {}
|
@ -0,0 +1,26 @@
|
|||||||
|
part of 'non_bookaable_spaces_bloc.dart';
|
||||||
|
|
||||||
|
sealed class NonBookableSpacesState extends Equatable {
|
||||||
|
const NonBookableSpacesState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class NonBookableSpacesInitial extends NonBookableSpacesState {}
|
||||||
|
|
||||||
|
class NonBookableSpacesLoading extends NonBookableSpacesState {}
|
||||||
|
|
||||||
|
class NonBookableSpacesLoaded extends NonBookableSpacesState {
|
||||||
|
final PaginatedDataModel<BookableSpacemodel> nonBookableSpaces;
|
||||||
|
final List<BookableSpacemodel> selectedBookableSpaces;
|
||||||
|
const NonBookableSpacesLoaded({
|
||||||
|
required this.nonBookableSpaces,
|
||||||
|
this.selectedBookableSpaces = const [],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class NonBookableSpacesError extends NonBookableSpacesState {
|
||||||
|
final String error;
|
||||||
|
const NonBookableSpacesError(this.error);
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
part 'steps_state.dart';
|
||||||
|
|
||||||
|
class StepsCubit extends Cubit<StepsState> {
|
||||||
|
StepsCubit() : super(StepsInitial());
|
||||||
|
|
||||||
|
void initDialogValue() {
|
||||||
|
emit(StepOneState());
|
||||||
|
}
|
||||||
|
|
||||||
|
void goToNextStep() {
|
||||||
|
if (state is StepOneState) {
|
||||||
|
emit(StepTwoState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
part of 'steps_cubit.dart';
|
||||||
|
|
||||||
|
sealed class StepsState extends Equatable {
|
||||||
|
const StepsState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class StepsInitial extends StepsState {}
|
||||||
|
|
||||||
|
final class StepOneState extends StepsState {}
|
||||||
|
|
||||||
|
final class StepTwoState extends StepsState {}
|
||||||
|
|
||||||
|
final class StepEditMode extends StepsState {}
|
Reference in New Issue
Block a user