import 'dart:io'; import 'package:path_provider/path_provider.dart'; import 'package:dio/dio.dart'; import 'package:qadirneyriz/config/config.dart'; import 'package:qadirneyriz/setting/setting.dart'; import 'package:qadirneyriz/utils/result/result.dart'; class ReportApi { Future downloadReportMeetings( {String? fromDate, String? toDate, int? location, int? subject, int? meetingManager, int? status, required String format}) async { try { final Map headers = {"Accept": "application/json"}; String dataToken = setting.userLocalDb.getUser().token!; if (dataToken != '') { headers['Authorization'] = "Bearer $dataToken"; } final Directory tempDir = await getApplicationDocumentsDirectory(); final String tempPath = tempDir.path; final String savePath = '$tempPath/report.$format'; final res = await Dio().download( '${config.network.baseUrl}statistic', savePath, queryParameters: { 'date_meeting_az': fromDate, 'date_meeting_ta': toDate, 'location': location, 'subject': subject, 'meeting_manager': meetingManager, 'status': status, 'format': format }, options: Options(headers: headers), ); if (res.statusCode == 200 || res.statusCode == 201) { return Result(isOk: true, message: savePath); } else { return Result( isOk: false, message: 'Failed with status code: ${res.statusCode}'); } } on DioException catch (e) { // print(e); return Result( isOk: false, errors: e.response?.data['errors'], message: e.response?.data['message'] ?? 'An error occurred during download.', ); } } Future downloadReportPrivateMeetings( {String? fromDate, String? toDate, int? location, int? subject, int? meetingManager, int? status, required String format}) async { try { final Map headers = {"Accept": "application/json"}; String dataToken = setting.userLocalDb.getUser().token!; if (dataToken != '') { headers['Authorization'] = "Bearer $dataToken"; } final Directory tempDir = await getApplicationDocumentsDirectory(); final String tempPath = tempDir.path; final String savePath = '$tempPath/reportprivatemeeting.$format'; // print("Download path: $savePath"); final String url = '${config.network.baseUrl}private_meetings/export'; // print("Download URL: $url"); final Map params = { 'date_meeting_az': fromDate, 'date_meeting_ta': toDate, 'location': location, 'subject': subject, 'meeting_manager': meetingManager, 'status': status, 'format': format }; // print("Request parameters: $params"); final res = await Dio().download( url, savePath, queryParameters: params, options: Options(headers: headers), ); // print("Response status: ${res.statusCode}"); // print("Response headers: ${res.headers}"); if (res.statusCode == 200 || res.statusCode == 201) { // print("File downloaded successfully: $savePath"); return Result(isOk: true, message: savePath); } else { print("Failed with status code: ${res.statusCode}"); return Result( isOk: false, message: 'Failed with status code: ${res.statusCode}'); } } on DioException catch (e) { print("DioException: $e"); print("Error response data: ${e.response?.data}"); return Result( isOk: false, errors: e.response?.data['errors'], message: e.response?.data['message'] ?? 'An error occurred during download.', ); } } }