You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
car_provider_app/lib/view_models/items_view_model.dart

81 lines
2.8 KiB
Dart

import 'dart:io';
import 'package:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/repositories/items_repo.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/services/common_services.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/base_view_model.dart';
import 'package:file_picker/file_picker.dart';
import 'package:easy_localization/easy_localization.dart';
class ItemsVM extends BaseVM {
final ItemsRepo itemsRepo;
final CommonAppServices commonServices;
ItemsVM({required this.itemsRepo, required this.commonServices});
//Items
ItemModel? serviceItems;
Future<String?> selectFile(BuildContext context) async {
File? file = await commonServices.pickFile(context, fileType: FileType.image);
if (file != null) {
int sizeInBytes = file.lengthSync();
// double sizeInMb = sizeInBytes / (1024 * 1024);
if (sizeInBytes > 1000) {
Utils.showToast(LocaleKeys.fileLarger.tr());
} else {
return Utils.convertFileToBase64(file);
}
} else {
// User canceled the picker
}
return null;
}
Future<GenericRespModel> createServiceItem(Map map) async {
GenericRespModel response = await itemsRepo.createServiceItems(map);
return response;
}
Future<ItemModel?> getServiceItems(int serviceId, {List<PickerItem>? list}) async {
serviceItems = null;
setOnlyState(ViewState.busy);
serviceItems = await itemsRepo.getServiceItems(serviceId);
if (list != null) {
for (var element in list) {
for (var innerElement in serviceItems!.data!) {
if (element.id == innerElement.id) {
innerElement.isUpdateOrSelected = true;
}
}
// serviceItems!.data!.where(
// (innerElement) => element.id == innerElement.id
// ? innerElement.isUpdateOrSelected = true
// : innerElement.isUpdateOrSelected = true,
// );
}
}
setState(ViewState.idle);
return serviceItems;
}
Future<GenericRespModel> updateServiceItem(Map map) async {
GenericRespModel response = await itemsRepo.updateServiceItem(map);
return response;
}
Future<File?> pickSingleFile(BuildContext context) async {
File? file = await commonServices.pickFile(context, fileType: FileType.custom, allowedExtensions: ['jpg', 'png', 'jpeg']);
if (file == null) return null;
return file;
}
}