mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-10 19:19:17 +03:30
add export cycles
This commit is contained in:
@@ -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: () {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user