refactor: replace InventoryModel with ProductModel across the application, removing unused inventory model files and updating related repository and UI components

This commit is contained in:
2025-12-03 09:15:44 +03:30
parent ac2d8da95e
commit 8c9517b529
23 changed files with 296 additions and 728 deletions

View File

@@ -10,7 +10,6 @@ import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_
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';
@@ -27,7 +26,7 @@ import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_ar
import 'package:rasadyar_core/core.dart';
abstract class ChickenRemoteDatasource {
Future<List<InventoryModel>?> getInventory({
Future<List<ProductModel>?> getInventory({
required String token,
required String role,
CancelToken? cancelToken,

View File

@@ -10,7 +10,6 @@ import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_
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';
@@ -34,7 +33,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
ChickenRemoteDatasourceImp(this._httpClient);
@override
Future<List<InventoryModel>?> getInventory({
Future<List<ProductModel>?> getInventory({
required String token,
required String role,
CancelToken? cancelToken,
@@ -44,7 +43,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
headers: {'Authorization': 'Bearer $token'},
fromJsonList: (json) => (json)
.map((item) => InventoryModel.fromJson(item as Map<String, dynamic>))
.map((item) => ProductModel.fromJson(item as Map<String, dynamic>))
.toList(),
);
@@ -586,5 +585,4 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
return res.data;
}
}

View File

@@ -6,8 +6,7 @@ import 'package:rasadyar_chicken/data/models/kill_house_module/warehouse_and_dis
import 'package:rasadyar_core/core.dart';
abstract class KillHouseRemoteDataSource {
//region requestKill
//region requestKill
Future<List<KillHouseResponse>?> getKillHouseList({
required String token,
Map<String, dynamic>? queryParameters,
@@ -18,29 +17,29 @@ abstract class KillHouseRemoteDataSource {
Map<String, dynamic>? queryParameters,
});
Future<void> submitKillHouseRequest({required String token, required Map<String, dynamic> data});
Future<void> submitKillHouseRequest({
required String token,
required Map<String, dynamic> data,
});
Future<List<listModel.KillRequestList>?> getListKillRequest({
required String token,
Map<String, dynamic>? queryParameters,
});
Future<void> deleteKillRequest({required String token, required int requestId});
//endregion
//region warehouseAndDistribution
Future<KillHouseSalesInfoDashboard?> getKillHouseSalesInfoDashboard({
required String token,
CancelToken? cancelToken,
Map<String, dynamic>? queryParameters,
});
//endregion
Future<void> deleteKillRequest({
required String token,
required int requestId,
});
//endregion
//region warehouseAndDistribution
Future<KillHouseSalesInfoDashboard?> getKillHouseSalesInfoDashboard({
required String token,
CancelToken? cancelToken,
Map<String, dynamic>? queryParameters,
});
//endregion
}

View File

@@ -51,14 +51,18 @@ Future<void> setupChickenDI() async {
diChicken.registerLazySingleton<DioRemote>(
() => DioRemote(
baseUrl: baseUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
interceptors: diChicken.get<AppInterceptor>(
instanceName: 'chickenInterceptor',
),
),
);
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
diChicken.registerLazySingleton<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote));
diChicken.registerLazySingleton<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImp(dioRemote),
);
diChicken.registerLazySingleton<AuthRepository>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
@@ -68,7 +72,9 @@ Future<void> setupChickenDI() async {
() => ChickenRemoteDatasourceImp(diChicken.get<DioRemote>()),
);
diChicken.registerLazySingleton<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
diChicken.registerLazySingleton<ChickenLocalDataSource>(
() => ChickenLocalDataSourceImp(),
);
diChicken.registerLazySingleton<ChickenRepository>(
() => ChickenRepositoryImp(
@@ -82,7 +88,9 @@ Future<void> setupChickenDI() async {
);
diChicken.registerLazySingleton<PoultryScienceRepository>(
() => PoultryScienceRepositoryImp(diChicken.get<PoultryScienceRemoteDatasource>()),
() => PoultryScienceRepositoryImp(
diChicken.get<PoultryScienceRemoteDatasource>(),
),
);
//region kill house module DI
@@ -90,7 +98,10 @@ Future<void> setupChickenDI() async {
() => KillHouseRemoteDataSourceImpl(diChicken.get<DioRemote>()),
);
diChicken.registerLazySingleton<KillHouseRepository>(
() => KillHouseRepositoryImpl(diChicken.get<KillHouseRemoteDataSource>()),
() => KillHouseRepositoryImpl(
diChicken.get<KillHouseRemoteDataSource>(),
diChicken.get<ChickenRepository>(),
),
);
//endregion
}
@@ -102,8 +113,12 @@ Future<void> newSetupAuthDI(String newUrl) async {
await tokenService.saveBaseUrl(Module.chicken, newUrl);
// Re-register AppInterceptor
if (diChicken.isRegistered<AppInterceptor>(instanceName: 'chickenInterceptor')) {
await diChicken.unregister<AppInterceptor>(instanceName: 'chickenInterceptor');
if (diChicken.isRegistered<AppInterceptor>(
instanceName: 'chickenInterceptor',
)) {
await diChicken.unregister<AppInterceptor>(
instanceName: 'chickenInterceptor',
);
}
diChicken.registerLazySingleton<AppInterceptor>(
() => AppInterceptor(
@@ -126,16 +141,24 @@ Future<void> newSetupAuthDI(String newUrl) async {
diChicken.registerLazySingleton<DioRemote>(
() => DioRemote(
baseUrl: newUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'),
interceptors: diChicken.get<AppInterceptor>(
instanceName: 'chickenInterceptor',
),
),
);
final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init();
// Re-register dependent layers
await reRegister<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote));
await reRegister<AuthRepository>(() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()));
await reRegister<ChickenRemoteDatasource>(() => ChickenRemoteDatasourceImp(dioRemote));
await reRegister<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImp(dioRemote),
);
await reRegister<AuthRepository>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
);
await reRegister<ChickenRemoteDatasource>(
() => ChickenRemoteDatasourceImp(dioRemote),
);
await reRegister<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
await reRegister<ChickenRepository>(
() => ChickenRepositoryImp(
@@ -148,7 +171,9 @@ Future<void> newSetupAuthDI(String newUrl) async {
() => PoultryScienceRemoteDatasourceImp(dioRemote),
);
await reRegister<PoultryScienceRepository>(
() => PoultryScienceRepositoryImp(diChicken.get<PoultryScienceRemoteDatasource>()),
() => PoultryScienceRepositoryImp(
diChicken.get<PoultryScienceRemoteDatasource>(),
),
);
}

View File

@@ -1,58 +0,0 @@
import 'package:freezed_annotation/freezed_annotation.dart';
part 'inventory_model.freezed.dart';
part 'inventory_model.g.dart';
@freezed
abstract class InventoryModel with _$InventoryModel {
const factory InventoryModel({
int? id,
String? key,
String? createDate,
String? modifyDate,
bool? trash,
String? name,
int? provinceGovernmentalCarcassesQuantity,
int? provinceGovernmentalCarcassesWeight,
int? provinceFreeCarcassesQuantity,
int? provinceFreeCarcassesWeight,
int? receiveGovernmentalCarcassesQuantity,
int? receiveGovernmentalCarcassesWeight,
int? receiveFreeCarcassesQuantity,
int? receiveFreeCarcassesWeight,
int? freeBuyingCarcassesQuantity,
int? freeBuyingCarcassesWeight,
int? totalGovernmentalCarcassesQuantity,
int? totalGovernmentalCarcassesWeight,
int? totalFreeBarsCarcassesQuantity,
int? totalFreeBarsCarcassesWeight,
int? totalFreeRemainWeight,
int? totalGovernmentalRemainWeight,
double? weightAverage,
int? totalCarcassesQuantity,
int? totalCarcassesWeight,
int? freezingQuantity,
int? freezingWeight,
int? lossWeight,
int? outProvinceAllocatedQuantity,
int? outProvinceAllocatedWeight,
int? provinceAllocatedQuantity,
int? provinceAllocatedWeight,
int? realAllocatedQuantity,
int? realAllocatedWeight,
int? coldHouseAllocatedWeight,
int? posAllocatedWeight,
int? segmentationWeight,
int? totalRemainQuantity,
int? totalRemainWeight,
int? freePrice,
int? approvedPrice,
bool? approvedPriceStatus,
int? parentProduct,
int? killHouse,
int? guild,
}) = _InventoryModel; // Changed to _InventoryModel
factory InventoryModel.fromJson(Map<String, dynamic> json) =>
_$InventoryModelFromJson(json);
}

File diff suppressed because one or more lines are too long

View File

@@ -1,132 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'inventory_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
_InventoryModel _$InventoryModelFromJson(
Map<String, dynamic> json,
) => _InventoryModel(
id: (json['id'] as num?)?.toInt(),
key: json['key'] as String?,
createDate: json['create_date'] as String?,
modifyDate: json['modify_date'] as String?,
trash: json['trash'] as bool?,
name: json['name'] as String?,
provinceGovernmentalCarcassesQuantity:
(json['province_governmental_carcasses_quantity'] as num?)?.toInt(),
provinceGovernmentalCarcassesWeight:
(json['province_governmental_carcasses_weight'] as num?)?.toInt(),
provinceFreeCarcassesQuantity:
(json['province_free_carcasses_quantity'] as num?)?.toInt(),
provinceFreeCarcassesWeight: (json['province_free_carcasses_weight'] as num?)
?.toInt(),
receiveGovernmentalCarcassesQuantity:
(json['receive_governmental_carcasses_quantity'] as num?)?.toInt(),
receiveGovernmentalCarcassesWeight:
(json['receive_governmental_carcasses_weight'] as num?)?.toInt(),
receiveFreeCarcassesQuantity:
(json['receive_free_carcasses_quantity'] as num?)?.toInt(),
receiveFreeCarcassesWeight: (json['receive_free_carcasses_weight'] as num?)
?.toInt(),
freeBuyingCarcassesQuantity: (json['free_buying_carcasses_quantity'] as num?)
?.toInt(),
freeBuyingCarcassesWeight: (json['free_buying_carcasses_weight'] as num?)
?.toInt(),
totalGovernmentalCarcassesQuantity:
(json['total_governmental_carcasses_quantity'] as num?)?.toInt(),
totalGovernmentalCarcassesWeight:
(json['total_governmental_carcasses_weight'] as num?)?.toInt(),
totalFreeBarsCarcassesQuantity:
(json['total_free_bars_carcasses_quantity'] as num?)?.toInt(),
totalFreeBarsCarcassesWeight:
(json['total_free_bars_carcasses_weight'] as num?)?.toInt(),
totalFreeRemainWeight: (json['total_free_remain_weight'] as num?)?.toInt(),
totalGovernmentalRemainWeight:
(json['total_governmental_remain_weight'] as num?)?.toInt(),
weightAverage: (json['weight_average'] as num?)?.toDouble(),
totalCarcassesQuantity: (json['total_carcasses_quantity'] as num?)?.toInt(),
totalCarcassesWeight: (json['total_carcasses_weight'] as num?)?.toInt(),
freezingQuantity: (json['freezing_quantity'] as num?)?.toInt(),
freezingWeight: (json['freezing_weight'] as num?)?.toInt(),
lossWeight: (json['loss_weight'] as num?)?.toInt(),
outProvinceAllocatedQuantity:
(json['out_province_allocated_quantity'] as num?)?.toInt(),
outProvinceAllocatedWeight: (json['out_province_allocated_weight'] as num?)
?.toInt(),
provinceAllocatedQuantity: (json['province_allocated_quantity'] as num?)
?.toInt(),
provinceAllocatedWeight: (json['province_allocated_weight'] as num?)?.toInt(),
realAllocatedQuantity: (json['real_allocated_quantity'] as num?)?.toInt(),
realAllocatedWeight: (json['real_allocated_weight'] as num?)?.toInt(),
coldHouseAllocatedWeight: (json['cold_house_allocated_weight'] as num?)
?.toInt(),
posAllocatedWeight: (json['pos_allocated_weight'] as num?)?.toInt(),
segmentationWeight: (json['segmentation_weight'] as num?)?.toInt(),
totalRemainQuantity: (json['total_remain_quantity'] as num?)?.toInt(),
totalRemainWeight: (json['total_remain_weight'] as num?)?.toInt(),
freePrice: (json['free_price'] as num?)?.toInt(),
approvedPrice: (json['approved_price'] as num?)?.toInt(),
approvedPriceStatus: json['approved_price_status'] as bool?,
parentProduct: (json['parent_product'] as num?)?.toInt(),
killHouse: (json['kill_house'] as num?)?.toInt(),
guild: (json['guild'] as num?)?.toInt(),
);
Map<String, dynamic> _$InventoryModelToJson(
_InventoryModel instance,
) => <String, dynamic>{
'id': instance.id,
'key': instance.key,
'create_date': instance.createDate,
'modify_date': instance.modifyDate,
'trash': instance.trash,
'name': instance.name,
'province_governmental_carcasses_quantity':
instance.provinceGovernmentalCarcassesQuantity,
'province_governmental_carcasses_weight':
instance.provinceGovernmentalCarcassesWeight,
'province_free_carcasses_quantity': instance.provinceFreeCarcassesQuantity,
'province_free_carcasses_weight': instance.provinceFreeCarcassesWeight,
'receive_governmental_carcasses_quantity':
instance.receiveGovernmentalCarcassesQuantity,
'receive_governmental_carcasses_weight':
instance.receiveGovernmentalCarcassesWeight,
'receive_free_carcasses_quantity': instance.receiveFreeCarcassesQuantity,
'receive_free_carcasses_weight': instance.receiveFreeCarcassesWeight,
'free_buying_carcasses_quantity': instance.freeBuyingCarcassesQuantity,
'free_buying_carcasses_weight': instance.freeBuyingCarcassesWeight,
'total_governmental_carcasses_quantity':
instance.totalGovernmentalCarcassesQuantity,
'total_governmental_carcasses_weight':
instance.totalGovernmentalCarcassesWeight,
'total_free_bars_carcasses_quantity': instance.totalFreeBarsCarcassesQuantity,
'total_free_bars_carcasses_weight': instance.totalFreeBarsCarcassesWeight,
'total_free_remain_weight': instance.totalFreeRemainWeight,
'total_governmental_remain_weight': instance.totalGovernmentalRemainWeight,
'weight_average': instance.weightAverage,
'total_carcasses_quantity': instance.totalCarcassesQuantity,
'total_carcasses_weight': instance.totalCarcassesWeight,
'freezing_quantity': instance.freezingQuantity,
'freezing_weight': instance.freezingWeight,
'loss_weight': instance.lossWeight,
'out_province_allocated_quantity': instance.outProvinceAllocatedQuantity,
'out_province_allocated_weight': instance.outProvinceAllocatedWeight,
'province_allocated_quantity': instance.provinceAllocatedQuantity,
'province_allocated_weight': instance.provinceAllocatedWeight,
'real_allocated_quantity': instance.realAllocatedQuantity,
'real_allocated_weight': instance.realAllocatedWeight,
'cold_house_allocated_weight': instance.coldHouseAllocatedWeight,
'pos_allocated_weight': instance.posAllocatedWeight,
'segmentation_weight': instance.segmentationWeight,
'total_remain_quantity': instance.totalRemainQuantity,
'total_remain_weight': instance.totalRemainWeight,
'free_price': instance.freePrice,
'approved_price': instance.approvedPrice,
'approved_price_status': instance.approvedPriceStatus,
'parent_product': instance.parentProduct,
'kill_house': instance.killHouse,
'guild': instance.guild,
};

View File

@@ -35,6 +35,8 @@ abstract class ProductModel with _$ProductModel {
int? totalGovernmentalCarcassesWeight,
int? totalFreeBarsCarcassesQuantity,
int? totalFreeBarsCarcassesWeight,
int? totalFreeRemainWeight,
int? totalGovernmentalRemainWeight,
double? weightAverage,
int? totalCarcassesQuantity,
int? totalCarcassesWeight,

File diff suppressed because one or more lines are too long

View File

@@ -53,6 +53,9 @@ _ProductModel _$ProductModelFromJson(
(json['total_free_bars_carcasses_quantity'] as num?)?.toInt(),
totalFreeBarsCarcassesWeight:
(json['total_free_bars_carcasses_weight'] as num?)?.toInt(),
totalFreeRemainWeight: (json['total_free_remain_weight'] as num?)?.toInt(),
totalGovernmentalRemainWeight:
(json['total_governmental_remain_weight'] as num?)?.toInt(),
weightAverage: (json['weight_average'] as num?)?.toDouble(),
totalCarcassesQuantity: (json['total_carcasses_quantity'] as num?)?.toInt(),
totalCarcassesWeight: (json['total_carcasses_weight'] as num?)?.toInt(),
@@ -113,6 +116,8 @@ Map<String, dynamic> _$ProductModelToJson(
instance.totalGovernmentalCarcassesWeight,
'total_free_bars_carcasses_quantity': instance.totalFreeBarsCarcassesQuantity,
'total_free_bars_carcasses_weight': instance.totalFreeBarsCarcassesWeight,
'total_free_remain_weight': instance.totalFreeRemainWeight,
'total_governmental_remain_weight': instance.totalGovernmentalRemainWeight,
'weight_average': instance.weightAverage,
'total_carcasses_quantity': instance.totalCarcassesQuantity,
'total_carcasses_weight': instance.totalCarcassesWeight,

View File

@@ -10,7 +10,6 @@ import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_
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';
@@ -32,13 +31,12 @@ abstract class ChickenRepository {
//region Remote
//region Steward
Future<List<InventoryModel>?> getInventory({
Future<List<ProductModel>?> getInventory({
required String token,
required String role,
CancelToken? cancelToken,
});
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({
required String token,
});

View File

@@ -13,7 +13,6 @@ import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_
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';
@@ -39,16 +38,19 @@ class ChickenRepositoryImp implements ChickenRepository {
//region Remote
@override
Future<List<InventoryModel>?> getInventory({
Future<List<ProductModel>?> getInventory({
required String token,
required String role,
CancelToken? cancelToken,
}) async {
var res = await remote.getInventory(token: token, role: role, cancelToken: cancelToken);
var res = await remote.getInventory(
token: token,
role: role,
cancelToken: cancelToken,
);
return res;
}
@override
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({
required String token,
@@ -427,7 +429,9 @@ class ChickenRepositoryImp implements ChickenRepository {
}
@override
Future<StewardRemainWeight?> getStewardRemainWeight({required String token}) async {
Future<StewardRemainWeight?> getStewardRemainWeight({
required String token,
}) async {
return await remote.getStewardRemainWeight(token: token);
}

View File

@@ -5,6 +5,7 @@ import 'package:rasadyar_chicken/data/models/kill_house_module/register_request/
as listModel
show KillRequestList;
import 'package:rasadyar_chicken/data/models/kill_house_module/warehouse_and_distribution/response/kill_house_sales_info_dashboard.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_core/core.dart';
abstract class KillHouseRepository {
@@ -43,5 +44,7 @@ abstract class KillHouseRepository {
Map<String, dynamic>? queryParameters,
});
Future<BroadcastPrice?> getBroadcastPrice({required String token});
//endregion
}

View File

@@ -5,14 +5,17 @@ import 'package:rasadyar_chicken/data/models/kill_house_module/register_request/
import 'package:rasadyar_chicken/data/models/kill_house_module/register_request/response/kill_request_list/kill_request_list.dart'
as listModel;
import 'package:rasadyar_chicken/data/models/kill_house_module/warehouse_and_distribution/response/kill_house_sales_info_dashboard.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_core/core.dart';
import '../chicken/chicken_repository.dart';
import 'kill_house_repository.dart';
class KillHouseRepositoryImpl extends KillHouseRepository {
final KillHouseRemoteDataSource remoteDataSource;
final ChickenRepository chickenRepository;
KillHouseRepositoryImpl(this.remoteDataSource);
KillHouseRepositoryImpl(this.remoteDataSource, this.chickenRepository);
@override
Future<List<KillHouseResponse>?> getKillHouseList({
@@ -86,5 +89,10 @@ class KillHouseRepositoryImpl extends KillHouseRepository {
);
}
@override
Future<BroadcastPrice?> getBroadcastPrice({required String token}) async {
return await chickenRepository.getBroadcastPrice(token: token);
}
//endregion
}

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_chicken/data/repositories/kill_house/kill_house_repository.dart';
import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart';
import 'package:rasadyar_chicken/presentation/routes/pages.dart';
@@ -13,6 +14,7 @@ class KillHouseRootLogic extends GetxController {
var tokenService = Get.find<TokenStorageService>();
late KillHouseRepository killHouseRepository;
Rxn<BroadcastPrice> broadcastPrice = Rxn<BroadcastPrice>();
@override
void onInit() {
@@ -26,8 +28,9 @@ class KillHouseRootLogic extends GetxController {
onGenerateRoute: (settings) {
final page = ChickenPages.pages.firstWhere(
(e) => e.name == settings.name,
orElse: () =>
ChickenPages.pages.firstWhere((e) => e.name == ChickenRoutes.actionKillHouse),
orElse: () => ChickenPages.pages.firstWhere(
(e) => e.name == ChickenRoutes.actionKillHouse,
),
);
return buildRouteFromGetPage(page);
@@ -52,4 +55,16 @@ class KillHouseRootLogic extends GetxController {
void changePage(int i) {
currentPage.value = i;
}
Future<void> getBroadcastPrice() async {
safeCall(
call: () async => await killHouseRepository.getBroadcastPrice(
token: tokenService.accessToken.value!,
),
onSuccess: (result) {
broadcastPrice.value = result;
},
onError: (error, stacktrace) {},
);
}
}

View File

@@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart' hide LinearGradient;
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/widget/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/steward/widely_used/view.dart';
@@ -8,7 +7,8 @@ import 'package:rasadyar_core/core.dart';
import 'logic.dart';
class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionHomeLogic> {
class WarehouseAndDistributionHomePage
extends GetView<WarehouseAndDistributionHomeLogic> {
const WarehouseAndDistributionHomePage({super.key});
@override
@@ -75,7 +75,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
AnimatedRotation(
turns: 180,
duration: Duration(milliseconds: 3000),
child: Icon(CupertinoIcons.chevron_up, size: 18),
child: Icon(
CupertinoIcons.chevron_up,
size: 18,
),
),
],
),
@@ -99,7 +102,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Row(
spacing: 8,
mainAxisAlignment: MainAxisAlignment.end,
children: [Icon(CupertinoIcons.chevron_down, size: 18)],
children: [
Icon(CupertinoIcons.chevron_down, size: 18),
],
),
_todayShipmentWidget(),
_todayShipmentWidget2(),
@@ -127,12 +132,17 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Assets.vec.chicken2Svg.svg(
width: 24.w,
height: 24.h,
colorFilter: ColorFilter.mode(AppColor.blueDark, BlendMode.srcIn),
colorFilter: ColorFilter.mode(
AppColor.blueDark,
BlendMode.srcIn,
),
),
Text(
'اطلاعات مرغ گرم',
textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor),
style: AppFonts.yekan16Bold.copyWith(
color: AppColor.iconColor,
),
),
],
),
@@ -151,7 +161,11 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Row(
children: [
SizedBox(width: 5.w),
Text('اطلاعات پخش', textAlign: TextAlign.right, style: AppFonts.yekan16),
Text(
'اطلاعات پخش',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
SizedBox(height: 8.h),
@@ -164,7 +178,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
title: 'وزن دولتی',
titleBgColor: const Color(0xFFB8E7DC),
valueBgColor: const Color(0xFFE6FAF5),
value: data.value?.totalGovernmentalInputWeight.separatedByComma,
value:
data.value?.totalGovernmentalInputWeight.separatedByComma,
),
),
Expanded(
@@ -178,7 +193,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded(
child: broadcastItem(
title: 'فروش دولتی',
value: data.value?.totalGovernmentalOutputWeight.separatedByComma,
value: data
.value
?.totalGovernmentalOutputWeight
.separatedByComma,
titleBgColor: const Color(0xFFEBC4CE),
valueBgColor: const Color(0xFFEDDCE0),
),
@@ -202,7 +220,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded(
child: broadcastItem(
title: 'مانده دولتی',
value: data.value?.totalGovernmentalRemainWeight.separatedByComma,
value: data
.value
?.totalGovernmentalRemainWeight
.separatedByComma,
titleBgColor: const Color(0xFFB8E7DC),
valueBgColor: const Color(0xFFE6FAF5),
),
@@ -218,7 +239,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded(
child: broadcastItem(
title: 'فروش خارج استان',
value: data.value?.totalStewardFreeSaleBarCarcassesWeight.separatedByComma,
value: data
.value
?.totalStewardFreeSaleBarCarcassesWeight
.separatedByComma,
titleBgColor: const Color(0xFFEBC4CE),
valueBgColor: const Color(0xFFEDDCE0),
),
@@ -242,7 +266,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationIconCard(
title: 'توزیع داخل استان',
isLoading: data.value == null,
description: data.value?.freeSalesWeight.separatedByCommaFa ?? '0',
description:
data.value?.freeSalesWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.truckSvg.path,
iconColor: const Color.fromRGBO(85, 97, 93, 1),
bgDescriptionColor: const Color(0xFFE6FAF5),
@@ -253,7 +278,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationIconCard(
title: 'توزیع خارج استان',
isLoading: data.value == null,
description: data.value?.stewardAllocationsWeight.separatedByCommaFa ?? '0',
description:
data.value?.stewardAllocationsWeight.separatedByCommaFa ??
'0',
iconPath: Assets.vec.truckFastSvg.path,
iconColor: Color(0xFF647379),
bgDescriptionColor: const Color(0xFFEAEFFF),
@@ -302,7 +329,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard(
title: 'خارج استان',
isLoading: data.value == null,
description: data.value?.freeBuyingCarcassesWeight.separatedByCommaFa ?? '0',
description:
data.value?.freeBuyingCarcassesWeight.separatedByCommaFa ??
'0',
iconPath: Assets.vec.cubeSearchSvg.path,
iconColor: Color(0xFF2D5FFF),
bgLabelColor: const Color(0xFFAFCBFF),
@@ -326,7 +355,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard(
title: 'مانده انبار',
isLoading: data.value == null,
description: data.value?.totalRemainWeight.separatedByCommaFa ?? '0',
description:
data.value?.totalRemainWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.cubeSearchSvg.path,
bgDescriptionColor: const Color(0xFFEAEFFF),
bgLabelColor: const Color(0xFFBDD4FF),
@@ -337,7 +367,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard(
title: 'توزیع شده',
isLoading: data.value == null,
description: data.value?.realAllocatedWeight.separatedByCommaFa ?? '0',
description:
data.value?.realAllocatedWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.cubeRotateSvg.path,
iconColor: Color(0xFF5C4D64),
bgLabelColor: Color(0xFFC8B8D1),
@@ -375,7 +406,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Assets.vec.cubeScanSvg.svg(
width: 12.w,
height: 12.h,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
colorFilter: const ColorFilter.mode(
Colors.white,
BlendMode.srcIn,
),
),
),
bgDescriptionColor: Colors.white,
@@ -395,7 +429,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
title: 'درانتظار',
borderColor: const Color(0xFF9758FF),
isLoading: data.value == null,
description: data.value?.totalNotEnteredBars.separatedByCommaFa ?? '0',
description:
data.value?.totalNotEnteredBars.separatedByCommaFa ?? '0',
unit:
'(${data.value?.totalNotEnteredKillHouseRequestsWeight.separatedByCommaFa})\nکیلوگرم',
icon: Container(
@@ -409,7 +444,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Assets.vec.cubeCardFreeSvg.svg(
width: 12.w,
height: 12.h,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
colorFilter: const ColorFilter.mode(
Colors.white,
BlendMode.srcIn,
),
),
),
bgDescriptionColor: Colors.white,
@@ -437,7 +475,12 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard(
title: 'مانده دولتی',
isLoading: data.value == null,
description: data.value?.totalGovernmentalRemainWeight?.separatedByCommaFa ?? '0',
description:
data
.value
?.totalGovernmentalRemainWeight
?.separatedByCommaFa ??
'0',
iconPath: Assets.vec.cubeCardGovermentSvg.path,
iconColor: AppColor.textColor,
bgDescriptionColor: const Color(0xFFF5ECEE),
@@ -448,7 +491,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard(
title: 'مانده آزاد',
isLoading: data.value == null,
description: data.value?.totalFreeRemainWeight.separatedByCommaFa ?? '0',
description:
data.value?.totalFreeRemainWeight.separatedByCommaFa ?? '0',
unit: 'کیلوگرم',
iconPath: Assets.vec.cubeCardFreeSvg.path,
iconColor: AppColor.textColor,
@@ -496,7 +540,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
),
Divider(),
inventoryListItem(title: 'کل فروش', value: model.realAllocatedWeight?.separatedByComma),
inventoryListItem(
title: 'کل فروش',
value: model.realAllocatedWeight?.separatedByComma,
),
Divider(),
inventoryListItem(
title: 'مانده انبار',
@@ -515,14 +562,25 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
children: [
Text(
title,
style: AppFonts.yekan14.copyWith(color: const Color(0xFF353535), height: 1.2),
style: AppFonts.yekan14.copyWith(
color: const Color(0xFF353535),
height: 1.2,
),
),
Spacer(),
value == null
? Center(child: CupertinoActivityIndicator())
: Text(value, style: AppFonts.yekan14.copyWith(color: const Color(0xFF353535))),
: Text(
value,
style: AppFonts.yekan14.copyWith(
color: const Color(0xFF353535),
),
),
SizedBox(width: 20.w),
Text('کیلوگرم', style: AppFonts.yekan10.copyWith(color: const Color(0xFF353535))),
Text(
'کیلوگرم',
style: AppFonts.yekan10.copyWith(color: const Color(0xFF353535)),
),
],
),
);
@@ -546,7 +604,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
height: 65.h,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: borderColor != null ? Border.all(width: 1, color: borderColor) : null,
border: borderColor != null
? Border.all(width: 1, color: borderColor)
: null,
),
clipBehavior: Clip.hardEdge,
child: Row(
@@ -605,12 +665,16 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text(
description,
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive),
style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
),
Text(
unit,
textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive),
style: AppFonts.yekan12.copyWith(
color: AppColor.mediumGreyDarkActive,
),
),
],
),
@@ -656,7 +720,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text(
title,
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive),
style: AppFonts.yekan14.copyWith(
color: AppColor.mediumGreyDarkActive,
),
),
isLoading
@@ -664,12 +730,16 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
: Text(
description,
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive),
style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
),
Text(
unit,
textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive),
style: AppFonts.yekan12.copyWith(
color: AppColor.mediumGreyDarkActive,
),
),
],
),
@@ -704,7 +774,7 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Widget inventoryItem({
required bool isExpanded,
required int index,
required InventoryModel model,
required ProductModel model,
}) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
@@ -729,8 +799,14 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
'کل ورودی به انبار (کیلوگرم)',
model.totalFreeBarsCarcassesWeight.toString(),
),
buildRow('کل فروش (کیلوگرم)', model.realAllocatedWeight.toString()),
buildRow('مانده انبار (کیلوگرم)', model.totalRemainWeight.toString()),
buildRow(
'کل فروش (کیلوگرم)',
model.realAllocatedWeight.toString(),
),
buildRow(
'مانده انبار (کیلوگرم)',
model.totalRemainWeight.toString(),
),
],
),
),
@@ -749,7 +825,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Text(
title,
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
),
),
Flexible(
@@ -757,7 +835,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Text(
value,
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
),
),
],
@@ -783,7 +863,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text(
'اطلاعات ارسالی',
textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan16Bold.copyWith(
color: AppColor.blueNormal,
),
),
const SizedBox(height: 12),
buildRow(
@@ -816,7 +898,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
return Container(
height: height?.h ?? 73.h,
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(color: valueBgColor, borderRadius: BorderRadius.circular(8)),
decoration: BoxDecoration(
color: valueBgColor,
borderRadius: BorderRadius.circular(8),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
@@ -829,7 +914,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text(
title ?? 'بدون تیتر',
textAlign: TextAlign.center,
style: titleStyle ?? AppFonts.yekan12.copyWith(color: const Color(0xFF3E3E3E)),
style:
titleStyle ??
AppFonts.yekan12.copyWith(color: const Color(0xFF3E3E3E)),
),
],
),
@@ -842,7 +929,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Text(
value,
textAlign: TextAlign.right,
style: valueStyle ?? AppFonts.yekan14.copyWith(color: AppColor.textColor),
style:
valueStyle ??
AppFonts.yekan14.copyWith(color: AppColor.textColor),
),
)
: Center(child: CupertinoActivityIndicator()),
@@ -850,7 +939,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text(
unit ?? 'کیلوگرم',
textAlign: TextAlign.center,
style: unitStyle ?? AppFonts.yekan10.copyWith(color: Color(0xFF717171)),
style:
unitStyle ??
AppFonts.yekan10.copyWith(color: Color(0xFF717171)),
),
SizedBox(height: 4.h),
],
@@ -902,19 +993,29 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Row(
children: [
SizedBox(width: 5.w),
Text('تعهدات', textAlign: TextAlign.right, style: AppFonts.yekan16),
Text(
'تعهدات',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
commitmentsItemList(
title: 'تعهد دولتی توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceGovernmentalWeight.separatedByComma,
value: data
.value
?.totalCommitmentSellingInProvinceGovernmentalWeight
.separatedByComma,
labelColor: const Color(0xFFB9E8DC),
bgColor: const Color(0xFFF3F9F8),
),
commitmentsItemList(
title: 'توزیع دولتی داخل استان',
value: data.value?.totalSellingInProvinceGovernmentalWeight.separatedByComma,
value: data
.value
?.totalSellingInProvinceGovernmentalWeight
.separatedByComma,
labelColor: const Color(0xFFC3D4F3),
bgColor: const Color(0xFFECF3FF),
),
@@ -929,19 +1030,26 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
),
commitmentsItemList(
title: 'تعهد آزاد توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceFreeWeight.separatedByComma,
value: data
.value
?.totalCommitmentSellingInProvinceFreeWeight
.separatedByComma,
labelColor: const Color(0xFFC7DADA),
bgColor: const Color(0xFFE5F7F7),
),
commitmentsItemList(
title: 'توزیع آزاد داخل استان',
value: data.value?.totalSellingInProvinceFreeWeight.separatedByComma,
value:
data.value?.totalSellingInProvinceFreeWeight.separatedByComma,
labelColor: const Color(0xFFE0D6ED),
bgColor: const Color(0xFFF5EDFF),
),
commitmentsItemList(
title: 'باقیمانده تعهد آزاد توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceFreeRemainWeight.separatedByComma,
value: data
.value
?.totalCommitmentSellingInProvinceFreeRemainWeight
.separatedByComma,
labelColor: const Color(0xFFEBC5CE),
bgColor: const Color(0xFFFFF1F4),
),
@@ -986,7 +1094,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
: Text(
value,
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.textColor),
style: AppFonts.yekan16.copyWith(
color: AppColor.textColor,
),
),
SizedBox(width: 8.w),

View File

@@ -6,7 +6,6 @@ import 'package:rasadyar_chicken/data/data_source/local/chicken_local.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.dart';
import 'package:rasadyar_chicken/data/models/kill_house_module/warehouse_and_distribution/response/kill_house_sales_info_dashboard.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';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.dart';
@@ -57,7 +56,7 @@ class WarehouseAndDistributionRootLogic extends GetxController {
RxList<ErrorLocationType> errorLocationType = RxList();
RxMap<int, dynamic> inventoryExpandedList = RxMap();
Rxn<InventoryModel> inventoryModel = Rxn<InventoryModel>();
Rxn<ProductModel> inventoryModel = Rxn<ProductModel>();
Rxn<KillHouseSalesInfoDashboard> killHouseSalesInfoDashboard =
Rxn<KillHouseSalesInfoDashboard>();
RxList<IranProvinceCityModel> provinces = <IranProvinceCityModel>[].obs;

View File

@@ -565,7 +565,7 @@ class WarehouseAndDistributionRootPage
);
}
Widget inventoryItem({required bool isExpanded, required int index, required InventoryModel model}) {
Widget inventoryItem({required bool isExpanded, required int index, required ProductModel model}) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,

View File

@@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart' hide LinearGradient;
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/widget/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/steward/widely_used/view.dart';
@@ -704,7 +703,7 @@ class HomePage extends GetView<HomeLogic> {
Widget inventoryItem({
required bool isExpanded,
required int index,
required InventoryModel model,
required ProductModel model,
}) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,

View File

@@ -5,7 +5,6 @@ import 'package:flutter/widgets.dart';
import 'package:rasadyar_chicken/data/data_source/local/chicken_local.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';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.dart';
@@ -53,7 +52,7 @@ class StewardRootLogic extends GetxController {
RxList<ErrorLocationType> errorLocationType = RxList();
RxMap<int, dynamic> inventoryExpandedList = RxMap();
Rxn<InventoryModel> inventoryModel = Rxn<InventoryModel>();
Rxn<ProductModel> inventoryModel = Rxn<ProductModel>();
RxList<IranProvinceCityModel> provinces = <IranProvinceCityModel>[].obs;
// Cancel tokens for API calls
@@ -123,7 +122,7 @@ class StewardRootLogic extends GetxController {
_inventoryCancelToken?.cancel();
_inventoryCancelToken = CancelToken();
await safeCall<List<InventoryModel>?>(
await safeCall<List<ProductModel>?>(
call: () async => await chickenRepository.getInventory(
token: tokenService.accessToken.value!,
cancelToken: _inventoryCancelToken,

View File

@@ -561,7 +561,7 @@ class StewardRootPage extends GetView<StewardRootLogic> {
);
}
Widget inventoryItem({required bool isExpanded, required int index, required InventoryModel model}) {
Widget inventoryItem({required bool isExpanded, required int index, required ProductModel model}) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,

View File

@@ -1,12 +1,10 @@
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/roles_products/roles_products.dart';
import 'package:rasadyar_core/core.dart';
class InventoryWidget extends StatelessWidget {
final InventoryModel? inventoryModel;
final ProductModel? inventoryModel;
const InventoryWidget({super.key, required this.inventoryModel});

View File

@@ -7,7 +7,7 @@ import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/cre
import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.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';
@@ -117,12 +117,12 @@ void main() {
test('should complete inventory management workflow', () async {
// Arrange
final expectedInventory = [
InventoryModel(
ProductModel(
key: 'inventory-1',
name: 'Product 1',
totalCarcassesQuantity: 100,
),
InventoryModel(
ProductModel(
key: 'inventory-2',
name: 'Product 2',
totalCarcassesQuantity: 200,