Untitled
unknown
plain_text
3 years ago
6.2 kB
12
Indexable
import 'dart:async';
import 'dart:io';
import 'package:ceramic_quotation/app/constant/app_string.dart';
import 'package:ceramic_quotation/app/database/database_service.dart';
import 'package:ceramic_quotation/app/model/product_model/product_model.dart';
import 'package:ceramic_quotation/app/model/product_model/product_request_model.dart';
import 'package:ceramic_quotation/app/modules/product/product_service/product_service.dart';
import 'package:ceramic_quotation/app/utils/app_prefrence.dart';
import 'package:dio/dio.dart';
import 'package:file_picker/file_picker.dart';
import 'package:filesystem_picker/filesystem_picker.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart' hide FormData, MultipartFile;
import 'package:path_provider/path_provider.dart';
import '../../../model/sorting_model/product_sorting_model.dart';
class ProductController extends GetxController {
final TextEditingController mrp = TextEditingController();
final TextEditingController productId = TextEditingController();
final TextEditingController skycode = TextEditingController();
final TextEditingController name = TextEditingController();
final DatabaseService databaseService = DatabaseService();
Dio dio = Dio();
String? dirPath;
File? file;
double progress = 0;
var dataList = [];
var createPath;
List<ProductModel> dataListValue = [];
int? sortColumnIndex;
ProductModel? productModel;
List<ProductData>? productData;
bool isSelected = false;
List<bool>? checkBoxValues;
List<ProductData> itemAddList = [];
bool closeDialog = true;
double totalAmouint = 0;
bool sortAscending = true;
Directory? root = Platform.isMacOS
? Directory("/Users/imac/")
: Directory("/storage/emulated/0/");
List<FileSystemEntity>? imageList;
filterImage() async {
imageList = Directory(AppPreference.getString("folder_path")).listSync(
recursive: true,
);
return imageList;
}
sum(double mrp, double qty, int index) {
var qAmt = mrp * qty;
itemAddList[index].gAmt = qAmt;
update();
return qAmt;
}
double? Disc({
required double mrp,
required double dis_per,
required int index,
}) {
double discountAmt = mrp * (dis_per) / 100;
itemAddList[index].nAmt = (double.parse(mrp.toString()) - discountAmt);
update();
return itemAddList[index].nAmt;
}
startTimer() {
new Timer.periodic(
Duration(seconds: 2),
(Timer timer) {
if (progress == 1) {
timer.cancel();
Get.back();
getProduct();
} else {
progress += 0.2;
}
update();
},
);
}
Future<String> createFolders(String cow) async {
final dir = Directory((Platform.isMacOS
? await getApplicationSupportDirectory()
: Platform.isAndroid
? await getExternalStorageDirectory()
: await getApplicationSupportDirectory())!
.path +
'/$cow');
dirPath = dir.path;
AppPreference.set("folder_path", "${dir.path}/");
if ((await dir.exists())) {
print(AppString.alreadyExist + dir.absolute.path);
return dir.path;
} else {
dir.create();
print(AppString.createFolder + dir.path);
return dir.path;
}
}
folderPicker(BuildContext context) async {
final path = await FilesystemPicker.open(
title: AppString.saveFolder,
context: context,
rootDirectory: root!,
fsType: FilesystemType.folder,
pickText: AppString.pickText,
);
if (path == null) return;
if (path != null) {
try {
dataList = Directory(path).listSync().map((e) => e.path).toList();
for (int i = 0; i < dataList.length; i++) {
var file = await moveFile(
File(dataList[i]),
"${dirPath!}/${File(dataList[i]).path.split("/").last}",
);
}
} catch (e) {}
}
print(path);
}
Future<File> moveFile(File sourceFile, String newPath) async {
try {
return await sourceFile.rename(newPath);
} catch (e) {
final newFile = await sourceFile.copy(newPath);
await sourceFile.delete();
return newFile;
}
}
void ExcelFileUpload() async {
final result = await FilePicker.platform.pickFiles(
allowMultiple: false,
type: FileType.any,
allowedExtensions: [
'xls',
'xlsx',
],
);
if (result == null) return;
if (result != null) {
file = File(result.files.first.path!);
ProductService().getUpload(file!);
}
}
getProduct() async {
productModel = await ProductService().getRequest();
final itemAddList = productModel!.data;
databaseService.savePromotions(itemAddList ?? []);
update();
runFilter("");
return productModel;
}
void sorting<T>(
Comparable<T> Function(Dessert d) getField,
int columnIndex,
bool ascending,
) {
sortColumnIndex = columnIndex;
sortAscending = ascending;
update();
}
@override
onInit() async {
filterImage();
await getProduct();
itemAddList.add(ProductData(
isSelected: true,
isactive: "",
id: "",
companay: "",
category: "",
skycode: "",
name: "",
hsn: "",
description: "",
mrp: "",
v: 0,
));
super.onInit();
}
getDataUpdate(
ProductUpdateRequestModel? productUpdateRequestModel,
context,
) async {
productModel = await ProductService()
.productUpdate(productUpdateRequestModel, context);
update();
getProduct();
return productModel;
}
runFilter(String enteredKeyword) {
productData = enteredKeyword.isEmpty
? productModel!.data
: productModel!.data!
.where((element) => element.skycode!
.toLowerCase()
.contains(enteredKeyword.toLowerCase()))
.toList();
update();
}
selectAllValue(bool value) {
isSelected = value;
productData?.forEach((element) {
if (isSelected) {
element.isSelected = isSelected;
} else {
element.isSelected = isSelected;
}
});
update();
}
}
Editor is loading...