import 'package:syncrow_web/pages/spaces_management/all_spaces/model/tag.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'; 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 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; } Future> listTags({required String projectId}) async { final response = await HTTPService().get( path: ApiEndpoints.listTags.replaceAll('{projectId}', projectId), expectedResponseModel: (json) { List jsonData = json['data']; return jsonData.map((jsonItem) { return Tag.fromJson(jsonItem); }).toList(); }, ); return response; } }