import 'dart:math'; import 'package:camera/camera.dart'; import '../data/session/session_storage.dart'; import '../services/services.dart'; import 'package:http/http.dart' as http; class GeneralService extends BaseService { String endPoint = '/servicios/visita'; String postdistancia = '/servicios/visita/calcular-distancia'; Map defaultQueryParameters = {"ordenar":"id-desc"}; Future enviarMedia({required int id, required XFile media, String? modulo, String? tipo, String? etiquetaID}) async { //ejemplo: tipo = imagen, modulo = Visita final token = await SessionStorage().getToken(); String completo = "$base_url/admin/subir-archivo/guardar"; String nombre = "generico"; http.MultipartRequest request = http.MultipartRequest('POST', Uri.parse(completo)); request.headers.addAll({ 'Content-type': 'multipart/form-data', 'Accept': 'application/json', 'Authorization': "Bearer $token" }); if(tipo == "archivo"){ final random = Random(); final randomInt = random.nextInt(99999); int lastIndex = media.name.lastIndexOf('.'); nombre = "$randomInt"; if (lastIndex != -1 && lastIndex < media.name.length - 1) { String ext = media.name.substring(lastIndex + 1); nombre = "$nombre.${ext.toLowerCase()}"; } nombre = media.name.toString(); } if(tipo == "imagen"){ final random = Random(); final randomInt = random.nextInt(99999); nombre = "$randomInt.jpg"; } if(tipo == "audio"){ final random = Random(); final randomInt = random.nextInt(99999); nombre = "$randomInt.wav"; } request.fields[etiquetaID.toString()] = "$id"; request.fields[modulo.toString()] = '1'; request.fields['tipo'] = tipo.toString(); request.files.add( http.MultipartFile( 'archivo', media.openRead(), await media.length(), filename: nombre, ), ); return await request.send(); } }