import 'package:dio/dio.dart'; import 'package:eatvio_app/features/chat/models/chat_messages_model.dart'; import 'package:eatvio_app/features/chat/models/chat_room_model.dart'; import 'package:eatvio_app/features/chat/models/chat_room_pagination_model.dart'; import 'package:eatvio_app/features/chat/models/payment_model.dart'; import 'package:eatvio_app/features/chat/models/plan_complain_model.dart'; import 'package:eatvio_app/features/plans/models/chosen_plan_model.dart'; import 'package:retrofit/retrofit.dart'; part 'chat_service.g.dart'; @RestApi() abstract class ChatService { factory ChatService(Dio dio, {String baseUrl}) = _ChatService; @GET('/api/v2/chat/index') Future getChatRooms({ @Query('page') required int page, @Query('filters[data][\$conversation_name]') String? query, }); @GET('/api/v2/chat/show/{uuid}') Future getChatRoom({ @Path() required String uuid, }); @POST('/api/v2/chat/message/send/{slug}') @MultiPart() Future sendMessage({ @Header('X-Socket-ID') required String socketId, @Path() required String slug, @Part() String? data, @Part(name: 'media_data[]', contentType: 'multipart/form-data') List? mediaData, }); @GET('/api/v2/chat/show/{id}/messages?page={page}') Future getChatMessages({ @Path() required String id, @Path() required int page, }); @GET('/api/v2/chat/get_by_user/{user}') Future getChatRoomIdByUserSlug({ @Path() required String user, }); @POST('/api/chat/{id}/messages/markAsRead') Future markMessagesAsRead({ @Path() required String id, @Body() required Map> body, }); @POST('/api/chosen_plans/{id}/cancel') Future cancelChosenPlan({ @Path() required int id, }); @POST('/api/chosen_plans/{id}/negotiate_contract_start') Future choseStartPlanDate({ @Path() required int id, @Body() required Map date, }); @POST('/api/chosen_plans/{id}/start_payment_process') Future getPaymentLink({ @Path() required int id, }); @GET('/api/chosen_plans/show/{id}') Future getChosenPlan({ @Path() required int id, }); @POST('/api/chosen_plans/{id}/confirm_finish') Future finishChosenPlan({ @Path() required int id, }); @POST('/api/chosen_plans/{id}/complain') Future complainAboutConsultation({ @Path() required int id, @Body() required PlanComplainModel body, }); @GET('/api/chat/get_by_user/{slug}') Future getChatByUserSlug({ @Path() required String slug, }); }