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.
81 lines
2.8 KiB
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;
|
|
}
|
|
}
|