Files
syncrow-web/lib/services/space_model_mang_api.dart
2025-01-09 00:07:51 +04:00

78 lines
2.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/create_space_template_body_model.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart';
import 'package:syncrow_web/services/api/http_service.dart';
import 'package:syncrow_web/utils/constants/api_const.dart';
import 'package:syncrow_web/utils/constants/temp_const.dart';
class SpaceModelManagementApi {
Future<List<SpaceTemplateModel>> listSpaceModels({int page = 1}) async {
try {
List<SpaceTemplateModel> spaceModels = [];
bool hasNext = true;
while (hasNext) {
await HTTPService().get(
path: ApiEndpoints.listSpaceModels
.replaceAll('{projectId}', TempConst.projectId),
queryParameters: {'page': page},
expectedResponseModel: (json) {
List<dynamic> jsonData = json['data'];
hasNext = json['hasNext'] ?? false;
int currentPage = json['page'] ?? 1;
List<SpaceTemplateModel> spaceModelList = jsonData.map((jsonItem) {
return SpaceTemplateModel.fromJson(jsonItem);
}).toList();
spaceModels.addAll(spaceModelList);
page = currentPage + 1;
return spaceModelList;
},
);
}
return spaceModels;
} catch (e) {
debugPrint('Error fetching space models: $e');
return [];
}
}
Future<SpaceTemplateModel?> createSpaceModel(
CreateSpaceTemplateBodyModel spaceModel) async {
try {
final response = await HTTPService().post(
path: ApiEndpoints.createSpaceModel
.replaceAll('{projectId}', TempConst.projectId),
showServerMessage: true,
body: spaceModel.toJson(),
expectedResponseModel: (json) {
return SpaceTemplateModel.fromJson(json['data']);
},
);
return response;
} catch (e) {
debugPrint('Error creating space model: $e');
return null;
}
}
Future<SpaceTemplateModel?> getSpaceModel(String spaceModelUuid) async {
try {
final response = await HTTPService().get(
path: ApiEndpoints.getSpaceModel
.replaceAll('{projectId}', TempConst.projectId)
.replaceAll('{spaceModelUuid}', spaceModelUuid),
showServerMessage: true,
expectedResponseModel: (json) {
debugPrint('Response JSON: $json');
return SpaceTemplateModel.fromJson(json['data']);
},
);
return response;
} catch (e) {
debugPrint('Error getting space model: $e');
return null;
}
}
}