diff --git a/assets/icons/clock.svg b/assets/icons/clock.svg
index fd5588b..11bff2c 100644
--- a/assets/icons/clock.svg
+++ b/assets/icons/clock.svg
@@ -1,4 +1,6 @@
diff --git a/packages/auth/lib/data/models/local/user_local/user_local_model.dart b/packages/auth/lib/data/models/local/user_local/user_local_model.dart
index 0e18269..beb08f2 100644
--- a/packages/auth/lib/data/models/local/user_local/user_local_model.dart
+++ b/packages/auth/lib/data/models/local/user_local/user_local_model.dart
@@ -1,9 +1,9 @@
-import 'package:rasadyar_auth/auth.dart';
import 'package:rasadyar_core/core.dart';
+import 'package:rasadyar_core/utils/local/local_utils.dart';
part 'user_local_model.g.dart';
-@HiveType(typeId: 0)
+@HiveType(typeId: authUserLocalModelTypeId)
class UserLocalModel extends HiveObject {
@HiveField(0)
String? username;
@@ -45,7 +45,6 @@ class UserLocalModel extends HiveObject {
Module? module,
String? backend,
String? apiKey,
-
}) {
return UserLocalModel(
username: username ?? this.username,
@@ -60,7 +59,7 @@ class UserLocalModel extends HiveObject {
}
}
-@HiveType(typeId: 1)
+@HiveType(typeId: authModuleTypeId)
enum Module {
@HiveField(0)
liveStocks,
diff --git a/packages/chicken/lib/data/datasource/local/chicken_local.dart b/packages/chicken/lib/data/datasource/local/chicken_local.dart
new file mode 100644
index 0000000..e02478a
--- /dev/null
+++ b/packages/chicken/lib/data/datasource/local/chicken_local.dart
@@ -0,0 +1,8 @@
+import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
+
+abstract class ChickenLocalDataSource {
+ Future openBox();
+ Future initWidleyUsed();
+
+ WidelyUsedLocalModel? getAllWidely();
+}
diff --git a/packages/chicken/lib/data/datasource/local/chicken_local_imp.dart b/packages/chicken/lib/data/datasource/local/chicken_local_imp.dart
new file mode 100644
index 0000000..2ccd6ed
--- /dev/null
+++ b/packages/chicken/lib/data/datasource/local/chicken_local_imp.dart
@@ -0,0 +1,59 @@
+import 'package:rasadyar_chicken/chicken.dart';
+import 'package:rasadyar_chicken/data/datasource/local/chicken_local.dart';
+import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
+import 'package:rasadyar_core/core.dart';
+
+class ChickenLocalDataSourceImp implements ChickenLocalDataSource {
+ HiveLocalStorage local =diCore.get();
+ final String boxName = 'Chicken_Widley_Box';
+
+
+ @override
+ Future openBox() async {
+ await local.openBox(boxName);
+ }
+
+ @override
+ Future initWidleyUsed() async {
+ List tmpList = [
+ WidelyUsedLocalItem(
+ index: 0,
+ pathId: 0,
+ title: 'خرید داخل استان',
+ color: AppColor.greenLightActive.toARGB32(),
+ iconColor: AppColor.greenNormal.toARGB32(),
+ iconPath: Assets.vec.cubeSearchSvg.path,
+ path: ChickenRoutes.buysInProvince,
+ ),
+ WidelyUsedLocalItem(
+ index: 1,
+ pathId: 1,
+ title: 'فروش داخل استان',
+ color: AppColor.blueLightActive.toARGB32(),
+ iconColor: AppColor.blueNormal.toARGB32(),
+ iconPath: Assets.vec.cubeSvg.path,
+ path: ChickenRoutes.salesInProvince,
+ ),
+
+ WidelyUsedLocalItem(
+ index: 2,
+ title: 'قطعهبندی',
+ color: AppColor.blueLightActive.toARGB32(),
+ iconColor: AppColor.blueNormal.toARGB32(),
+ iconPath: Assets.vec.cubeRotateSvg.path,
+ path: ChickenRoutes.buysInProvince,
+ ),
+ ];
+ await local.add(
+ boxName: boxName,
+ value: WidelyUsedLocalModel(hasInit: true, items: tmpList),
+ );
+ }
+
+ @override
+ WidelyUsedLocalModel? getAllWidely() {
+ var res = local.readBox(boxName: boxName);
+ fLog(res.toString());
+ return res;
+ }
+}
diff --git a/packages/chicken/lib/data/datasource/remote/chicken_remote.dart b/packages/chicken/lib/data/datasource/remote/chicken_remote.dart
new file mode 100644
index 0000000..e6f04b8
--- /dev/null
+++ b/packages/chicken/lib/data/datasource/remote/chicken_remote.dart
@@ -0,0 +1,155 @@
+import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
+import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
+import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
+import 'package:rasadyar_chicken/data/models/request/submit_steward_allocation/submit_steward_allocation.dart';
+import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
+import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart';
+import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_bar/dashboard_kill_house_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart';
+import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.dart';
+import 'package:rasadyar_chicken/data/models/response/imported_loads_model/imported_loads_model.dart';
+import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
+import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
+import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
+import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
+import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
+import 'package:rasadyar_chicken/data/models/response/segmentation_model/segmentation_model.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_sale_bar/steward_free_sale_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart';
+import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart'
+ hide ProductModel;
+import 'package:rasadyar_core/core.dart';
+
+abstract class ChickenRemoteDatasource {
+ Future?> getInventory({required String token, CancelToken? cancelToken});
+
+ Future getKillHouseDistributionInfo({required String token});
+
+ Future getGeneralBarInformation({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future?> getWaitingArrivals({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future setSateForArrivals({required String token, required Map request});
+
+ Future?> getImportedLoadsModel({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future?> getAllocatedMade({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future confirmAllocation({required String token, required Map allocation});
+
+ Future denyAllocation({required String token, required String allocationToken});
+
+ Future confirmAllAllocation({
+ required String token,
+ required List allocationTokens,
+ });
+
+ Future?> getRolesProducts({required String token});
+
+ Future?> getGuilds({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future getProfile({required String token});
+
+ Future postSubmitStewardAllocation({
+ required String token,
+ required SubmitStewardAllocation request,
+ });
+
+ Future deleteStewardAllocation({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future updateStewardAllocation({required String token, required ConformAllocation request});
+
+ Future getStewardDashboard({
+ required String token,
+ required String stratDate,
+ required String endDate,
+ });
+
+ Future getDashboardKillHouseFreeBar({
+ required String token,
+ required String stratDate,
+ required String endDate,
+ });
+
+ Future?> getStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future createStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ required CreateStewardFreeBar body,
+ });
+
+ Future deleteStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ required String stewardFreeBarKey,
+ });
+
+ Future?> getOutProvinceCarcassesBuyer({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future createOutProvinceCarcassesBuyer({
+ required String token,
+ required OutProvinceCarcassesBuyer body,
+ });
+
+ Future?> getProvince({CancelToken? cancelToken});
+
+ Future?> getCity({required String provinceName});
+
+ Future?> getStewardFreeSaleBar({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future createOutProvinceStewardFreeBar({
+ required String token,
+ required StewardFreeSaleBarRequest body,
+ });
+
+ Future updateOutProvinceStewardFreeBar({
+ required String token,
+ required StewardFreeSaleBarRequest body,
+ });
+
+ Future getUserProfile({required String token});
+
+ Future updateUserProfile({required String token, required UserProfile userProfile});
+
+ Future updatePassword({required String token, required ChangePasswordRequestModel model});
+
+ Future?> getSegmentation({
+ required String token,
+ Map? queryParameters,
+ });
+
+ Future createSegmentation({required String token, required SegmentationModel model});
+
+ Future editSegmentation({required String token, required SegmentationModel model});
+
+ Future deleteSegmentation({required String token, required String key});
+}
diff --git a/packages/chicken/lib/data/datasource/remote/chicken_remote_imp.dart b/packages/chicken/lib/data/datasource/remote/chicken_remote_imp.dart
new file mode 100644
index 0000000..5d72f8a
--- /dev/null
+++ b/packages/chicken/lib/data/datasource/remote/chicken_remote_imp.dart
@@ -0,0 +1,484 @@
+import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote.dart';
+import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
+import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
+import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
+import 'package:rasadyar_chicken/data/models/request/submit_steward_allocation/submit_steward_allocation.dart';
+import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
+import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart';
+import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_bar/dashboard_kill_house_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart';
+import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.dart';
+import 'package:rasadyar_chicken/data/models/response/imported_loads_model/imported_loads_model.dart';
+import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
+import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
+import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
+import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
+import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
+import 'package:rasadyar_chicken/data/models/response/segmentation_model/segmentation_model.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart';
+import 'package:rasadyar_chicken/data/models/response/steward_free_sale_bar/steward_free_sale_bar.dart';
+import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart';
+import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart'
+ hide ProductModel;
+import 'package:rasadyar_core/core.dart';
+
+class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
+ final DioRemote _httpClient;
+
+ ChickenRemoteDatasourceImp(this._httpClient);
+
+ @override
+ Future?> getInventory({
+ required String token,
+ CancelToken? cancelToken,
+ }) async {
+ eLog(_httpClient.baseUrl);
+ var res = await _httpClient.get(
+ '/roles-products/?role=Steward',
+ headers: {'Authorization': 'Bearer $token'},
+
+ fromJsonList: (json) =>
+ (json).map((item) => InventoryModel.fromJson(item as Map)).toList(),
+ );
+
+ return res.data;
+ }
+
+ @override
+ Future getKillHouseDistributionInfo({required String token}) async {
+ var res = await _httpClient.get(
+ '/kill-house-distribution-info/?role=Steward',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: KillHouseDistributionInfo.fromJson,
+ );
+
+ return res.data;
+ }
+
+ @override
+ Future getGeneralBarInformation({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/bars_for_kill_house_dashboard/?role=Steward',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: BarInformation.fromJson,
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getWaitingArrivals({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward-allocation/',
+ headers: {'Authorization': 'Bearer $token'},
+ queryParameters: queryParameters,
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => WaitingArrivalModel.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future setSateForArrivals({
+ required String token,
+ required Map request,
+ }) async {
+ await _httpClient.put(
+ '/steward-allocation/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: request,
+ );
+ }
+
+ @override
+ Future?> getImportedLoadsModel({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward-allocation/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (data) => ImportedLoadsModel.fromJson(data as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getAllocatedMade({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward-allocation/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => AllocatedMadeModel.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future confirmAllocation({
+ required String token,
+ required Map allocation,
+ }) async {
+ var res = await _httpClient.put(
+ '/steward-allocation/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: allocation,
+ );
+ }
+
+ @override
+ Future denyAllocation({required String token, required String allocationToken}) async {
+ await _httpClient.delete(
+ '/steward-allocation/0/?steward_allocation_key=$allocationToken',
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future confirmAllAllocation({
+ required String token,
+ required List allocationTokens,
+ }) async {
+ await _httpClient.put(
+ '/steward-allocation/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: {'steward_allocation_list': allocationTokens},
+ );
+ }
+
+ @override
+ Future?> getRolesProducts({required String token}) async {
+ var res = await _httpClient.get(
+ '/roles-products/?role=Steward',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJsonList: (json) =>
+ json.map((item) => ProductModel.fromJson(item as Map)).toList(),
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getGuilds({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/guilds/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJsonList: (json) =>
+ json.map((item) => GuildModel.fromJson(item as Map)).toList(),
+ );
+ return res.data;
+ }
+
+ @override
+ Future getProfile({required String token}) async {
+ var res = await _httpClient.get(
+ '/guilds/0/?profile',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: GuildProfile.fromJson,
+ );
+ return res.data;
+ }
+
+ @override
+ Future postSubmitStewardAllocation({
+ required String token,
+ required SubmitStewardAllocation request,
+ }) async {
+ await _httpClient.post(
+ '/steward-allocation/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: request.toJson(),
+ );
+ }
+
+ @override
+ Future deleteStewardAllocation({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ await _httpClient.delete(
+ '/steward-allocation/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ queryParameters: queryParameters,
+ );
+ }
+
+ @override
+ Future updateStewardAllocation({
+ required String token,
+ required ConformAllocation request,
+ }) async {
+ await _httpClient.put(
+ '/steward-allocation/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ queryParameters: request.toJson(),
+ );
+ }
+
+ @override
+ Future getStewardDashboard({
+ required String token,
+ required String stratDate,
+ required String endDate,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward_free_bar_dashboard/?date1=$stratDate&date2=$endDate&search=filter',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: StewardFreeBarDashboard.fromJson,
+ );
+ return res.data;
+ }
+
+ @override
+ Future getDashboardKillHouseFreeBar({
+ required String token,
+ required String stratDate,
+ required String endDate,
+ }) async {
+ var res = await _httpClient.get(
+ '/dashboard_kill_house_free_bar/?date1=$stratDate&date2=$endDate&search=filter',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: DashboardKillHouseFreeBar.fromJson,
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward_free_bar/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => StewardFreeBar.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getCity({required String provinceName}) async {
+ var res = await _httpClient.get(
+ '/iran_city/',
+ queryParameters: {'name': provinceName},
+ fromJsonList: (json) =>
+ json.map((item) => IranProvinceCityModel.fromJson(item as Map)).toList(),
+ );
+ return res.data;
+ }
+
+ @override
+ Future?> getProvince({CancelToken? cancelToken}) async {
+ var res = await _httpClient.get(
+ '/iran_province/',
+ fromJsonList: (json) =>
+ json.map((item) => IranProvinceCityModel.fromJson(item as Map)).toList(),
+ );
+ return res.data;
+ }
+
+ @override
+ Future createStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ required CreateStewardFreeBar body,
+ }) async {
+ var res = await _httpClient.post(
+ '/steward_free_bar/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: body.toJson(),
+ );
+ }
+
+ @override
+ Future deleteStewardPurchasesOutSideOfTheProvince({
+ required String token,
+ required String stewardFreeBarKey,
+ }) async {
+ await _httpClient.delete(
+ '/steward_free_bar/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ queryParameters: {'key': stewardFreeBarKey},
+ );
+ }
+
+ @override
+ Future?> getOutProvinceCarcassesBuyer({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/out-province-carcasses-buyer/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => OutProvinceCarcassesBuyer.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future createOutProvinceCarcassesBuyer({
+ required String token,
+ required OutProvinceCarcassesBuyer body,
+ }) async {
+ await _httpClient.post(
+ '/out-province-carcasses-buyer/',
+ data: body.toJson()..removeWhere((key, value) => value == null),
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future?> getStewardFreeSaleBar({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/steward_free_sale_bar/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => StewardFreeSaleBar.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future createOutProvinceStewardFreeBar({
+ required String token,
+ required StewardFreeSaleBarRequest body,
+ }) async {
+ await _httpClient.post(
+ '/steward_free_sale_bar/',
+ data: body.toJson()..removeWhere((key, value) => value == null),
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future updateOutProvinceStewardFreeBar({
+ required String token,
+ required StewardFreeSaleBarRequest body,
+ }) async {
+ await _httpClient.put(
+ '/steward_free_sale_bar/0/',
+ data: body.toJson()
+ ..removeWhere((key, value) => value == null)
+ ..addAll({'carcassWeight': body.weightOfCarcasses, 'carcassCount': body.numberOfCarcasses}),
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future getUserProfile({required String token}) async {
+ var res = await _httpClient.get(
+ '/system_user_profile/?self-profile',
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => UserProfile.fromJson(json),
+ );
+
+ return res.data;
+ }
+
+ @override
+ Future updateUserProfile({required String token, required UserProfile userProfile}) async {
+ await _httpClient.put(
+ '/system_user_profile/?self-profile/0/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: userProfile.toJson()..removeWhere((key, value) => value == null),
+ );
+ }
+
+ @override
+ Future updatePassword({
+ required String token,
+ required ChangePasswordRequestModel model,
+ }) async {
+ await _httpClient.post(
+ '/api/change_password/',
+ headers: {'Authorization': 'Bearer $token'},
+ data: model.toJson()..removeWhere((key, value) => value == null),
+ );
+ }
+
+ @override
+ Future?> getSegmentation({
+ required String token,
+ Map? queryParameters,
+ }) async {
+ var res = await _httpClient.get(
+ '/app-segmentation/',
+ queryParameters: queryParameters,
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => PaginationModel.fromJson(
+ json,
+ (json) => SegmentationModel.fromJson(json as Map),
+ ),
+ );
+ return res.data;
+ }
+
+ @override
+ Future createSegmentation({required String token, required SegmentationModel model}) async {
+ await _httpClient.post(
+ '/app-segmentation/',
+ data: model.toJson()..removeWhere((key, value) => value == null),
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future editSegmentation({required String token, required SegmentationModel model}) async {
+ await _httpClient.put(
+ '/app-segmentation/0/',
+ data: model.toJson()..removeWhere((key, value) => value == null),
+ headers: {'Authorization': 'Bearer $token'},
+ );
+ }
+
+ @override
+ Future deleteSegmentation({
+ required String token,
+ required String key,
+ }) async {
+ var res = await _httpClient.delete(
+ '/app-segmentation/0/',
+ queryParameters: {'key': key},
+ headers: {'Authorization': 'Bearer $token'},
+ fromJson: (json) => SegmentationModel.fromJson(json),
+ );
+
+ return res.data;
+ }
+}
diff --git a/packages/chicken/lib/data/di/chicken_di.dart b/packages/chicken/lib/data/di/chicken_di.dart
index ed05229..1c5aece 100644
--- a/packages/chicken/lib/data/di/chicken_di.dart
+++ b/packages/chicken/lib/data/di/chicken_di.dart
@@ -1,11 +1,17 @@
import 'package:rasadyar_auth/data/services/token_storage_service.dart';
+import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
+import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart';
import 'package:rasadyar_chicken/data/repositories/chicken_repository_imp.dart';
+import 'package:rasadyar_chicken/hive_registrar.g.dart';
import 'package:rasadyar_core/core.dart';
GetIt diChicken = GetIt.instance;
Future setupChickenDI() async {
var tokenService = Get.find();
+ Hive.registerAdapters();
+ diChicken.registerLazySingleton(() => ChickenLocalDataSourceImp());
+ diChicken.get().openBox();
diChicken.registerLazySingleton(
() => AppInterceptor(
@@ -21,6 +27,7 @@ Future setupChickenDI() async {
);
tokenService.getBaseUrl();
+
diChicken.registerLazySingleton(() {
return DioRemote(
baseUrl: tokenService.baseurl.value,
@@ -29,8 +36,17 @@ Future setupChickenDI() async {
}, instanceName: 'chickenDioRemote');
final dioRemote = diChicken.get(instanceName: 'chickenDioRemote');
+
await dioRemote.init();
- diChicken.registerLazySingleton(() => ChickenRepositoryImpl(dioRemote));
+
+ diChicken.registerLazySingleton(() => ChickenRemoteDatasourceImp(dioRemote));
+
+ diChicken.registerLazySingleton(
+ () => ChickenRepositoryImp(
+ local: diChicken.get(),
+ remote: diChicken.get(),
+ ),
+ );
diChicken.registerSingleton(ImagePicker());
}
diff --git a/packages/chicken/lib/data/models/local/widely_used_local_model.dart b/packages/chicken/lib/data/models/local/widely_used_local_model.dart
new file mode 100644
index 0000000..02d89c7
--- /dev/null
+++ b/packages/chicken/lib/data/models/local/widely_used_local_model.dart
@@ -0,0 +1,73 @@
+import 'package:rasadyar_core/core.dart';
+import 'package:rasadyar_core/utils/utils.dart';
+
+part 'widely_used_local_model.g.dart';
+
+@HiveType(typeId: chickenWidelyUsedLocalModelTypeId)
+class WidelyUsedLocalModel extends HiveObject {
+ @HiveField(0)
+ bool? hasInit;
+
+ @HiveField(1)
+ List? items;
+
+ WidelyUsedLocalModel({this.hasInit, this.items});
+
+ WidelyUsedLocalModel copyWith({bool? hasInit, List? items}) {
+ return WidelyUsedLocalModel(hasInit: hasInit ?? this.hasInit, items: items ?? this.items);
+ }
+}
+
+@HiveType(typeId: chickenWidelyUsedLocalItemTypeId)
+class WidelyUsedLocalItem extends HiveObject {
+ @HiveField(0)
+ String? title;
+
+ @HiveField(1)
+ String? iconPath;
+
+ @HiveField(2)
+ int? iconColor;
+
+ @HiveField(3)
+ int? color;
+
+ @HiveField(4)
+ String? path;
+
+ @HiveField(5)
+ int? pathId;
+
+ @HiveField(6)
+ int? index;
+
+ WidelyUsedLocalItem({
+ this.title,
+ this.iconPath,
+ this.iconColor,
+ this.color,
+ this.path,
+ this.pathId,
+ this.index,
+ });
+
+ WidelyUsedLocalItem copyWith({
+ String? title,
+ String? iconPath,
+ int? iconColor,
+ int? color,
+ int? pathId,
+ int? index,
+ String? path,
+ }) {
+ return WidelyUsedLocalItem(
+ title: title ?? this.title,
+ iconPath: iconPath ?? this.iconPath,
+ iconColor: iconColor ?? this.iconColor,
+ color: color ?? this.color,
+ path: path ?? this.path,
+ pathId: pathId ?? this.pathId,
+ index: index ?? this.index,
+ );
+ }
+}
diff --git a/packages/chicken/lib/data/repositories/chicken_repository.dart b/packages/chicken/lib/data/repositories/chicken_repository.dart
index fe9d23d..1d0aee9 100644
--- a/packages/chicken/lib/data/repositories/chicken_repository.dart
+++ b/packages/chicken/lib/data/repositories/chicken_repository.dart
@@ -1,3 +1,4 @@
+import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
@@ -25,6 +26,7 @@ import 'package:rasadyar_core/core.dart';
import '../models/request/create_steward_free_bar/create_steward_free_bar.dart';
abstract class ChickenRepository {
+ //region Remote
Future?> getInventory({required String token, CancelToken? cancelToken});
Future getKillHouseDistributionInfo({required String token});
@@ -153,4 +155,12 @@ abstract class ChickenRepository {
Future editSegmentation({required String token, required SegmentationModel model});
Future deleteSegmentation({required String token, required String key});
+
+ //endregion
+
+ //region local
+ Future initWidleyUsed();
+
+ WidelyUsedLocalModel? getAllWidely();
+ //endregion
}
diff --git a/packages/chicken/lib/data/repositories/chicken_repository_imp.dart b/packages/chicken/lib/data/repositories/chicken_repository_imp.dart
index a0c19c9..6eaf786 100644
--- a/packages/chicken/lib/data/repositories/chicken_repository_imp.dart
+++ b/packages/chicken/lib/data/repositories/chicken_repository_imp.dart
@@ -1,3 +1,6 @@
+import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
+import 'package:rasadyar_chicken/data/datasource/remote/chicken_remote_imp.dart';
+import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
@@ -25,37 +28,26 @@ import 'package:rasadyar_core/core.dart';
import 'chicken_repository.dart';
-class ChickenRepositoryImpl implements ChickenRepository {
- final DioRemote _httpClient;
+class ChickenRepositoryImp implements ChickenRepository {
+ final ChickenRemoteDatasourceImp remote;
+ final ChickenLocalDataSourceImp local;
- ChickenRepositoryImpl(this._httpClient);
+ ChickenRepositoryImp({required this.remote, required this.local});
+ //region Remote
@override
Future?> getInventory({
required String token,
CancelToken? cancelToken,
}) async {
- eLog(_httpClient.baseUrl);
- var res = await _httpClient.get(
- '/roles-products/?role=Steward',
- headers: {'Authorization': 'Bearer $token'},
-
- fromJsonList: (json) =>
- (json).map((item) => InventoryModel.fromJson(item as Map)).toList(),
- );
-
- return res.data;
+ var res = await remote.getInventory(token: token, cancelToken: cancelToken);
+ return res;
}
@override
Future getKillHouseDistributionInfo({required String token}) async {
- var res = await _httpClient.get(
- '/kill-house-distribution-info/?role=Steward',
- headers: {'Authorization': 'Bearer $token'},
- fromJson: KillHouseDistributionInfo.fromJson,
- );
-
- return res.data;
+ var res = await remote.getKillHouseDistributionInfo(token: token);
+ return res;
}
@override
@@ -63,13 +55,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/bars_for_kill_house_dashboard/?role=Steward',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: BarInformation.fromJson,
- );
- return res.data;
+ var res = await remote.getGeneralBarInformation(token: token, queryParameters: queryParameters);
+ return res;
}
@override
@@ -77,16 +64,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/steward-allocation/',
- headers: {'Authorization': 'Bearer $token'},
- queryParameters: queryParameters,
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => WaitingArrivalModel.fromJson(json as Map),
- ),
- );
- return res.data;
+ var res = await remote.getWaitingArrivals(token: token, queryParameters: queryParameters);
+ return res;
}
@override
@@ -94,11 +73,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required Map request,
}) async {
- await _httpClient.put(
- '/steward-allocation/0/',
- headers: {'Authorization': 'Bearer $token'},
- data: request,
- );
+ await remote.setSateForArrivals(token: token, request: request);
}
@override
@@ -106,16 +81,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/steward-allocation/',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (data) => ImportedLoadsModel.fromJson(data as Map),
- ),
- );
- return res.data;
+ var res = await remote.getImportedLoadsModel(token: token, queryParameters: queryParameters);
+ return res;
}
@override
@@ -123,16 +90,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/steward-allocation/',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => AllocatedMadeModel.fromJson(json as Map),
- ),
- );
- return res.data;
+ var res = await remote.getAllocatedMade(token: token, queryParameters: queryParameters);
+ return res;
}
@override
@@ -140,19 +99,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required Map allocation,
}) async {
- var res = await _httpClient.put(
- '/steward-allocation/0/',
- headers: {'Authorization': 'Bearer $token'},
- data: allocation,
- );
+ await remote.confirmAllocation(token: token, allocation: allocation);
}
@override
Future denyAllocation({required String token, required String allocationToken}) async {
- await _httpClient.delete(
- '/steward-allocation/0/?steward_allocation_key=$allocationToken',
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.denyAllocation(token: token, allocationToken: allocationToken);
}
@override
@@ -160,22 +112,13 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required List allocationTokens,
}) async {
- await _httpClient.put(
- '/steward-allocation/0/',
- headers: {'Authorization': 'Bearer $token'},
- data: {'steward_allocation_list': allocationTokens},
- );
+ await remote.confirmAllAllocation(token: token, allocationTokens: allocationTokens);
}
@override
Future?> getRolesProducts({required String token}) async {
- var res = await _httpClient.get(
- '/roles-products/?role=Steward',
- headers: {'Authorization': 'Bearer $token'},
- fromJsonList: (json) =>
- json.map((item) => ProductModel.fromJson(item as Map)).toList(),
- );
- return res.data;
+ var res = await remote.getRolesProducts(token: token);
+ return res;
}
@override
@@ -183,24 +126,14 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/guilds/',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJsonList: (json) =>
- json.map((item) => GuildModel.fromJson(item as Map)).toList(),
- );
- return res.data;
+ var res = await remote.getGuilds(token: token, queryParameters: queryParameters);
+ return res;
}
@override
Future getProfile({required String token}) async {
- var res = await _httpClient.get(
- '/guilds/0/?profile',
- headers: {'Authorization': 'Bearer $token'},
- fromJson: GuildProfile.fromJson,
- );
- return res.data;
+ var res = await remote.getProfile(token: token);
+ return res;
}
@override
@@ -208,11 +141,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required SubmitStewardAllocation request,
}) async {
- await _httpClient.post(
- '/steward-allocation/',
- headers: {'Authorization': 'Bearer $token'},
- data: request.toJson(),
- );
+ await remote.postSubmitStewardAllocation(token: token, request: request);
}
@override
@@ -220,11 +149,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- await _httpClient.delete(
- '/steward-allocation/0/',
- headers: {'Authorization': 'Bearer $token'},
- queryParameters: queryParameters,
- );
+ await remote.deleteStewardAllocation(token: token, queryParameters: queryParameters);
}
@override
@@ -232,11 +157,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required ConformAllocation request,
}) async {
- await _httpClient.put(
- '/steward-allocation/0/',
- headers: {'Authorization': 'Bearer $token'},
- queryParameters: request.toJson(),
- );
+ await remote.updateStewardAllocation(token: token, request: request);
}
@override
@@ -245,12 +166,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String stratDate,
required String endDate,
}) async {
- var res = await _httpClient.get(
- '/steward_free_bar_dashboard/?date1=$stratDate&date2=$endDate&search=filter',
- headers: {'Authorization': 'Bearer $token'},
- fromJson: StewardFreeBarDashboard.fromJson,
+ var res = await remote.getStewardDashboard(
+ token: token,
+ stratDate: stratDate,
+ endDate: endDate,
);
- return res.data;
+ return res;
}
@override
@@ -259,12 +180,12 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String stratDate,
required String endDate,
}) async {
- var res = await _httpClient.get(
- '/dashboard_kill_house_free_bar/?date1=$stratDate&date2=$endDate&search=filter',
- headers: {'Authorization': 'Bearer $token'},
- fromJson: DashboardKillHouseFreeBar.fromJson,
+ var res = await remote.getDashboardKillHouseFreeBar(
+ token: token,
+ stratDate: stratDate,
+ endDate: endDate,
);
- return res.data;
+ return res;
}
@override
@@ -272,37 +193,23 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/steward_free_bar/',
+ var res = await remote.getStewardPurchasesOutSideOfTheProvince(
+ token: token,
queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => StewardFreeBar.fromJson(json as Map),
- ),
);
- return res.data;
+ return res;
}
@override
Future?> getCity({required String provinceName}) async {
- var res = await _httpClient.get(
- '/iran_city/',
- queryParameters: {'name': provinceName},
- fromJsonList: (json) =>
- json.map((item) => IranProvinceCityModel.fromJson(item as Map)).toList(),
- );
- return res.data;
+ var res = await remote.getCity(provinceName: provinceName);
+ return res;
}
@override
Future?> getProvince({CancelToken? cancelToken}) async {
- var res = await _httpClient.get(
- '/iran_province/',
- fromJsonList: (json) =>
- json.map((item) => IranProvinceCityModel.fromJson(item as Map)).toList(),
- );
- return res.data;
+ var res = await remote.getProvince(cancelToken: cancelToken);
+ return res;
}
@override
@@ -310,11 +217,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required CreateStewardFreeBar body,
}) async {
- var res = await _httpClient.post(
- '/steward_free_bar/',
- headers: {'Authorization': 'Bearer $token'},
- data: body.toJson(),
- );
+ await remote.createStewardPurchasesOutSideOfTheProvince(token: token, body: body);
}
@override
@@ -322,10 +225,9 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required String stewardFreeBarKey,
}) async {
- await _httpClient.delete(
- '/steward_free_bar/0/',
- headers: {'Authorization': 'Bearer $token'},
- queryParameters: {'key': stewardFreeBarKey},
+ await remote.deleteStewardPurchasesOutSideOfTheProvince(
+ token: token,
+ stewardFreeBarKey: stewardFreeBarKey,
);
}
@@ -334,16 +236,11 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/out-province-carcasses-buyer/',
+ var res = await remote.getOutProvinceCarcassesBuyer(
+ token: token,
queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => OutProvinceCarcassesBuyer.fromJson(json as Map),
- ),
);
- return res.data;
+ return res;
}
@override
@@ -351,11 +248,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required OutProvinceCarcassesBuyer body,
}) async {
- await _httpClient.post(
- '/out-province-carcasses-buyer/',
- data: body.toJson()..removeWhere((key, value) => value == null),
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.createOutProvinceCarcassesBuyer(token: token, body: body);
}
@override
@@ -363,16 +256,8 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/steward_free_sale_bar/',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => StewardFreeSaleBar.fromJson(json as Map),
- ),
- );
- return res.data;
+ var res = await remote.getStewardFreeSaleBar(token: token, queryParameters: queryParameters);
+ return res;
}
@override
@@ -380,11 +265,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required StewardFreeSaleBarRequest body,
}) async {
- await _httpClient.post(
- '/steward_free_sale_bar/',
- data: body.toJson()..removeWhere((key, value) => value == null),
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.createOutProvinceStewardFreeBar(token: token, body: body);
}
@override
@@ -392,33 +273,18 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required StewardFreeSaleBarRequest body,
}) async {
- await _httpClient.put(
- '/steward_free_sale_bar/0/',
- data: body.toJson()
- ..removeWhere((key, value) => value == null)
- ..addAll({'carcassWeight': body.weightOfCarcasses, 'carcassCount': body.numberOfCarcasses}),
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.updateOutProvinceStewardFreeBar(token: token, body: body);
}
@override
Future getUserProfile({required String token}) async {
- var res = await _httpClient.get(
- '/system_user_profile/?self-profile',
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => UserProfile.fromJson(json),
- );
-
- return res.data;
+ var res = await remote.getUserProfile(token: token);
+ return res;
}
@override
Future updateUserProfile({required String token, required UserProfile userProfile}) async {
- await _httpClient.put(
- '/system_user_profile/?self-profile/0/',
- headers: {'Authorization': 'Bearer $token'},
- data: userProfile.toJson()..removeWhere((key, value) => value == null),
- );
+ await remote.updateUserProfile(token: token, userProfile: userProfile);
}
@override
@@ -426,11 +292,7 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
required ChangePasswordRequestModel model,
}) async {
- await _httpClient.post(
- '/api/change_password/',
- headers: {'Authorization': 'Bearer $token'},
- data: model.toJson()..removeWhere((key, value) => value == null),
- );
+ await remote.updatePassword(token: token, model: model);
}
@override
@@ -438,45 +300,36 @@ class ChickenRepositoryImpl implements ChickenRepository {
required String token,
Map? queryParameters,
}) async {
- var res = await _httpClient.get(
- '/app-segmentation/',
- queryParameters: queryParameters,
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => PaginationModel.fromJson(
- json,
- (json) => SegmentationModel.fromJson(json as Map),
- ),
- );
- return res.data;
+ var res = await remote.getSegmentation(token: token, queryParameters: queryParameters);
+ return res;
}
@override
Future createSegmentation({required String token, required SegmentationModel model}) async {
- await _httpClient.post(
- '/app-segmentation/',
- data: model.toJson()..removeWhere((key, value) => value == null),
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.createSegmentation(token: token, model: model);
}
@override
Future editSegmentation({required String token, required SegmentationModel model}) async {
- await _httpClient.put(
- '/app-segmentation/0/',
- data: model.toJson()..removeWhere((key, value) => value == null),
- headers: {'Authorization': 'Bearer $token'},
- );
+ await remote.editSegmentation(token: token, model: model);
}
@override
- Future deleteSegmentation({required String token, required String key}) async {
- var res = await _httpClient.delete(
- '/app-segmentation/0/',
- queryParameters: {'key': key},
- headers: {'Authorization': 'Bearer $token'},
- fromJson: (json) => SegmentationModel.fromJson(json),
- );
-
- return res.data;
+ Future deleteSegmentation({
+ required String token,
+ required String key,
+ }) async {
+ var res = await remote.deleteSegmentation(token: token, key: key);
+ return res;
}
+
+ //endregion
+
+ //region local
+ @override
+ WidelyUsedLocalModel? getAllWidely() => local.getAllWidely();
+
+ @override
+ Future initWidleyUsed() async => local.initWidleyUsed();
+ //endregion
}
diff --git a/packages/chicken/lib/presentation/pages/buy_in_province/logic.dart b/packages/chicken/lib/presentation/pages/buy_in_province/logic.dart
index 9fdb789..93cf531 100644
--- a/packages/chicken/lib/presentation/pages/buy_in_province/logic.dart
+++ b/packages/chicken/lib/presentation/pages/buy_in_province/logic.dart
@@ -68,7 +68,7 @@ class BuyInProvinceLogic extends GetxController {
if (isWaiting) {
buyWaitingLogic.getWaitingArrivals();
} else {
- buyAllLogic.getImportedEntries();
+ buyAllLogic.getAllArrivals();
}
}
diff --git a/packages/chicken/lib/presentation/pages/buy_in_province_all/logic.dart b/packages/chicken/lib/presentation/pages/buy_in_province_all/logic.dart
index eb08e10..b9dfcef 100644
--- a/packages/chicken/lib/presentation/pages/buy_in_province_all/logic.dart
+++ b/packages/chicken/lib/presentation/pages/buy_in_province_all/logic.dart
@@ -1,25 +1,32 @@
import 'package:rasadyar_auth/data/utils/safe_call.dart';
-import 'package:rasadyar_chicken/data/models/response/imported_loads_model/imported_loads_model.dart';
+import 'package:rasadyar_chicken/data/models/request/steward_allocation/steward_allocation_request.dart';
+import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class BuyInProvinceAllLogic extends GetxController {
RxList isExpandedList = [].obs;
- Rx fromDateFilter = Jalali.now().obs;
- Rx toDateFilter = Jalali.now().obs;
+ Rxn fromDateFilter = Rxn();
+ Rxn toDateFilter = Rxn();
RxnString searchedValue = RxnString();
+ RxMap isLoadingConfirmMap = RxMap();
+ final RxBool isLoadingMoreAllocationsMade = false.obs;
+ RxInt currentPage = 1.obs;
RootLogic rootLogic = Get.find();
- Rx>> importedLoads =
- Resource>.loading().obs;
-
-
+ Rx>> allProduct =
+ Resource>.loading().obs;
+ @override
+ void onInit() {
+ super.onInit();
+ getAllArrivals();
+ }
@override
void onReady() {
- debounce(searchedValue, (callback) => getImportedEntries(), time: Duration(milliseconds: 2000));
+ debounce(searchedValue, (callback) => getAllArrivals(), time: Duration(milliseconds: 2000));
super.onReady();
}
@@ -29,27 +36,111 @@ class BuyInProvinceAllLogic extends GetxController {
super.onClose();
}
- Future getImportedEntries() async {
+ Future getAllArrivals([bool isLoadingMore = false]) async {
+ if (isLoadingMore) {
+ isLoadingMoreAllocationsMade.value = true;
+ } else {
+ allProduct.value = Resource>.loading();
+ }
+
+ if (searchedValue.value != null &&
+ searchedValue.value!.trim().isNotEmpty &&
+ currentPage.value > 1) {
+ currentPage.value = 1;
+ }
+
safeCall(
- call: () async => await rootLogic.chickenRepository.getImportedLoadsModel(
+ call: () async => await rootLogic.chickenRepository.getWaitingArrivals(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
- queryParams: {'type': 'entered'},
- role: 'Steward',
+ queryParams: {'type': 'all'},
+ pageSize: 20,
+ page: currentPage.value,
search: 'filter',
- page: 1,
- pageSize: 10,
- value: searchedValue.value
+ role: 'Steward',
+ value: searchedValue.value,
+ fromDate: fromDateFilter.value?.toDateTime(),
+ toDate: toDateFilter.value?.toDateTime(),
),
),
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 200));
if ((res?.count ?? 0) == 0) {
- importedLoads.value = Resource>.empty();
+ allProduct.value = Resource>.empty();
} else {
- importedLoads.value = Resource>.success(res!.results!);
+ allProduct.value = Resource>.success(
+ PaginationModel(
+ count: res?.count ?? 0,
+ next: res?.next,
+ previous: res?.previous,
+ results: [...(allProduct.value.data?.results ?? []), ...(res?.results ?? [])],
+ ),
+ );
}
},
);
}
+
+ Future acceptEntries(WaitingArrivalModel model) async {
+ var request = StewardAllocationRequest(
+ allocationKey: model.key,
+ checkAllocation: true,
+ state: 'accepted',
+ receiverRealNumberOfCarcasses: model.realNumberOfCarcasses ?? 0,
+ receiverRealWeightOfCarcasses: model.realWeightOfCarcasses?.toInt() ?? 0,
+ registrationCode: model.registrationCode ?? 0,
+ weightLossOfCarcasses: model.weightLossOfCarcasses?.toInt() ?? 0,
+ ).toJson();
+ request.removeWhere((key, value) => value == null);
+
+ safeCall(
+ call: () async => await rootLogic.chickenRepository.setSateForArrivals(
+ token: rootLogic.tokenService.accessToken.value!,
+ request: request,
+ ),
+ onError: (error, stackTrace) {
+ eLog(error);
+ },
+ onSuccess: (result) {
+ getAllArrivals();
+ rootLogic.getInventory();
+ },
+ );
+ }
+
+ Future denyEntries(WaitingArrivalModel model) async {
+ var request = StewardAllocationRequest(
+ allocationKey: model.key,
+ checkAllocation: true,
+ state: 'rejected',
+ ).toJson();
+ request.removeWhere((key, value) => value == null);
+
+ safeCall(
+ call: () async => await rootLogic.chickenRepository.setSateForArrivals(
+ token: rootLogic.tokenService.accessToken.value!,
+ request: request,
+ ),
+ onError: (error, stackTrace) {
+ eLog(error);
+ },
+ onSuccess: (result) {
+ getAllArrivals();
+ rootLogic.getInventory();
+ },
+ );
+ }
+
+ String getVecPathItem(String? item) {
+ switch (item) {
+ case 'pending':
+ return Assets.vec.timerSvg.path;
+ case 'accepted':
+ return Assets.vec.checkSquareSvg.path;
+ case 'rejected':
+ return Assets.vec.closeCircleSvg.path;
+ default:
+ return Assets.vec.timerSvg.path;
+ }
+ }
}
diff --git a/packages/chicken/lib/presentation/pages/buy_in_province_all/view.dart b/packages/chicken/lib/presentation/pages/buy_in_province_all/view.dart
index fab0ebc..e6929b2 100644
--- a/packages/chicken/lib/presentation/pages/buy_in_province_all/view.dart
+++ b/packages/chicken/lib/presentation/pages/buy_in_province_all/view.dart
@@ -1,4 +1,8 @@
import 'package:flutter/material.dart';
+import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
+import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';
+import 'package:rasadyar_chicken/presentation/widget/list_item/list_item.dart';
+import 'package:rasadyar_chicken/presentation/widget/list_row_item.dart';
import 'package:rasadyar_core/core.dart';
import 'logic.dart';
@@ -8,6 +12,249 @@ class BuyInProvinceAllPage extends GetView {
@override
Widget build(BuildContext context) {
- return Container(color: Colors.blue);
+ return Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 8),
+ child: ObxValue((data) {
+ return RPaginatedListView(
+ listType: ListType.separated,
+ resource: data.value,
+ hasMore: data.value.data?.next != null,
+ padding: EdgeInsets.fromLTRB(8, 8, 8, 80),
+ itemBuilder: (context, index) {
+ var item = data.value.data!.results![index];
+ return ObxValue((val) {
+ return ListItem2(
+ selected: val.contains(index),
+ onTap: () => controller.isExpandedList.toggle(index),
+ index: index,
+ child: itemListWidget(item),
+ secondChild: itemListExpandedWidget(item),
+ labelColor: getLabelColor(item.receiverState),
+ labelIcon: controller.getVecPathItem(item.receiverState),
+ );
+ }, controller.isExpandedList);
+ },
+ itemCount: data.value.data?.results?.length ?? 0,
+ separatorBuilder: (context, index) => SizedBox(height: 8.h),
+ onLoadMore: () async => controller.getAllArrivals(true),
+ onRefresh: () async {
+ controller.currentPage.value = 1;
+ await controller.getAllArrivals();
+ },
+ );
+ }, controller.allProduct),
+ );
+ }
+
+ Row itemListWidget(WaitingArrivalModel item) {
+ return Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ SizedBox(width: 20),
+ Expanded(
+ flex: 2,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ spacing: 3,
+ children: [
+ Text(
+ item.toSteward?.user?.fullname ?? 'N/A',
+ textAlign: TextAlign.start,
+ style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal),
+ ),
+ Text(
+ item.date?.formattedJalaliDate ?? 'N/A',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(color: AppColor.bgDark),
+ ),
+ ],
+ ),
+ ),
+ Expanded(
+ flex: 3,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ spacing: 6,
+ children: [
+ Visibility(
+ visible: item.product?.name?.contains('مرغ گرم') ?? false,
+ child: Assets.vec.hotChickenSvg.svg(
+ width: 24,
+ height: 24,
+ colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
+ ),
+ ),
+ Text(
+ '${item.weightOfCarcasses?.separatedByComma}kg',
+ textAlign: TextAlign.left,
+ style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal),
+ ),
+ ],
+ ),
+
+ SizedBox(height: 2),
+ ],
+ ),
+ ),
+ Expanded(
+ flex: 1,
+ child: Assets.vec.scanSvg.svg(
+ width: 32.w,
+ height: 32.h,
+ colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
+ ),
+ ),
+ ],
+ );
+ }
+
+ Container itemListExpandedWidget(WaitingArrivalModel item) {
+ return Container(
+ padding: EdgeInsets.symmetric(horizontal: 8),
+ decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)),
+ child: Column(
+ spacing: 8,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Text(
+ item.steward?.user?.fullname ?? 'N/A',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan16.copyWith(color: AppColor.greenDark),
+ ),
+ Spacer(),
+ Text(
+ item.receiverState?.faItem,
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan10.copyWith(color: AppColor.darkGreyDark),
+ ),
+ SizedBox(width: 7),
+ SvgGenImage.vec(
+ controller.getVecPathItem(item.receiverState),
+ ).svg(width: 16.w, height: 16.h,
+ colorFilter: ColorFilter.mode(AppColor.darkGreyDark, BlendMode.srcIn)
+ ),
+
+ ],
+ ),
+ Container(
+ height: 32,
+ padding: EdgeInsets.symmetric(horizontal: 8),
+ decoration: ShapeDecoration(
+ color: AppColor.blueLight,
+ shape: RoundedRectangleBorder(
+ side: BorderSide(width: 1, color: AppColor.blueLightHover),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ ),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ spacing: 3,
+ children: [
+ Text(
+ item.date?.toJalali.formatter.wN ?? 'N/A',
+ style: AppFonts.yekan14.copyWith(color: AppColor.textColor),
+ ),
+
+ Text(
+ '${item.date?.toJalali.formatter.d} ${item.date?.toJalali.formatter.mN ?? 'N/A'}',
+ style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
+ ),
+ ],
+ ),
+
+ Text(
+ '${item.date?.toJalali.formatter.y}',
+ style: AppFonts.yekan20.copyWith(color: AppColor.textColor),
+ ),
+
+ Text(
+ '${item.date?.toJalali.formatter.tHH}:${item.date?.toJalali.formatter.tMM ?? 'N/A'}',
+ style: AppFonts.yekan14.copyWith(color: AppColor.textColor),
+ ),
+ ],
+ ),
+ ),
+
+ buildRow(
+ title: 'نام و نام خانوادگی فروشنده',
+ value: item.steward?.user?.fullname ?? 'N/A',
+ ),
+ buildRow(
+ title: 'تلفن فروشنده',
+ value: item.steward?.user?.mobile ?? 'N/A',
+ valueStyle: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
+ ),
+
+ buildRow(title: 'محصول', value: item.product?.name ?? 'N/A'),
+ buildRow(
+ title: 'وزن خریداری شده',
+ value: '${item.weightOfCarcasses?.separatedByComma} کیلوگرم',
+ ),
+ buildRow(title: 'قیمت کل', value: '${item.totalAmount?.separatedByComma} ریال'),
+ Visibility(
+ visible: item.receiverState == 'pending',
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ spacing: 16.w,
+ children: [
+ ObxValue((data) {
+ return RElevated(
+ text: 'تایید',
+ width: 150.w,
+ height: 40.h,
+ isLoading: data[item.key!] ?? false,
+ onPressed: () async {
+ data[item.key!] = !(data[item.key!] ?? false);
+ await controller.acceptEntries(item);
+ data.remove(item.key!);
+ },
+ textStyle: AppFonts.yekan20.copyWith(color: Colors.white),
+ backgroundColor: AppColor.greenNormal,
+ );
+ }, controller.isLoadingConfirmMap),
+ ROutlinedElevated(
+ text: 'رد',
+ textStyle: AppFonts.yekan20.copyWith(color: AppColor.redNormal),
+ width: 150.w,
+ height: 40.h,
+ onPressed: () {
+ buildWarningDialog(
+ title: 'اخطار',
+ middleText: 'آیا از رد شدن این مورد اطمینان دارید؟',
+ onConfirm: () => controller.denyEntries(item),
+ onRefresh: () => controller.getAllArrivals(),
+ );
+ },
+ borderColor: AppColor.redNormal,
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ Color getLabelColor(String? item) {
+ switch (item) {
+ case 'pending':
+ return AppColor.greenLightHover;
+ case 'accepted':
+ return AppColor.blueLight;
+ case 'rejected':
+ return AppColor.redLightHover;
+ default:
+ return AppColor.blueLight;
+ }
}
}
diff --git a/packages/chicken/lib/presentation/pages/buy_in_province_waiting/logic.dart b/packages/chicken/lib/presentation/pages/buy_in_province_waiting/logic.dart
index 2de5ede..c2efb00 100644
--- a/packages/chicken/lib/presentation/pages/buy_in_province_waiting/logic.dart
+++ b/packages/chicken/lib/presentation/pages/buy_in_province_waiting/logic.dart
@@ -18,9 +18,12 @@ class BuyInProvinceWaitingLogic extends GetxController {
RxInt currentPage = 1.obs;
final RxBool isLoadingMoreAllocationsMade = false.obs;
RootLogic rootLogic = Get.find();
+
Rx>> waitingProduct =
Resource>.loading().obs;
+
+
@override
void onInit() {
super.onInit();
@@ -35,6 +38,7 @@ class BuyInProvinceWaitingLogic extends GetxController {
void onReady() {
super.onReady();
getWaitingArrivals();
+
}
@override
@@ -92,6 +96,8 @@ class BuyInProvinceWaitingLogic extends GetxController {
);
}
+
+
Future acceptEntries(WaitingArrivalModel model) async {
var request = StewardAllocationRequest(
allocationKey: model.key,
diff --git a/packages/chicken/lib/presentation/pages/home/logic.dart b/packages/chicken/lib/presentation/pages/home/logic.dart
index 16a3954..5c0e315 100644
--- a/packages/chicken/lib/presentation/pages/home/logic.dart
+++ b/packages/chicken/lib/presentation/pages/home/logic.dart
@@ -29,7 +29,6 @@ class HomeLogic extends GetxController {
queryParameters: buildQueryParams(fromDate: DateTime.now(), toDate: DateTime.now()),
),
onSuccess: (result) {
- iLog(result);
if (result != null) {
totalWeightTodayBars.value = result.totalBarsWeight?.toInt();
}
diff --git a/packages/chicken/lib/presentation/pages/home/view.dart b/packages/chicken/lib/presentation/pages/home/view.dart
index bd9f07a..4fba960 100644
--- a/packages/chicken/lib/presentation/pages/home/view.dart
+++ b/packages/chicken/lib/presentation/pages/home/view.dart
@@ -2,8 +2,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
-import 'package:rasadyar_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
+import 'package:rasadyar_chicken/presentation/widget/widely_used/view.dart';
import 'package:rasadyar_core/core.dart';
import 'logic.dart';
@@ -153,76 +153,7 @@ class HomePage extends GetView {
),
),
- Padding(
- padding: EdgeInsetsGeometry.all(6),
- child: Row(
- children: [Text('پر کاربرد ها', textAlign: TextAlign.right, style: AppFonts.yekan16)],
- ),
- ),
-
- SizedBox(
- height: 70,
- child: ListView(
- scrollDirection: Axis.horizontal,
- padding: EdgeInsets.symmetric(horizontal: 12),
- physics: BouncingScrollPhysics(),
- children: [
- widelyUsed(
- title: 'خرید خارج استان',
- iconPath: Assets.vec.truckFastSvg.path,
- onTap: () async {
- controller.rootLogic.currentPage.value = 0;
- controller.rootLogic.currentPage.refresh();
- await Future.delayed(Duration(milliseconds: 100));
- Get.toNamed(ChickenRoutes.buysOutOfProvince, id: 0);
- },
- ),
- SizedBox(width: 15),
- widelyUsed(
- title: 'خرید داخل استان',
- iconPath: Assets.vec.cubeSvg.path,
- onTap: () async {
- controller.rootLogic.currentPage.value = 0;
- controller.rootLogic.currentPage.refresh();
- await Future.delayed(Duration(milliseconds: 100));
- Get.toNamed(ChickenRoutes.buysInProvince, id: 0);
- },
- ),
- SizedBox(width: 15),
- widelyUsed(
- title: 'فروش خارج استان',
- iconPath: Assets.vec.truckFastSvg.path,
- onTap: () async {
- controller.rootLogic.currentPage.value = 1;
- controller.rootLogic.currentPage.refresh();
- await Future.delayed(Duration(milliseconds: 100));
- Get.toNamed(ChickenRoutes.salesOutOfProvince, id: 1);
- },
- ),
- SizedBox(width: 15),
- widelyUsed(
- title: 'فروش داخل استان',
- iconPath: Assets.vec.cubeSvg.path,
- onTap: () async{
- controller.rootLogic.currentPage.value = 1;
- controller.rootLogic.currentPage.refresh();
- await Future.delayed(Duration(milliseconds: 100));
- Get.toNamed(ChickenRoutes.salesInProvince, id: 1);
- },
- ),
- SizedBox(width: 15),
- widelyUsed(
- title: 'ثبت قطعه بندی',
- iconPath: Assets.vec.convertCubeSvg.path,
- onTap: () {
- // Get.toNamed(ChickenRoutes.salesWithOutProvince);
- },
- ),
- SizedBox(width: 15),
- addWidelyUsed(onTap: () {}),
- ],
- ),
- ),
+ WidelyUsedWidget(),
],
),
);
@@ -566,73 +497,6 @@ class HomePage extends GetView {
);
}
- Widget widelyUsed({
- required String title,
- required String iconPath,
- required VoidCallback onTap,
- }) {
- return GestureDetector(
- onTap: onTap,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.start,
- spacing: 4,
- children: [
- Container(
- width: 48,
- height: 48,
- padding: EdgeInsets.all(4),
- decoration: ShapeDecoration(
- color: const Color(0xFFBECDFF),
- shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
- ),
- child: Container(
- width: 40,
- height: 40,
- decoration: ShapeDecoration(
- color: AppColor.blueNormal,
- shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
- ),
- child: SvgGenImage.vec(iconPath).svg(
- width: 24,
- height: 24,
- colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
- fit: BoxFit.cover,
- ),
- ),
- ),
- Text(title, style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)),
- ],
- ),
- );
- }
-
- Widget addWidelyUsed({required VoidCallback onTap}) {
- return Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.start,
- spacing: 4,
- children: [
- Container(
- width: 48,
- height: 48,
- padding: EdgeInsets.all(4),
- decoration: ShapeDecoration(
- color: const Color(0xFFD9F7F0),
- shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
- ),
- child: Assets.vec.messageAddSvg.svg(
- width: 40,
- height: 40,
- colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn),
- fit: BoxFit.cover,
- ),
- ),
- Text('افزودن', style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover)),
- ],
- );
- }
-
Widget inventoryItem({
required bool isExpanded,
required int index,
diff --git a/packages/chicken/lib/presentation/pages/root/logic.dart b/packages/chicken/lib/presentation/pages/root/logic.dart
index 733b962..0f3c0cd 100644
--- a/packages/chicken/lib/presentation/pages/root/logic.dart
+++ b/packages/chicken/lib/presentation/pages/root/logic.dart
@@ -3,7 +3,9 @@ import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:rasadyar_auth/data/services/token_storage_service.dart';
import 'package:rasadyar_auth/data/utils/safe_call.dart';
+import 'package:rasadyar_chicken/data/datasource/local/chicken_local_imp.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.dart';
+import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
@@ -26,10 +28,12 @@ class RootLogic extends GetxController {
final defaultRoutes = {0: ChickenRoutes.buy, 1: ChickenRoutes.sale};
RxList rolesProductsModel = RxList();
+ Rxn widelyUsedList = Rxn();
late DioRemote dioRemote;
var tokenService = Get.find();
late ChickenRepository chickenRepository;
+ late ChickenLocalDataSourceImp localDatasource;
RxList errorLocationType = RxList();
RxMap inventoryExpandedList = RxMap();
@@ -43,8 +47,10 @@ class RootLogic extends GetxController {
@override
void onInit() {
super.onInit();
+ localDatasource = diChicken.get();
+ chickenRepository = diChicken.get();
- chickenRepository = diChicken.get();
+ widelyUsedList.value = localDatasource.getAllWidely();
//getKillHouseDistributionInfo();
}
@@ -62,6 +68,12 @@ class RootLogic extends GetxController {
if (rolesProductsModel.isEmpty) {
getRolesProducts();
}
+
+ if (widelyUsedList.value?.hasInit != true) {
+ localDatasource.initWidleyUsed().then(
+ (value) => localDatasource.getAllWidely(),
+ );
+ }
}
@override
diff --git a/packages/core/lib/infrastructure/local/hive_local_storage.dart b/packages/core/lib/infrastructure/local/hive_local_storage.dart
index 53b7b55..d164dbf 100644
--- a/packages/core/lib/infrastructure/local/hive_local_storage.dart
+++ b/packages/core/lib/infrastructure/local/hive_local_storage.dart
@@ -1,8 +1,6 @@
import 'package:flutter/foundation.dart';
import 'package:rasadyar_core/core.dart';
-import 'i_local_storage.dart';
-
class HiveLocalStorage implements ILocalStorage {
HiveLocalStorage() {
Hive.initFlutter();
@@ -43,6 +41,17 @@ class HiveLocalStorage implements ILocalStorage {
}
}
+ @override
+ T? readBox({required String boxName}) {
+ try {
+ Box? box = getBox(boxName);
+ return box?.values as T?;
+ } on Exception catch (e) {
+ eLog(e);
+ return null;
+ }
+ }
+
@override
Future add({required String boxName, required dynamic value}) async {
Box? box = getBox(boxName);
@@ -50,10 +59,7 @@ class HiveLocalStorage implements ILocalStorage {
}
@override
- Future addAll({
- required String boxName,
- required Iterable values,
- }) async {
+ Future addAll({required String boxName, required Iterable values}) async {
Box? box = getBox(boxName);
await box?.addAll(values);
}
@@ -76,20 +82,13 @@ class HiveLocalStorage implements ILocalStorage {
Future close(String boxName) async => await _boxes[boxName]?.close();
@override
- Future deleteValue({
- required String boxName,
- required String key,
- }) async {
+ Future deleteValue({required String boxName, required String key}) async {
Box? box = getBox(boxName);
await box?.delete(key);
}
@override
- Future save({
- required String boxName,
- required String key,
- required value,
- }) async {
+ Future save({required String boxName, required String key, required value}) async {
Box? box = getBox(boxName);
await box?.put(key, value);
}
@@ -101,11 +100,7 @@ class HiveLocalStorage implements ILocalStorage {
}
@override
- Future saveAt({
- required String boxName,
- required int index,
- required value,
- }) async {
+ Future saveAt({required String boxName, required int index, required value}) async {
Box? box = getBox(boxName);
await box?.putAt(index, value);
}
diff --git a/packages/core/lib/infrastructure/local/i_local_storage.dart b/packages/core/lib/infrastructure/local/i_local_storage.dart
index 7cb4f49..98e6c5b 100644
--- a/packages/core/lib/infrastructure/local/i_local_storage.dart
+++ b/packages/core/lib/infrastructure/local/i_local_storage.dart
@@ -15,6 +15,8 @@ abstract class ILocalStorage {
T? read({required String boxName, required String key});
+ T? readBox({required String boxName});
+
Future deleteValue({required String boxName, required String key});
Future add({required String boxName, required E value});
diff --git a/packages/core/lib/utils/local/local_utils.dart b/packages/core/lib/utils/local/local_utils.dart
new file mode 100644
index 0000000..04f3e5d
--- /dev/null
+++ b/packages/core/lib/utils/local/local_utils.dart
@@ -0,0 +1,7 @@
+//Auth
+const int authUserLocalModelTypeId = 0;
+const int authModuleTypeId = 1;
+
+//chicken
+const int chickenWidelyUsedLocalModelTypeId = 2;
+const int chickenWidelyUsedLocalItemTypeId = 3;
\ No newline at end of file
diff --git a/packages/core/lib/utils/utils.dart b/packages/core/lib/utils/utils.dart
index 8701a53..064ac55 100644
--- a/packages/core/lib/utils/utils.dart
+++ b/packages/core/lib/utils/utils.dart
@@ -12,3 +12,6 @@ export 'map_utils.dart';
export 'route_utils.dart';
export 'separator_input_formatter.dart';
+
+export 'local/local_utils.dart';
+