add export cycles

This commit is contained in:
hanie.khodkari
2024-12-14 18:02:16 +03:30
parent d74ba68a5a
commit a44f8ac368
3 changed files with 49 additions and 0 deletions
+2
View File
@@ -31,6 +31,8 @@ class Url {
static const String exportPackages = '$baseUrl/export/packages';
static const String exportCycles = '$baseUrl/export/cycles';
static String testResults(int id) {
return '$baseUrl/TestResults?page=$id';
}
@@ -1,7 +1,9 @@
import 'package:cssd/config/colors.dart';
import 'package:permission_handler/permission_handler.dart';
import '../../config/routes.dart';
import '../../providers/auth.dart';
import '../../providers/connectivity.dart';
import '../../widgets/CycleScreens/Result/banner.dart';
import '../../widgets/CycleScreens/Result/data_box.dart';
@@ -266,9 +268,37 @@ class CycleResultFloatingButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
final userData = Provider.of<Auth>(context, listen: false).user;
return Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
if (userData['roles'].contains('Supervisor') ||
userData['roles'].contains('Admin'))
InkWell(
customBorder: CircleBorder(),
onTap: () async {
var status = await Permission.storage.request();
if (status.isGranted) {
Provider.of<CyclesProvider>(context, listen: false)
.exportCycles();
}
},
child: Container(
padding: EdgeInsets.all(_deviceBlockSize),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.import_export,
size: 10 * _deviceBlockSize,
color: Colors.white,
),
),
),
SizedBox(
width: 2 * _deviceBlockSize,
),
InkWell(
customBorder: CircleBorder(),
onTap: () {
+17
View File
@@ -1,6 +1,8 @@
import 'dart:convert';
import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:path_provider/path_provider.dart';
import '../config/urls.dart';
import '../config/user.dart';
@@ -383,4 +385,19 @@ class CyclesProvider extends ChangeNotifier {
// };
return result!;
}
Future<bool> exportCycles() async {
final baseStorage = await getExternalStorageDirectory();
final taskId = await FlutterDownloader.enqueue(
url: Url.exportCycles,
savedDir: baseStorage!.path,
headers: {'Authorization': User.token, "Accept": "*"},
showNotification: true,
openFileFromNotification: true,
saveInPublicStorage: true,
fileName: "Cycles " + DateTime.now().toString() + ".xlsx",
);
print(taskId);
return true;
}
}