mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-10 19:28:56 +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 exportPackages = '$baseUrl/export/packages';
|
||||||
|
|
||||||
|
static const String exportCycles = '$baseUrl/export/cycles';
|
||||||
|
|
||||||
static String testResults(int id) {
|
static String testResults(int id) {
|
||||||
return '$baseUrl/TestResults?page=$id';
|
return '$baseUrl/TestResults?page=$id';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import 'package:cssd/config/colors.dart';
|
import 'package:cssd/config/colors.dart';
|
||||||
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
import '../../config/routes.dart';
|
import '../../config/routes.dart';
|
||||||
|
|
||||||
|
import '../../providers/auth.dart';
|
||||||
import '../../providers/connectivity.dart';
|
import '../../providers/connectivity.dart';
|
||||||
import '../../widgets/CycleScreens/Result/banner.dart';
|
import '../../widgets/CycleScreens/Result/banner.dart';
|
||||||
import '../../widgets/CycleScreens/Result/data_box.dart';
|
import '../../widgets/CycleScreens/Result/data_box.dart';
|
||||||
@@ -266,9 +268,37 @@ class CycleResultFloatingButton extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final userData = Provider.of<Auth>(context, listen: false).user;
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: <Widget>[
|
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(
|
InkWell(
|
||||||
customBorder: CircleBorder(),
|
customBorder: CircleBorder(),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter_downloader/flutter_downloader.dart';
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
import '../config/urls.dart';
|
import '../config/urls.dart';
|
||||||
import '../config/user.dart';
|
import '../config/user.dart';
|
||||||
@@ -383,4 +385,19 @@ class CyclesProvider extends ChangeNotifier {
|
|||||||
// };
|
// };
|
||||||
return result!;
|
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