Merge branch with resolved conflicts - restructured features and added new modules

This commit is contained in:
2025-12-17 10:26:39 +03:30
484 changed files with 55236 additions and 4255 deletions

View File

@@ -3,7 +3,7 @@ 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/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/repositories/kill_house/kill_house_repository.dart';
import 'package:rasadyar_chicken/features/common/profile/view.dart';
import 'package:rasadyar_chicken/features/common/presentation/page/profile/view.dart';
import 'package:rasadyar_chicken/presentation/routes/pages.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
@@ -55,6 +55,4 @@ class KillHouseRootLogic extends GetxController {
void changePage(int i) {
currentPage.value = i;
}
}

View File

@@ -1,16 +1,17 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/request/submit_steward_allocation/submit_steward_allocation.dart';
import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.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/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.dart';
import 'package:rasadyar_chicken/features/kill_house/warehouse_and_distribution/root/logic.dart';
import 'package:rasadyar_chicken/features/kill_house/warehouse_and_distribution/sale/logic.dart';
=
import 'package:rasadyar_chicken/features/steward/data/model/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/submit_steward_allocation/submit_steward_allocation.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/guild/guild_model.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/guild_profile/guild_profile.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/steward_remain_weight/steward_remain_weight.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sale/logic.dart';
import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';
import 'package:rasadyar_chicken/presentation/utils/utils.dart';
import 'package:rasadyar_core/core.dart';
@@ -56,7 +57,8 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
final RxBool hasMoreDataAllocationsMade = true.obs;
Rxn<BroadcastPrice> broadcastPrice = Rxn<BroadcastPrice>();
Rxn<AllocatedMadeModel> selectedAllocationModelForUpdate = Rxn<AllocatedMadeModel>();
Rxn<AllocatedMadeModel> selectedAllocationModelForUpdate =
Rxn<AllocatedMadeModel>();
SubmitStewardAllocation? tmpStewardAllocation;
Rxn<Jalali> productionDate = Rxn(null);
@@ -133,7 +135,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
void _updateGovernmentalProductionDateData() {
/* List<RemainWeightDay> dates = rootLogic.stewardRemainWeight.value?.governmental ?? [];
=
List<RemainWeightDay> dates =
rootLogic.stewardRemainWeight.value?.governmental ?? [];
governmentalProductionDateData = {
for (var element in dates)
element.day.toString().toJalali.formatCompactDate(): DayData(
@@ -156,7 +160,8 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
allocatedList.value = Resource<PaginationModel<AllocatedMadeModel>>.loading();
allocatedList.value =
Resource<PaginationModel<AllocatedMadeModel>>.loading();
}
if (searchedValue.value != null &&
@@ -165,8 +170,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
currentPage.value = 1; // Reset to first page if search value is set
}
/* safeCall(
call: () async => await rootLogic.chickenRepository.getAllocatedMade(
=
safeCall(
call: () async => await rootLogic.stewardRepository.getAllocatedMade(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
page: currentPage.value,
@@ -181,18 +187,23 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 200));
if ((res?.count ?? 0) == 0) {
allocatedList.value = Resource<PaginationModel<AllocatedMadeModel>>.empty();
allocatedList.value =
Resource<PaginationModel<AllocatedMadeModel>>.empty();
} else {
allocatedList.value = Resource<PaginationModel<AllocatedMadeModel>>.success(
PaginationModel<AllocatedMadeModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: isLoadingMore
? [...(allocatedList.value.data?.results ?? []), ...(res?.results ?? [])]
: res?.results ?? [],
),
);
allocatedList.value =
Resource<PaginationModel<AllocatedMadeModel>>.success(
PaginationModel<AllocatedMadeModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: isLoadingMore
? [
...(allocatedList.value.data?.results ?? []),
...(res?.results ?? []),
]
: res?.results ?? [],
),
);
isLoadingMoreAllocationsMade.value = false;
if ((allocatedList.value.data?.results?.length ?? 0) > 1) {
flashingFabBgColor();
@@ -209,10 +220,14 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
void checkVerification() {
var hasWeight = quotaType.value == 1
? weight.value <=
(governmentalProductionDateData[productionDate.value?.formatCompactDate()]?.value ??
(governmentalProductionDateData[productionDate.value
?.formatCompactDate()]
?.value ??
0)
: weight.value <=
(freeProductionDateData[productionDate.value?.formatCompactDate()]?.value ?? 0);
(freeProductionDateData[productionDate.value?.formatCompactDate()]
?.value ??
0);
isValid.value =
weight.value > 0 &&
@@ -224,8 +239,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
void confirmAllocation(ConformAllocation allocation) {
/* safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllocation(
=
safeCall(
call: () async => await rootLogic.stewardRepository.confirmAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocation: allocation.toJson(),
),
@@ -237,8 +253,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
void denyAllocation(String token) {
/* safeCall(
call: () async => await rootLogic.chickenRepository.denyAllocation(
=
safeCall(
call: () async => await rootLogic.stewardRepository.denyAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocationToken: token,
),
@@ -250,10 +267,13 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> confirmAllAllocations() async {
/* safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllAllocation(
=
safeCall(
call: () async => await rootLogic.stewardRepository.confirmAllAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocationTokens: allocatedList.value.data?.results?.map((e) => e.key!).toList() ?? [],
allocationTokens:
allocatedList.value.data?.results?.map((e) => e.key!).toList() ??
[],
),
onSuccess: (result) {
getAllocatedMade();
@@ -263,8 +283,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> getRolesProducts() async {
/* safeCall(
call: () async => await rootLogic.chickenRepository.getRolesProducts(
=
safeCall(
call: () async => await rootLogic.commonRepository.getRolesProducts(
token: rootLogic.tokenService.accessToken.value!,
role: 'Steward',
),
@@ -279,8 +300,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> getGuilds() async {
/* safeCall(
call: () async => await rootLogic.chickenRepository.getGuilds(
=
safeCall(
call: () async => await rootLogic.commonRepository.getGuilds(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
//queryParams: {'free': saleType.value == 2 ? true : false},
@@ -311,8 +333,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> getGuildProfile() async {
/* await safeCall(
call: () async => await rootLogic.chickenRepository.getProfile(
=
await safeCall(
call: () async => await rootLogic.commonRepository.getProfile(
token: rootLogic.tokenService.accessToken.value!,
),
onError: (error, stackTrace) {},
@@ -328,13 +351,17 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
allocationType:
'${guildProfile.value?.steward == true ? "steward" : "guild"}_${selectedGuildModel.value?.steward == true ? "steward" : "guild"}',
sellerType: guildProfile.value?.steward == true ? "Steward" : "Guild",
buyerType: selectedGuildModel.value?.steward == true ? "Steward" : "Guild",
buyerType: selectedGuildModel.value?.steward == true
? "Steward"
: "Guild",
amount: pricePerKilo.value,
totalAmount: totalCost.value,
weightOfCarcasses: weight.value,
sellType: saleType.value == 2 ? "free" : 'exclusive',
numberOfCarcasses: 0,
productionDate: productionDate.value?.toDateTime().formattedDashedGregorian,
productionDate: productionDate.value
?.toDateTime()
.formattedDashedGregorian,
quota: quotaType.value == 1 ? 'governmental' : 'free',
guildKey: selectedGuildModel.value?.key,
productKey: selectedProductModel.value?.key,
@@ -348,16 +375,20 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
/* safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.postSubmitStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
request: tmpStewardAllocation!,
),
call: () async =>
await rootLogic.stewardRepository.postSubmitStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
request: tmpStewardAllocation!,
),
onSuccess: (result) {
clearForm();
onRefresh();
rootLogic.onRefresh();
Future.delayed(Duration(seconds: 1), () => defaultShowSuccessMessage("ثبت موفق بود"));
Future.delayed(
Duration(seconds: 1),
() => defaultShowSuccessMessage("ثبت موفق بود"),
);
Get.back();
},
onError: (error, stackTrace) {},
@@ -365,11 +396,13 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> deleteAllocation(AllocatedMadeModel model) async {
/* safeCall(
call: () async => await rootLogic.chickenRepository.deleteStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: {'steward_allocation_key': model.key},
),
=
safeCall(
call: () async =>
await rootLogic.stewardRepository.deleteStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: {'steward_allocation_key': model.key},
),
onSuccess: (result) {
getAllocatedMade();
@@ -393,7 +426,9 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
pricePerKilo.value = item.amount ?? 0;
totalCost.value = item.totalAmount ?? 0;
weightController.text = weight.value.toString().separatedByComma;
pricePerKiloController.text = pricePerKilo.value.toString().separatedByComma;
pricePerKiloController.text = pricePerKilo.value
.toString()
.separatedByComma;
totalCostController.text = totalCost.value.toString().separatedByComma;
isValid.value = true;
productionDate.value = item.productionDate.toJalali;
@@ -427,16 +462,20 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
/* safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.updateStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
request: updatedAllocationModel,
),
call: () async =>
await rootLogic.stewardRepository.updateStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
request: updatedAllocationModel,
),
onSuccess: (result) {
clearForm();
onRefresh();
rootLogic.onRefresh();
Future.delayed(Duration(seconds: 1), () => defaultShowSuccessMessage("ویرایش موفق بود"));
Future.delayed(
Duration(seconds: 1),
() => defaultShowSuccessMessage("ویرایش موفق بود"),
);
Get.back();
},
onError: (error, stackTrace) {},
@@ -474,15 +513,18 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
}
Future<void> getBroadcastPrice() async {
/* safeCall(
call: () async => await rootLogic.chickenRepository.getBroadcastPrice(
=
safeCall(
call: () async => await rootLogic.commonRepository.getBroadcastPrice(
token: rootLogic.tokenService.accessToken.value!,
),
onSuccess: (result) {
broadcastPrice.value = result;
if (broadcastPrice.value?.active == true) {
pricePerKilo.value = broadcastPrice.value?.stewardPrice ?? 0;
pricePerKiloController.text = pricePerKilo.value.toString().separatedByComma;
pricePerKiloController.text = pricePerKilo.value
.toString()
.separatedByComma;
priceType.value = 2;
}
},
@@ -494,7 +536,11 @@ class WarehouseAndDistributionSalesInProvinceLogic extends GetxController {
toggleExpansion();
currentPage.value = 1;
hasMoreDataAllocationsMade.value = true;
await Future.wait([getAllocatedMade(), getRolesProducts(), rootLogic.onRefresh()]);
await Future.wait([
getAllocatedMade(),
getRolesProducts(),
rootLogic.onRefresh(),
]);
}
void toggleExpansion({int? index}) {

View File

@@ -1,10 +1,10 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_sale_bar/steward_free_sale_bar.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/steward_free_sale_bar/steward_free_sale_bar.dart';
import 'package:rasadyar_chicken/features/steward/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
@@ -89,7 +89,7 @@ class WarehouseAndDistributionSalesOutOfProvincePage extends GetView<WarehouseAn
backgroundColor: AppColor.blueNormal,
onPressed: () {
Get.toNamed(
ChickenRoutes.salesOutOfProvinceBuyerSteward,
StewardRoutes.salesOutOfProvinceBuyerSteward,
id: stewardSecondKey,
);
},