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'; class SpaceModelManagementApi { Future> listSpaceModels( {required String projectId, int page = 1}) async { final response = await HTTPService().get( path: ApiEndpoints.listSpaceModels.replaceAll('{projectId}', projectId), queryParameters: {'page': page}, expectedResponseModel: (json) { List jsonData = json['data']; return jsonData.map((jsonItem) { return SpaceTemplateModel.fromJson(jsonItem); }).toList(); }, ); return response; } Future createSpaceModel( CreateSpaceTemplateBodyModel spaceModel, String projectId) async { final response = await HTTPService().post( path: ApiEndpoints.createSpaceModel.replaceAll('{projectId}', projectId), showServerMessage: true, body: spaceModel.toJson(), expectedResponseModel: (json) { return SpaceTemplateModel.fromJson(json['data']); }, ); return response; } Future updateSpaceModel(CreateSpaceTemplateBodyModel spaceModel, String spaceModelUuid, String projectId) async { final response = await HTTPService().put( path: ApiEndpoints.updateSpaceModel .replaceAll('{projectId}', projectId) .replaceAll('{spaceModelUuid}', spaceModelUuid), body: spaceModel.toJson(), expectedResponseModel: (json) { return json['message']; }, ); return response; } Future getSpaceModel( String spaceModelUuid, String projectId) async { final response = await HTTPService().get( path: ApiEndpoints.getSpaceModel .replaceAll('{projectId}', projectId) .replaceAll('{spaceModelUuid}', spaceModelUuid), showServerMessage: true, expectedResponseModel: (json) { return SpaceTemplateModel.fromJson(json['data']); }, ); return response; } Future linkSpaceModel( {required String spaceModelUuid, required String projectId, required List spaceUuids, required bool isOverWrite}) async { final response = await HTTPService().post( path: ApiEndpoints.linkSpaceModel .replaceAll('{projectId}', projectId) .replaceAll('{spaceModelUuid}', spaceModelUuid), showServerMessage: true, body: {"spaceUuids": spaceUuids, "overwrite": isOverWrite}, expectedResponseModel: (json) { return json; }, ); return response; } Future validateSpaceModel(String projectId, List spaceUuids) async { final response = await HTTPService().post( path: ApiEndpoints.validateSpaceModel .replaceAll('{projectId}', projectId), showServerMessage: true, body: {"spacesUuids": spaceUuids}, expectedResponseModel: (json) { return json; }); return response; } Future deleteSpaceModel(String spaceModelUuid, String projectId) async { final response = await HTTPService().delete( path: ApiEndpoints.getSpaceModel .replaceAll('{projectId}', projectId) .replaceAll('{spaceModelUuid}', spaceModelUuid), showServerMessage: true, expectedResponseModel: (json) { return json['success'] ?? false; }, ); return response; } }