Refactor booking system: remove unused classes, update dependencies, and implement date selection logic

This commit is contained in:
mohammad
2025-07-09 16:18:10 +03:00
parent 6534bfae5b
commit 9f28e1ccef
40 changed files with 989 additions and 503 deletions

View File

@ -0,0 +1,50 @@
import 'package:dio/dio.dart';
import 'package:syncrow_web/pages/access_management/booking_system/domain/models/paginated_bookable_spaces.dart';
import 'package:syncrow_web/pages/access_management/booking_system/domain/services/booking_system_service.dart';
import 'package:syncrow_web/services/api/api_exception.dart';
import 'package:syncrow_web/services/api/http_service.dart';
import 'package:syncrow_web/utils/constants/api_const.dart';
class BookableSpacesService implements BookingSystemService {
const BookableSpacesService(this._httpService);
final HTTPService _httpService;
static const _defaultErrorMessage = 'Failed to load bookable spaces';
@override
Future<PaginatedBookableSpaces> getBookableSpaces({
required int page,
required int size,
required String search,
}) async {
try {
final response = await _httpService.get(
path: ApiEndpoints.getBookableSpaces,
queryParameters: {
'page': page,
'size': size,
'active': true,
'configured': true,
if (search.isNotEmpty && search != 'null') 'search': search,
},
expectedResponseModel: (json) {
print('Response JSON: $json');
return PaginatedBookableSpaces.fromJson(
json as Map<String, dynamic>,
);
});
return response;
} on DioException catch (e) {
final responseData = e.response?.data;
if (responseData is Map<String, dynamic>) {
final errorMessage = responseData['error']?['message'] as String? ??
responseData['message'] as String? ??
_defaultErrorMessage;
throw APIException(errorMessage);
}
throw APIException(_defaultErrorMessage);
} catch (e) {
throw APIException('$_defaultErrorMessage: ${e.toString()}');
}
}
}