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/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.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/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/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/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/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'; import 'package:rasadyar_core/core.dart';
abstract class ChickenRemoteDatasource { abstract class ChickenRemoteDatasource {
Future<List<InventoryModel>?> getInventory({ Future<List<ProductModel>?> getInventory({
required String token, required String token,
required String role, required String role,
CancelToken? cancelToken, 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/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.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/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/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/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/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
@@ -34,7 +33,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
ChickenRemoteDatasourceImp(this._httpClient); ChickenRemoteDatasourceImp(this._httpClient);
@override @override
Future<List<InventoryModel>?> getInventory({ Future<List<ProductModel>?> getInventory({
required String token, required String token,
required String role, required String role,
CancelToken? cancelToken, CancelToken? cancelToken,
@@ -44,7 +43,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
headers: {'Authorization': 'Bearer $token'}, headers: {'Authorization': 'Bearer $token'},
fromJsonList: (json) => (json) fromJsonList: (json) => (json)
.map((item) => InventoryModel.fromJson(item as Map<String, dynamic>)) .map((item) => ProductModel.fromJson(item as Map<String, dynamic>))
.toList(), .toList(),
); );
@@ -586,5 +585,4 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource {
return res.data; 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'; import 'package:rasadyar_core/core.dart';
abstract class KillHouseRemoteDataSource { abstract class KillHouseRemoteDataSource {
//region requestKill
//region requestKill
Future<List<KillHouseResponse>?> getKillHouseList({ Future<List<KillHouseResponse>?> getKillHouseList({
required String token, required String token,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
@@ -18,29 +17,29 @@ abstract class KillHouseRemoteDataSource {
Map<String, dynamic>? queryParameters, 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({ Future<List<listModel.KillRequestList>?> getListKillRequest({
required String token, required String token,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
}); });
Future<void> deleteKillRequest({required String token, required int requestId}); Future<void> deleteKillRequest({
//endregion required String token,
required int requestId,
//region warehouseAndDistribution });
//endregion
Future<KillHouseSalesInfoDashboard?> getKillHouseSalesInfoDashboard({
required String token,
CancelToken? cancelToken,
Map<String, dynamic>? queryParameters,
});
//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>( diChicken.registerLazySingleton<DioRemote>(
() => DioRemote( () => DioRemote(
baseUrl: baseUrl, baseUrl: baseUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'), interceptors: diChicken.get<AppInterceptor>(
instanceName: 'chickenInterceptor',
),
), ),
); );
final dioRemote = diChicken.get<DioRemote>(); final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init(); await dioRemote.init();
diChicken.registerLazySingleton<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote)); diChicken.registerLazySingleton<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImp(dioRemote),
);
diChicken.registerLazySingleton<AuthRepository>( diChicken.registerLazySingleton<AuthRepository>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()), () => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
@@ -68,7 +72,9 @@ Future<void> setupChickenDI() async {
() => ChickenRemoteDatasourceImp(diChicken.get<DioRemote>()), () => ChickenRemoteDatasourceImp(diChicken.get<DioRemote>()),
); );
diChicken.registerLazySingleton<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp()); diChicken.registerLazySingleton<ChickenLocalDataSource>(
() => ChickenLocalDataSourceImp(),
);
diChicken.registerLazySingleton<ChickenRepository>( diChicken.registerLazySingleton<ChickenRepository>(
() => ChickenRepositoryImp( () => ChickenRepositoryImp(
@@ -82,7 +88,9 @@ Future<void> setupChickenDI() async {
); );
diChicken.registerLazySingleton<PoultryScienceRepository>( diChicken.registerLazySingleton<PoultryScienceRepository>(
() => PoultryScienceRepositoryImp(diChicken.get<PoultryScienceRemoteDatasource>()), () => PoultryScienceRepositoryImp(
diChicken.get<PoultryScienceRemoteDatasource>(),
),
); );
//region kill house module DI //region kill house module DI
@@ -90,7 +98,10 @@ Future<void> setupChickenDI() async {
() => KillHouseRemoteDataSourceImpl(diChicken.get<DioRemote>()), () => KillHouseRemoteDataSourceImpl(diChicken.get<DioRemote>()),
); );
diChicken.registerLazySingleton<KillHouseRepository>( diChicken.registerLazySingleton<KillHouseRepository>(
() => KillHouseRepositoryImpl(diChicken.get<KillHouseRemoteDataSource>()), () => KillHouseRepositoryImpl(
diChicken.get<KillHouseRemoteDataSource>(),
diChicken.get<ChickenRepository>(),
),
); );
//endregion //endregion
} }
@@ -102,8 +113,12 @@ Future<void> newSetupAuthDI(String newUrl) async {
await tokenService.saveBaseUrl(Module.chicken, newUrl); await tokenService.saveBaseUrl(Module.chicken, newUrl);
// Re-register AppInterceptor // Re-register AppInterceptor
if (diChicken.isRegistered<AppInterceptor>(instanceName: 'chickenInterceptor')) { if (diChicken.isRegistered<AppInterceptor>(
await diChicken.unregister<AppInterceptor>(instanceName: 'chickenInterceptor'); instanceName: 'chickenInterceptor',
)) {
await diChicken.unregister<AppInterceptor>(
instanceName: 'chickenInterceptor',
);
} }
diChicken.registerLazySingleton<AppInterceptor>( diChicken.registerLazySingleton<AppInterceptor>(
() => AppInterceptor( () => AppInterceptor(
@@ -126,16 +141,24 @@ Future<void> newSetupAuthDI(String newUrl) async {
diChicken.registerLazySingleton<DioRemote>( diChicken.registerLazySingleton<DioRemote>(
() => DioRemote( () => DioRemote(
baseUrl: newUrl, baseUrl: newUrl,
interceptors: diChicken.get<AppInterceptor>(instanceName: 'chickenInterceptor'), interceptors: diChicken.get<AppInterceptor>(
instanceName: 'chickenInterceptor',
),
), ),
); );
final dioRemote = diChicken.get<DioRemote>(); final dioRemote = diChicken.get<DioRemote>();
await dioRemote.init(); await dioRemote.init();
// Re-register dependent layers // Re-register dependent layers
await reRegister<AuthRemoteDataSource>(() => AuthRemoteDataSourceImp(dioRemote)); await reRegister<AuthRemoteDataSource>(
await reRegister<AuthRepository>(() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>())); () => AuthRemoteDataSourceImp(dioRemote),
await reRegister<ChickenRemoteDatasource>(() => ChickenRemoteDatasourceImp(dioRemote)); );
await reRegister<AuthRepository>(
() => AuthRepositoryImpl(diChicken.get<AuthRemoteDataSource>()),
);
await reRegister<ChickenRemoteDatasource>(
() => ChickenRemoteDatasourceImp(dioRemote),
);
await reRegister<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp()); await reRegister<ChickenLocalDataSource>(() => ChickenLocalDataSourceImp());
await reRegister<ChickenRepository>( await reRegister<ChickenRepository>(
() => ChickenRepositoryImp( () => ChickenRepositoryImp(
@@ -148,7 +171,9 @@ Future<void> newSetupAuthDI(String newUrl) async {
() => PoultryScienceRemoteDatasourceImp(dioRemote), () => PoultryScienceRemoteDatasourceImp(dioRemote),
); );
await reRegister<PoultryScienceRepository>( 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? totalGovernmentalCarcassesWeight,
int? totalFreeBarsCarcassesQuantity, int? totalFreeBarsCarcassesQuantity,
int? totalFreeBarsCarcassesWeight, int? totalFreeBarsCarcassesWeight,
int? totalFreeRemainWeight,
int? totalGovernmentalRemainWeight,
double? weightAverage, double? weightAverage,
int? totalCarcassesQuantity, int? totalCarcassesQuantity,
int? totalCarcassesWeight, 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(), (json['total_free_bars_carcasses_quantity'] as num?)?.toInt(),
totalFreeBarsCarcassesWeight: totalFreeBarsCarcassesWeight:
(json['total_free_bars_carcasses_weight'] as num?)?.toInt(), (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(), weightAverage: (json['weight_average'] as num?)?.toDouble(),
totalCarcassesQuantity: (json['total_carcasses_quantity'] as num?)?.toInt(), totalCarcassesQuantity: (json['total_carcasses_quantity'] as num?)?.toInt(),
totalCarcassesWeight: (json['total_carcasses_weight'] as num?)?.toInt(), totalCarcassesWeight: (json['total_carcasses_weight'] as num?)?.toInt(),
@@ -113,6 +116,8 @@ Map<String, dynamic> _$ProductModelToJson(
instance.totalGovernmentalCarcassesWeight, instance.totalGovernmentalCarcassesWeight,
'total_free_bars_carcasses_quantity': instance.totalFreeBarsCarcassesQuantity, 'total_free_bars_carcasses_quantity': instance.totalFreeBarsCarcassesQuantity,
'total_free_bars_carcasses_weight': instance.totalFreeBarsCarcassesWeight, 'total_free_bars_carcasses_weight': instance.totalFreeBarsCarcassesWeight,
'total_free_remain_weight': instance.totalFreeRemainWeight,
'total_governmental_remain_weight': instance.totalGovernmentalRemainWeight,
'weight_average': instance.weightAverage, 'weight_average': instance.weightAverage,
'total_carcasses_quantity': instance.totalCarcassesQuantity, 'total_carcasses_quantity': instance.totalCarcassesQuantity,
'total_carcasses_weight': instance.totalCarcassesWeight, '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/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.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/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/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/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/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
@@ -32,13 +31,12 @@ abstract class ChickenRepository {
//region Remote //region Remote
//region Steward //region Steward
Future<List<InventoryModel>?> getInventory({ Future<List<ProductModel>?> getInventory({
required String token, required String token,
required String role, required String role,
CancelToken? cancelToken, CancelToken? cancelToken,
}); });
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({ Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({
required String token, 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/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.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/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/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/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/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
@@ -39,16 +38,19 @@ class ChickenRepositoryImp implements ChickenRepository {
//region Remote //region Remote
@override @override
Future<List<InventoryModel>?> getInventory({ Future<List<ProductModel>?> getInventory({
required String token, required String token,
required String role, required String role,
CancelToken? cancelToken, CancelToken? cancelToken,
}) async { }) 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; return res;
} }
@override @override
Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({ Future<KillHouseDistributionInfo?> getKillHouseDistributionInfo({
required String token, required String token,
@@ -427,7 +429,9 @@ class ChickenRepositoryImp implements ChickenRepository {
} }
@override @override
Future<StewardRemainWeight?> getStewardRemainWeight({required String token}) async { Future<StewardRemainWeight?> getStewardRemainWeight({
required String token,
}) async {
return await remote.getStewardRemainWeight(token: token); 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 as listModel
show KillRequestList; 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/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 'package:rasadyar_core/core.dart';
abstract class KillHouseRepository { abstract class KillHouseRepository {
@@ -43,5 +44,7 @@ abstract class KillHouseRepository {
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
}); });
Future<BroadcastPrice?> getBroadcastPrice({required String token});
//endregion //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' import 'package:rasadyar_chicken/data/models/kill_house_module/register_request/response/kill_request_list/kill_request_list.dart'
as listModel; 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/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 'package:rasadyar_core/core.dart';
import '../chicken/chicken_repository.dart';
import 'kill_house_repository.dart'; import 'kill_house_repository.dart';
class KillHouseRepositoryImpl extends KillHouseRepository { class KillHouseRepositoryImpl extends KillHouseRepository {
final KillHouseRemoteDataSource remoteDataSource; final KillHouseRemoteDataSource remoteDataSource;
final ChickenRepository chickenRepository;
KillHouseRepositoryImpl(this.remoteDataSource); KillHouseRepositoryImpl(this.remoteDataSource, this.chickenRepository);
@override @override
Future<List<KillHouseResponse>?> getKillHouseList({ 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 //endregion
} }

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.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/data/repositories/kill_house/kill_house_repository.dart';
import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart'; import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart';
import 'package:rasadyar_chicken/presentation/routes/pages.dart'; import 'package:rasadyar_chicken/presentation/routes/pages.dart';
@@ -13,6 +14,7 @@ class KillHouseRootLogic extends GetxController {
var tokenService = Get.find<TokenStorageService>(); var tokenService = Get.find<TokenStorageService>();
late KillHouseRepository killHouseRepository; late KillHouseRepository killHouseRepository;
Rxn<BroadcastPrice> broadcastPrice = Rxn<BroadcastPrice>();
@override @override
void onInit() { void onInit() {
@@ -26,8 +28,9 @@ class KillHouseRootLogic extends GetxController {
onGenerateRoute: (settings) { onGenerateRoute: (settings) {
final page = ChickenPages.pages.firstWhere( final page = ChickenPages.pages.firstWhere(
(e) => e.name == settings.name, (e) => e.name == settings.name,
orElse: () => orElse: () => ChickenPages.pages.firstWhere(
ChickenPages.pages.firstWhere((e) => e.name == ChickenRoutes.actionKillHouse), (e) => e.name == ChickenRoutes.actionKillHouse,
),
); );
return buildRouteFromGetPage(page); return buildRouteFromGetPage(page);
@@ -52,4 +55,16 @@ class KillHouseRootLogic extends GetxController {
void changePage(int i) { void changePage(int i) {
currentPage.value = 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/cupertino.dart' hide LinearGradient;
import 'package:flutter/material.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/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/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/steward/widely_used/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'; import 'logic.dart';
class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionHomeLogic> { class WarehouseAndDistributionHomePage
extends GetView<WarehouseAndDistributionHomeLogic> {
const WarehouseAndDistributionHomePage({super.key}); const WarehouseAndDistributionHomePage({super.key});
@override @override
@@ -75,7 +75,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
AnimatedRotation( AnimatedRotation(
turns: 180, turns: 180,
duration: Duration(milliseconds: 3000), 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( Row(
spacing: 8, spacing: 8,
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [Icon(CupertinoIcons.chevron_down, size: 18)], children: [
Icon(CupertinoIcons.chevron_down, size: 18),
],
), ),
_todayShipmentWidget(), _todayShipmentWidget(),
_todayShipmentWidget2(), _todayShipmentWidget2(),
@@ -127,12 +132,17 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Assets.vec.chicken2Svg.svg( Assets.vec.chicken2Svg.svg(
width: 24.w, width: 24.w,
height: 24.h, height: 24.h,
colorFilter: ColorFilter.mode(AppColor.blueDark, BlendMode.srcIn), colorFilter: ColorFilter.mode(
AppColor.blueDark,
BlendMode.srcIn,
),
), ),
Text( Text(
'اطلاعات مرغ گرم', 'اطلاعات مرغ گرم',
textAlign: TextAlign.right, 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( Row(
children: [ children: [
SizedBox(width: 5.w), SizedBox(width: 5.w),
Text('اطلاعات پخش', textAlign: TextAlign.right, style: AppFonts.yekan16), Text(
'اطلاعات پخش',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
], ],
), ),
SizedBox(height: 8.h), SizedBox(height: 8.h),
@@ -164,7 +178,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
title: 'وزن دولتی', title: 'وزن دولتی',
titleBgColor: const Color(0xFFB8E7DC), titleBgColor: const Color(0xFFB8E7DC),
valueBgColor: const Color(0xFFE6FAF5), valueBgColor: const Color(0xFFE6FAF5),
value: data.value?.totalGovernmentalInputWeight.separatedByComma, value:
data.value?.totalGovernmentalInputWeight.separatedByComma,
), ),
), ),
Expanded( Expanded(
@@ -178,7 +193,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded( Expanded(
child: broadcastItem( child: broadcastItem(
title: 'فروش دولتی', title: 'فروش دولتی',
value: data.value?.totalGovernmentalOutputWeight.separatedByComma, value: data
.value
?.totalGovernmentalOutputWeight
.separatedByComma,
titleBgColor: const Color(0xFFEBC4CE), titleBgColor: const Color(0xFFEBC4CE),
valueBgColor: const Color(0xFFEDDCE0), valueBgColor: const Color(0xFFEDDCE0),
), ),
@@ -202,7 +220,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded( Expanded(
child: broadcastItem( child: broadcastItem(
title: 'مانده دولتی', title: 'مانده دولتی',
value: data.value?.totalGovernmentalRemainWeight.separatedByComma, value: data
.value
?.totalGovernmentalRemainWeight
.separatedByComma,
titleBgColor: const Color(0xFFB8E7DC), titleBgColor: const Color(0xFFB8E7DC),
valueBgColor: const Color(0xFFE6FAF5), valueBgColor: const Color(0xFFE6FAF5),
), ),
@@ -218,7 +239,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Expanded( Expanded(
child: broadcastItem( child: broadcastItem(
title: 'فروش خارج استان', title: 'فروش خارج استان',
value: data.value?.totalStewardFreeSaleBarCarcassesWeight.separatedByComma, value: data
.value
?.totalStewardFreeSaleBarCarcassesWeight
.separatedByComma,
titleBgColor: const Color(0xFFEBC4CE), titleBgColor: const Color(0xFFEBC4CE),
valueBgColor: const Color(0xFFEDDCE0), valueBgColor: const Color(0xFFEDDCE0),
), ),
@@ -242,7 +266,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationIconCard( child: _informationIconCard(
title: 'توزیع داخل استان', title: 'توزیع داخل استان',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.freeSalesWeight.separatedByCommaFa ?? '0', description:
data.value?.freeSalesWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.truckSvg.path, iconPath: Assets.vec.truckSvg.path,
iconColor: const Color.fromRGBO(85, 97, 93, 1), iconColor: const Color.fromRGBO(85, 97, 93, 1),
bgDescriptionColor: const Color(0xFFE6FAF5), bgDescriptionColor: const Color(0xFFE6FAF5),
@@ -253,7 +278,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationIconCard( child: _informationIconCard(
title: 'توزیع خارج استان', title: 'توزیع خارج استان',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.stewardAllocationsWeight.separatedByCommaFa ?? '0', description:
data.value?.stewardAllocationsWeight.separatedByCommaFa ??
'0',
iconPath: Assets.vec.truckFastSvg.path, iconPath: Assets.vec.truckFastSvg.path,
iconColor: Color(0xFF647379), iconColor: Color(0xFF647379),
bgDescriptionColor: const Color(0xFFEAEFFF), bgDescriptionColor: const Color(0xFFEAEFFF),
@@ -302,7 +329,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard( child: _informationLabelCard(
title: 'خارج استان', title: 'خارج استان',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.freeBuyingCarcassesWeight.separatedByCommaFa ?? '0', description:
data.value?.freeBuyingCarcassesWeight.separatedByCommaFa ??
'0',
iconPath: Assets.vec.cubeSearchSvg.path, iconPath: Assets.vec.cubeSearchSvg.path,
iconColor: Color(0xFF2D5FFF), iconColor: Color(0xFF2D5FFF),
bgLabelColor: const Color(0xFFAFCBFF), bgLabelColor: const Color(0xFFAFCBFF),
@@ -326,7 +355,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard( child: _informationLabelCard(
title: 'مانده انبار', title: 'مانده انبار',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.totalRemainWeight.separatedByCommaFa ?? '0', description:
data.value?.totalRemainWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.cubeSearchSvg.path, iconPath: Assets.vec.cubeSearchSvg.path,
bgDescriptionColor: const Color(0xFFEAEFFF), bgDescriptionColor: const Color(0xFFEAEFFF),
bgLabelColor: const Color(0xFFBDD4FF), bgLabelColor: const Color(0xFFBDD4FF),
@@ -337,7 +367,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard( child: _informationLabelCard(
title: 'توزیع شده', title: 'توزیع شده',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.realAllocatedWeight.separatedByCommaFa ?? '0', description:
data.value?.realAllocatedWeight.separatedByCommaFa ?? '0',
iconPath: Assets.vec.cubeRotateSvg.path, iconPath: Assets.vec.cubeRotateSvg.path,
iconColor: Color(0xFF5C4D64), iconColor: Color(0xFF5C4D64),
bgLabelColor: Color(0xFFC8B8D1), bgLabelColor: Color(0xFFC8B8D1),
@@ -375,7 +406,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Assets.vec.cubeScanSvg.svg( child: Assets.vec.cubeScanSvg.svg(
width: 12.w, width: 12.w,
height: 12.h, height: 12.h,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), colorFilter: const ColorFilter.mode(
Colors.white,
BlendMode.srcIn,
),
), ),
), ),
bgDescriptionColor: Colors.white, bgDescriptionColor: Colors.white,
@@ -395,7 +429,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
title: 'درانتظار', title: 'درانتظار',
borderColor: const Color(0xFF9758FF), borderColor: const Color(0xFF9758FF),
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.totalNotEnteredBars.separatedByCommaFa ?? '0', description:
data.value?.totalNotEnteredBars.separatedByCommaFa ?? '0',
unit: unit:
'(${data.value?.totalNotEnteredKillHouseRequestsWeight.separatedByCommaFa})\nکیلوگرم', '(${data.value?.totalNotEnteredKillHouseRequestsWeight.separatedByCommaFa})\nکیلوگرم',
icon: Container( icon: Container(
@@ -409,7 +444,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Assets.vec.cubeCardFreeSvg.svg( child: Assets.vec.cubeCardFreeSvg.svg(
width: 12.w, width: 12.w,
height: 12.h, height: 12.h,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), colorFilter: const ColorFilter.mode(
Colors.white,
BlendMode.srcIn,
),
), ),
), ),
bgDescriptionColor: Colors.white, bgDescriptionColor: Colors.white,
@@ -437,7 +475,12 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard( child: _informationLabelCard(
title: 'مانده دولتی', title: 'مانده دولتی',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.totalGovernmentalRemainWeight?.separatedByCommaFa ?? '0', description:
data
.value
?.totalGovernmentalRemainWeight
?.separatedByCommaFa ??
'0',
iconPath: Assets.vec.cubeCardGovermentSvg.path, iconPath: Assets.vec.cubeCardGovermentSvg.path,
iconColor: AppColor.textColor, iconColor: AppColor.textColor,
bgDescriptionColor: const Color(0xFFF5ECEE), bgDescriptionColor: const Color(0xFFF5ECEE),
@@ -448,7 +491,8 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: _informationLabelCard( child: _informationLabelCard(
title: 'مانده آزاد', title: 'مانده آزاد',
isLoading: data.value == null, isLoading: data.value == null,
description: data.value?.totalFreeRemainWeight.separatedByCommaFa ?? '0', description:
data.value?.totalFreeRemainWeight.separatedByCommaFa ?? '0',
unit: 'کیلوگرم', unit: 'کیلوگرم',
iconPath: Assets.vec.cubeCardFreeSvg.path, iconPath: Assets.vec.cubeCardFreeSvg.path,
iconColor: AppColor.textColor, iconColor: AppColor.textColor,
@@ -496,7 +540,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
), ),
Divider(), Divider(),
inventoryListItem(title: 'کل فروش', value: model.realAllocatedWeight?.separatedByComma), inventoryListItem(
title: 'کل فروش',
value: model.realAllocatedWeight?.separatedByComma,
),
Divider(), Divider(),
inventoryListItem( inventoryListItem(
title: 'مانده انبار', title: 'مانده انبار',
@@ -515,14 +562,25 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
children: [ children: [
Text( Text(
title, title,
style: AppFonts.yekan14.copyWith(color: const Color(0xFF353535), height: 1.2), style: AppFonts.yekan14.copyWith(
color: const Color(0xFF353535),
height: 1.2,
),
), ),
Spacer(), Spacer(),
value == null value == null
? Center(child: CupertinoActivityIndicator()) ? 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), 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, height: 65.h,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8), 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, clipBehavior: Clip.hardEdge,
child: Row( child: Row(
@@ -605,12 +665,16 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text( Text(
description, description,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
Text( Text(
unit, unit,
textAlign: TextAlign.center, 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( Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan14.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
isLoading isLoading
@@ -664,12 +730,16 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
: Text( : Text(
description, description,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
Text( Text(
unit, unit,
textAlign: TextAlign.center, 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({ Widget inventoryItem({
required bool isExpanded, required bool isExpanded,
required int index, required int index,
required InventoryModel model, required ProductModel model,
}) { }) {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@@ -729,8 +799,14 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
'کل ورودی به انبار (کیلوگرم)', 'کل ورودی به انبار (کیلوگرم)',
model.totalFreeBarsCarcassesWeight.toString(), model.totalFreeBarsCarcassesWeight.toString(),
), ),
buildRow('کل فروش (کیلوگرم)', model.realAllocatedWeight.toString()), buildRow(
buildRow('مانده انبار (کیلوگرم)', model.totalRemainWeight.toString()), 'کل فروش (کیلوگرم)',
model.realAllocatedWeight.toString(),
),
buildRow(
'مانده انبار (کیلوگرم)',
model.totalRemainWeight.toString(),
),
], ],
), ),
), ),
@@ -749,7 +825,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Text( child: Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
), ),
), ),
Flexible( Flexible(
@@ -757,7 +835,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
child: Text( child: Text(
value, value,
textAlign: TextAlign.center, 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( Text(
'اطلاعات ارسالی', 'اطلاعات ارسالی',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), style: AppFonts.yekan16Bold.copyWith(
color: AppColor.blueNormal,
),
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
buildRow( buildRow(
@@ -816,7 +898,10 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
return Container( return Container(
height: height?.h ?? 73.h, height: height?.h ?? 73.h,
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(color: valueBgColor, borderRadius: BorderRadius.circular(8)), decoration: BoxDecoration(
color: valueBgColor,
borderRadius: BorderRadius.circular(8),
),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: [
@@ -829,7 +914,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text( Text(
title ?? 'بدون تیتر', title ?? 'بدون تیتر',
textAlign: TextAlign.center, 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( child: Text(
value, value,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: valueStyle ?? AppFonts.yekan14.copyWith(color: AppColor.textColor), style:
valueStyle ??
AppFonts.yekan14.copyWith(color: AppColor.textColor),
), ),
) )
: Center(child: CupertinoActivityIndicator()), : Center(child: CupertinoActivityIndicator()),
@@ -850,7 +939,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Text( Text(
unit ?? 'کیلوگرم', unit ?? 'کیلوگرم',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: unitStyle ?? AppFonts.yekan10.copyWith(color: Color(0xFF717171)), style:
unitStyle ??
AppFonts.yekan10.copyWith(color: Color(0xFF717171)),
), ),
SizedBox(height: 4.h), SizedBox(height: 4.h),
], ],
@@ -902,19 +993,29 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
Row( Row(
children: [ children: [
SizedBox(width: 5.w), SizedBox(width: 5.w),
Text('تعهدات', textAlign: TextAlign.right, style: AppFonts.yekan16), Text(
'تعهدات',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
], ],
), ),
commitmentsItemList( commitmentsItemList(
title: 'تعهد دولتی توزیع داخل استان', title: 'تعهد دولتی توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceGovernmentalWeight.separatedByComma, value: data
.value
?.totalCommitmentSellingInProvinceGovernmentalWeight
.separatedByComma,
labelColor: const Color(0xFFB9E8DC), labelColor: const Color(0xFFB9E8DC),
bgColor: const Color(0xFFF3F9F8), bgColor: const Color(0xFFF3F9F8),
), ),
commitmentsItemList( commitmentsItemList(
title: 'توزیع دولتی داخل استان', title: 'توزیع دولتی داخل استان',
value: data.value?.totalSellingInProvinceGovernmentalWeight.separatedByComma, value: data
.value
?.totalSellingInProvinceGovernmentalWeight
.separatedByComma,
labelColor: const Color(0xFFC3D4F3), labelColor: const Color(0xFFC3D4F3),
bgColor: const Color(0xFFECF3FF), bgColor: const Color(0xFFECF3FF),
), ),
@@ -929,19 +1030,26 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
), ),
commitmentsItemList( commitmentsItemList(
title: 'تعهد آزاد توزیع داخل استان', title: 'تعهد آزاد توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceFreeWeight.separatedByComma, value: data
.value
?.totalCommitmentSellingInProvinceFreeWeight
.separatedByComma,
labelColor: const Color(0xFFC7DADA), labelColor: const Color(0xFFC7DADA),
bgColor: const Color(0xFFE5F7F7), bgColor: const Color(0xFFE5F7F7),
), ),
commitmentsItemList( commitmentsItemList(
title: 'توزیع آزاد داخل استان', title: 'توزیع آزاد داخل استان',
value: data.value?.totalSellingInProvinceFreeWeight.separatedByComma, value:
data.value?.totalSellingInProvinceFreeWeight.separatedByComma,
labelColor: const Color(0xFFE0D6ED), labelColor: const Color(0xFFE0D6ED),
bgColor: const Color(0xFFF5EDFF), bgColor: const Color(0xFFF5EDFF),
), ),
commitmentsItemList( commitmentsItemList(
title: 'باقیمانده تعهد آزاد توزیع داخل استان', title: 'باقیمانده تعهد آزاد توزیع داخل استان',
value: data.value?.totalCommitmentSellingInProvinceFreeRemainWeight.separatedByComma, value: data
.value
?.totalCommitmentSellingInProvinceFreeRemainWeight
.separatedByComma,
labelColor: const Color(0xFFEBC5CE), labelColor: const Color(0xFFEBC5CE),
bgColor: const Color(0xFFFFF1F4), bgColor: const Color(0xFFFFF1F4),
), ),
@@ -986,7 +1094,9 @@ class WarehouseAndDistributionHomePage extends GetView<WarehouseAndDistributionH
: Text( : Text(
value, value,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.textColor), style: AppFonts.yekan16.copyWith(
color: AppColor.textColor,
),
), ),
SizedBox(width: 8.w), 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/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/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/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/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/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.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(); RxList<ErrorLocationType> errorLocationType = RxList();
RxMap<int, dynamic> inventoryExpandedList = RxMap(); RxMap<int, dynamic> inventoryExpandedList = RxMap();
Rxn<InventoryModel> inventoryModel = Rxn<InventoryModel>(); Rxn<ProductModel> inventoryModel = Rxn<ProductModel>();
Rxn<KillHouseSalesInfoDashboard> killHouseSalesInfoDashboard = Rxn<KillHouseSalesInfoDashboard> killHouseSalesInfoDashboard =
Rxn<KillHouseSalesInfoDashboard>(); Rxn<KillHouseSalesInfoDashboard>();
RxList<IranProvinceCityModel> provinces = <IranProvinceCityModel>[].obs; 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( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
spacing: 8, spacing: 8,

View File

@@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart' hide LinearGradient; import 'package:flutter/cupertino.dart' hide LinearGradient;
import 'package:flutter/material.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/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/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/steward/widely_used/view.dart'; import 'package:rasadyar_chicken/presentation/widget/steward/widely_used/view.dart';
@@ -704,7 +703,7 @@ class HomePage extends GetView<HomeLogic> {
Widget inventoryItem({ Widget inventoryItem({
required bool isExpanded, required bool isExpanded,
required int index, required int index,
required InventoryModel model, required ProductModel model,
}) { }) {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, 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/data_source/local/chicken_local.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.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/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/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/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.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(); RxList<ErrorLocationType> errorLocationType = RxList();
RxMap<int, dynamic> inventoryExpandedList = RxMap(); RxMap<int, dynamic> inventoryExpandedList = RxMap();
Rxn<InventoryModel> inventoryModel = Rxn<InventoryModel>(); Rxn<ProductModel> inventoryModel = Rxn<ProductModel>();
RxList<IranProvinceCityModel> provinces = <IranProvinceCityModel>[].obs; RxList<IranProvinceCityModel> provinces = <IranProvinceCityModel>[].obs;
// Cancel tokens for API calls // Cancel tokens for API calls
@@ -123,7 +122,7 @@ class StewardRootLogic extends GetxController {
_inventoryCancelToken?.cancel(); _inventoryCancelToken?.cancel();
_inventoryCancelToken = CancelToken(); _inventoryCancelToken = CancelToken();
await safeCall<List<InventoryModel>?>( await safeCall<List<ProductModel>?>(
call: () async => await chickenRepository.getInventory( call: () async => await chickenRepository.getInventory(
token: tokenService.accessToken.value!, token: tokenService.accessToken.value!,
cancelToken: _inventoryCancelToken, 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( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
spacing: 8, spacing: 8,

View File

@@ -1,12 +1,10 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.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'; import 'package:rasadyar_core/core.dart';
class InventoryWidget extends StatelessWidget { class InventoryWidget extends StatelessWidget {
final InventoryModel? inventoryModel; final ProductModel? inventoryModel;
const InventoryWidget({super.key, required this.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/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.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/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/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/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/steward_free_bar.dart';
@@ -117,12 +117,12 @@ void main() {
test('should complete inventory management workflow', () async { test('should complete inventory management workflow', () async {
// Arrange // Arrange
final expectedInventory = [ final expectedInventory = [
InventoryModel( ProductModel(
key: 'inventory-1', key: 'inventory-1',
name: 'Product 1', name: 'Product 1',
totalCarcassesQuantity: 100, totalCarcassesQuantity: 100,
), ),
InventoryModel( ProductModel(
key: 'inventory-2', key: 'inventory-2',
name: 'Product 2', name: 'Product 2',
totalCarcassesQuantity: 200, totalCarcassesQuantity: 200,