chore: update app version to 1.3.35+32, change build mode to debug, and refactor poultry farm inspection routes and logic for improved structure

This commit is contained in:
2025-12-08 10:27:24 +03:30
parent b4cf137351
commit 9b68cb6bc3
43 changed files with 358 additions and 243 deletions

View File

@@ -1,5 +1,5 @@
sdk.dir=C:\\Users\\Housh11\\AppData\\Local\\Android\\sdk
flutter.sdk=C:\\src\\flutter
flutter.buildMode=release
flutter.versionName=1.3.34
flutter.versionCode=31
flutter.buildMode=debug
flutter.versionName=1.3.35
flutter.versionCode=32

View File

@@ -1,3 +1,4 @@
import 'package:rasadyar_chicken/features/poultry_science/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
String getFaUserRole(String? role) {
@@ -152,7 +153,7 @@ Map<String, String?> getFaUserRoleWithOnTap(String? role) {
case "Steward":
return {"مباشر": ChickenRoutes.initSteward};
case "PoultryScience":
return {"کارشناس طیور": ChickenRoutes.initPoultryScience};
return {"کارشناس طیور": PoultryScienceRoutes.initPoultryScience};
default:
return {"نامشخص": null};
}

View File

@@ -0,0 +1,3 @@
abstract class ChickenRemoteDataSource {
Future<void> getChickens();
}

View File

@@ -0,0 +1,3 @@
abstract class PoultryFarmLocalDataSource {
// TODO: Implement local data source methods
}

View File

@@ -0,0 +1,3 @@
abstract class PoultryFarmRemoteDataSource {
Future<void> getPoultryFarms();
}

View File

@@ -0,0 +1,3 @@
abstract class PoultryFarmRepository {
// TODO: Implement repository interface
}

View File

@@ -0,0 +1,2 @@
export 'presentation/home/logic.dart';
export 'presentation/home/view.dart';

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/home/logic.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/presentation/home/logic.dart';
import 'package:rasadyar_core/core.dart';
Widget farmInfoWidget({

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/presentation/widgets/card_info.dart';
import 'package:rasadyar_core/core.dart';
import '../home/logic.dart';

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/presentation/widgets/card_info.dart';
import 'package:rasadyar_core/core.dart';
import '../home/logic.dart';

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/presentation/widgets/card_info.dart';
import 'package:rasadyar_core/core.dart';
import '../home/logic.dart';

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/presentation/widgets/card_info.dart';
import 'package:rasadyar_core/core.dart';
import '../home/logic.dart';

View File

@@ -0,0 +1,3 @@
abstract class PoultryScienceRemoteDataSource {
Future<void> getPoultryScience();
}

View File

@@ -0,0 +1,2 @@
export 'presentation/routes/routes.dart';
export 'presentation/routes/pages.dart';

View File

@@ -1,5 +1,5 @@
import 'package:rasadyar_chicken/data/models/response/hatching/hatching_models.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class ActiveHatchingLogic extends GetxController {
@@ -29,12 +29,12 @@ class ActiveHatchingLogic extends GetxController {
baseLogic.clearSearch();
}
Future<void> getHatchingList([bool isLoadingMore = false]) async {
if (isLoadingMore) {
isLoadingMoreList.value = true;
} else {
activeHatchingList.value = Resource<PaginationModel<HatchingModel>>.loading();
activeHatchingList.value =
Resource<PaginationModel<HatchingModel>>.loading();
}
if (searchedValue.value != null &&
@@ -55,14 +55,19 @@ class ActiveHatchingLogic extends GetxController {
),
onSuccess: (res) {
if ((res?.count ?? 0) == 0) {
activeHatchingList.value = Resource<PaginationModel<HatchingModel>>.empty();
activeHatchingList.value =
Resource<PaginationModel<HatchingModel>>.empty();
} else {
activeHatchingList.value = Resource<PaginationModel<HatchingModel>>.success(
activeHatchingList.value =
Resource<PaginationModel<HatchingModel>>.success(
PaginationModel<HatchingModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(activeHatchingList.value.data?.results ?? []), ...(res?.results ?? [])],
results: [
...(activeHatchingList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
}
@@ -78,6 +83,4 @@ class ActiveHatchingLogic extends GetxController {
currentPage.value = 1;
await getHatchingList();
}
}

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/hatching/hatching_models.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/active_hatching/logic.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
import 'package:rasadyar_core/core.dart';

View File

@@ -1,14 +1,15 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/poultry_farm/poultry_farm.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/home/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class FarmLogic extends GetxController {
List<String> routes = ['اقدام', 'فارم ها'];
PoultryScienceRootLogic rootLogic = Get.find<PoultryScienceRootLogic>();
BasePageLogic baseLogic = Get.find<BasePageLogic>();
final PoultryScienceHomeLogic _homeLogic = Get.find<PoultryScienceHomeLogic>();
final PoultryScienceHomeLogic _homeLogic =
Get.find<PoultryScienceHomeLogic>();
RxList<InformationTagData> tagInfo = <InformationTagData>[
InformationTagData(
labelTitle: 'کل فارم ها',
@@ -75,7 +76,8 @@ class FarmLogic extends GetxController {
farmList.value = Resource<PaginationModel<PoultryFarm>>.loading();
}
await safeCall(
call: () async => await rootLogic.poultryRepository.getPoultryScienceFarmList(
call: () async =>
await rootLogic.poultryRepository.getPoultryScienceFarmList(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
queryParams: {'type': 'farm'},
@@ -95,7 +97,10 @@ class FarmLogic extends GetxController {
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(farmList.value.data?.results ?? []), ...?res?.results],
results: [
...(farmList.value.data?.results ?? []),
...?res?.results,
],
),
);
}

View File

@@ -1,6 +1,6 @@
import 'package:rasadyar_chicken/data/models/response/poultry_order/poultry_order.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/killing_registration/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/killing_registration/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class GenocideLogic extends GetxController {
@@ -44,7 +44,8 @@ class GenocideLogic extends GetxController {
if (loadingMore) {
isLoadingMore.value = true;
} else {
poultryOrderList.value = Resource<PaginationModel<PoultryOrder>>.loading();
poultryOrderList.value =
Resource<PaginationModel<PoultryOrder>>.loading();
}
if (searchedValue.value != null &&
@@ -69,20 +70,25 @@ class GenocideLogic extends GetxController {
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 500));
if ((res?.count ?? 0) == 0) {
poultryOrderList.value = Resource<PaginationModel<PoultryOrder>>.empty();
poultryOrderList.value =
Resource<PaginationModel<PoultryOrder>>.empty();
} else {
if (loadingMore) {
poultryOrderList.value = Resource<PaginationModel<PoultryOrder>>.success(
poultryOrderList.value =
Resource<PaginationModel<PoultryOrder>>.success(
PaginationModel<PoultryOrder>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(poultryOrderList.value.data?.results ?? []), ...(res?.results ?? [])],
results: [
...(poultryOrderList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
} else {
poultryOrderList.value = Resource<PaginationModel<PoultryOrder>>.success(res!);
poultryOrderList.value =
Resource<PaginationModel<PoultryOrder>>.success(res!);
}
}
},
@@ -134,10 +140,8 @@ class GenocideLogic extends GetxController {
}
}
Future<void> onRefresh() async {
currentPage.value = 1;
await getPoultryOrderList();
}
}

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/poultry_order/poultry_order.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/killing_registration/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/killing_registration/view.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/filter_bottom_sheet.dart';
@@ -81,7 +82,6 @@ class GenocidePage extends GetView<GenocideLogic> {
itemCount: data.value.data?.results?.length ?? 0,
separatorBuilder: (context, index) => SizedBox(height: 8.h),
onLoadMore: () async => controller.getPoultryOrderList(true),
);
}, controller.poultryOrderList);
}
@@ -89,7 +89,10 @@ class GenocidePage extends GetView<GenocideLogic> {
Container itemListExpandedWidget(PoultryOrder item) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
),
child: Column(
spacing: 8,
children: [
@@ -151,8 +154,14 @@ class GenocidePage extends GetView<GenocideLogic> {
buildRow(title: 'نوع کشتار ', value: controller.getKillType(item)),
buildRow(title: 'درخواست', value: controller.getRequestType(item)),
buildRow(title: 'میانگین وزنی', value: '${(item.indexWeight)} (کیلوگرم)'),
buildRow(title: 'قیمت مرغدار', value: '${item.amount.separatedByComma} (ریال)'),
buildRow(
title: 'میانگین وزنی',
value: '${(item.indexWeight)} (کیلوگرم)',
),
buildRow(
title: 'قیمت مرغدار',
value: '${item.amount.separatedByComma} (ریال)',
),
buildRow(
title: 'مانده در سالن ',
value: '${item.hatching?.leftOver.separatedByComma ?? 0} (قطعه)',
@@ -169,7 +178,10 @@ class GenocidePage extends GetView<GenocideLogic> {
icon: Assets.vec.trashSvg.svg(
width: 16.w,
height: 16.h,
colorFilter: ColorFilter.mode(AppColor.error, BlendMode.srcIn),
colorFilter: ColorFilter.mode(
AppColor.error,
BlendMode.srcIn,
),
),
textStyle: AppFonts.yekan16Bold.copyWith(color: AppColor.error),
borderColor: AppColor.error,

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/poultry_science/home_poultry_science/home_poultry_science_model.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
import 'package:rasadyar_core/presentation/widget/custom/information_card_widget.dart';
@@ -158,7 +158,8 @@ class PoultryScienceHomeLogic extends GetxController {
);
case 'حجم کشتار شده':
return tag.copyWith(
value: result.hatchingKilledQuantity?.separatedByCommaFa ?? '0',
value:
result.hatchingKilledQuantity?.separatedByCommaFa ?? '0',
isLoading: false,
);
default:

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/hatching/hatching_models.dart';
import 'package:rasadyar_chicken/data/models/response/hatching_report/hatching_report.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class InspectionPoultryScienceLogic extends GetxController {
@@ -14,7 +14,10 @@ class InspectionPoultryScienceLogic extends GetxController {
PoultryScienceRootLogic rootLogic = Get.find<PoultryScienceRootLogic>();
Rx<LatLng> currentLocation = LatLng(34.798315281272544, 48.51479142983491).obs;
Rx<LatLng> currentLocation = LatLng(
34.798315281272544,
48.51479142983491,
).obs;
final RxBool isLoadingMoreAllocationsMade = false.obs;
RxInt currentPage = 1.obs;
@@ -104,7 +107,10 @@ class InspectionPoultryScienceLogic extends GetxController {
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(hatchingList.value.data?.results ?? []), ...(res?.results ?? [])],
results: [
...(hatchingList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
}
@@ -116,7 +122,8 @@ class InspectionPoultryScienceLogic extends GetxController {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
hatchingReportList.value = Resource<PaginationModel<HatchingReport>>.loading();
hatchingReportList.value =
Resource<PaginationModel<HatchingReport>>.loading();
}
if (searchedValue.value != null &&
@@ -126,7 +133,8 @@ class InspectionPoultryScienceLogic extends GetxController {
}
safeCall(
call: () async => await rootLogic.poultryRepository.getHatchingPoultryReport(
call: () async =>
await rootLogic.poultryRepository.getHatchingPoultryReport(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
role: 'PoultryScience',
@@ -140,14 +148,19 @@ class InspectionPoultryScienceLogic extends GetxController {
),
onSuccess: (res) {
if ((res?.count ?? 0) == 0) {
hatchingReportList.value = Resource<PaginationModel<HatchingReport>>.empty();
hatchingReportList.value =
Resource<PaginationModel<HatchingReport>>.empty();
} else {
hatchingReportList.value = Resource<PaginationModel<HatchingReport>>.success(
hatchingReportList.value =
Resource<PaginationModel<HatchingReport>>.success(
PaginationModel<HatchingReport>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(hatchingReportList.value.data?.results ?? []), ...(res?.results ?? [])],
results: [
...(hatchingReportList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
}
@@ -175,7 +188,10 @@ class InspectionPoultryScienceLogic extends GetxController {
isOnUpload.value = true;
final tmpFiles = await Future.wait(
pickedImages.map((element) => MultipartFile.fromFile(element.path, filename: element.name)),
pickedImages.map(
(element) =>
MultipartFile.fromFile(element.path, filename: element.name),
),
);
var data = FormData.fromMap({
@@ -186,11 +202,15 @@ class InspectionPoultryScienceLogic extends GetxController {
});
safeCall(
call: () async => await rootLogic.poultryRepository.submitPoultryScienceReport(
call: () async =>
await rootLogic.poultryRepository.submitPoultryScienceReport(
token: rootLogic.tokenService.accessToken.value!,
data: data,
onSendProgress: (sent, total) {
presentUpload.value = calculateUploadProgress(sent: sent, total: total);
presentUpload.value = calculateUploadProgress(
sent: sent,
total: total,
);
},
),
onSuccess: (res) {
@@ -204,7 +224,9 @@ class InspectionPoultryScienceLogic extends GetxController {
clearImages();
isOnUpload.value = false;
await Future.delayed(const Duration(seconds: 4)).then((value) => closeBottomSheet());
await Future.delayed(
const Duration(seconds: 4),
).then((value) => closeBottomSheet());
},
showError: true,
);

View File

@@ -7,8 +7,8 @@ import 'package:rasadyar_chicken/data/models/response/kill_house_poultry/kill_ho
import 'package:rasadyar_chicken/data/models/response/kill_request_poultry/kill_request_poultry.dart';
import 'package:rasadyar_chicken/data/models/response/poultry_hatching/poultry_hatching.dart';
import 'package:rasadyar_chicken/data/models/response/sell_for_freezing/sell_for_freezing.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/genocide/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/genocide/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class KillingRegistrationLogic extends GetxController {
@@ -26,7 +26,9 @@ class KillingRegistrationLogic extends GetxController {
TextEditingController quantityKillsController = TextEditingController();
RxBool quantityKillsIsCompleted = false.obs;
TextEditingController quantityLoseController = TextEditingController(text: 0.toString());
TextEditingController quantityLoseController = TextEditingController(
text: 0.toString(),
);
TextEditingController averageWeightKillsController = TextEditingController();
RxBool averageWeightKillsIsCompleted = false.obs;
TextEditingController priceFreeSaleController = TextEditingController();
@@ -40,25 +42,23 @@ class KillingRegistrationLogic extends GetxController {
RxBool isFreeSale = false.obs;
//step 1
Rx<Resource<List<AllPoultry>>> allPoultryList = Resource<List<AllPoultry>>.loading().obs;
Rx<Resource<List<AllPoultry>>> allPoultryList =
Resource<List<AllPoultry>>.loading().obs;
Rxn<AllPoultry> selectedPoultry = Rxn();
//step 2
Rx<Resource<List<KillRequestPoultry>>> poultryList = Resource<List<KillRequestPoultry>>.success(
[],
).obs;
Rx<Resource<List<KillRequestPoultry>>> poultryList =
Resource<List<KillRequestPoultry>>.success([]).obs;
Rxn<KillRequestPoultry> selectedKillRequestPoultry = Rxn();
//step 3
Rx<Resource<List<PoultryHatching>>> poultryHatchingList = Resource<List<PoultryHatching>>.success(
[],
).obs;
Rx<Resource<List<PoultryHatching>>> poultryHatchingList =
Resource<List<PoultryHatching>>.success([]).obs;
Rxn<PoultryHatching> selectedPoultryHatching = Rxn();
//step 5
Rx<Resource<List<KillHousePoultry>>> killHouseList = Resource<List<KillHousePoultry>>.success(
[],
).obs;
Rx<Resource<List<KillHousePoultry>>> killHouseList =
Resource<List<KillHousePoultry>>.success([]).obs;
Rxn<KillHousePoultry> selectedKillHouse = Rxn();
@override
@@ -82,7 +82,12 @@ class KillingRegistrationLogic extends GetxController {
});
everAll(
[selectedPoultry, selectedKillRequestPoultry, selectedPoultryHatching, selectedKillHouse],
[
selectedPoultry,
selectedKillRequestPoultry,
selectedPoultryHatching,
selectedKillHouse,
],
(callback) {
checkSubmitButton();
},
@@ -104,12 +109,15 @@ class KillingRegistrationLogic extends GetxController {
void priceListener() {
quantityKillsController.addListener(() {
quantityKillsIsCompleted.value = quantityKillsController.text.trim().isNotEmpty;
quantityKillsIsCompleted.value = quantityKillsController.text
.trim()
.isNotEmpty;
if (averageWeightKillsController.text.isNotEmpty &&
quantityKillsController.text.trim().isNotEmpty) {
generatedApprovedPrice.value = calculateApprovedPrice().toInt();
priceFreeSaleController.text = generatedApprovedPrice.value.separatedByComma;
priceFreeSaleController.text =
generatedApprovedPrice.value.separatedByComma;
checkSubmitButton();
} else {
@@ -120,12 +128,15 @@ class KillingRegistrationLogic extends GetxController {
});
averageWeightKillsController.addListener(() {
averageWeightKillsIsCompleted.value = averageWeightKillsController.text.trim().isNotEmpty;
averageWeightKillsIsCompleted.value = averageWeightKillsController.text
.trim()
.isNotEmpty;
if (averageWeightKillsController.text.trim().isNotEmpty &&
quantityKillsController.text.trim().isNotEmpty) {
generatedApprovedPrice.value = calculateApprovedPrice().toInt();
priceFreeSaleController.text = generatedApprovedPrice.value.separatedByComma;
priceFreeSaleController.text =
generatedApprovedPrice.value.separatedByComma;
checkSubmitButton();
} else {
generatedApprovedPrice.value = 0;
@@ -177,7 +188,9 @@ class KillingRegistrationLogic extends GetxController {
await safeCall(
call: () async => await rootLogic.poultryRepository.getAllPoultry(
token: tokenService.accessToken.value ?? '',
queryParameters: buildRawQueryParams(role: gService.getRole(Module.chicken)),
queryParameters: buildRawQueryParams(
role: gService.getRole(Module.chicken),
),
),
onSuccess: (result) {
if (result != null) {
@@ -185,7 +198,9 @@ class KillingRegistrationLogic extends GetxController {
}
},
onError: (error, stackTrace) {
allPoultryList.value = Resource<List<AllPoultry>>.error('$error -- $stackTrace');
allPoultryList.value = Resource<List<AllPoultry>>.error(
'$error -- $stackTrace',
);
},
);
}
@@ -230,11 +245,15 @@ class KillingRegistrationLogic extends GetxController {
),
onSuccess: (result) {
if (result != null) {
poultryList.value = Resource<List<KillRequestPoultry>>.success(result);
poultryList.value = Resource<List<KillRequestPoultry>>.success(
result,
);
}
},
onError: (error, stackTrace) {
poultryList.value = Resource<List<KillRequestPoultry>>.error('$error -- $stackTrace');
poultryList.value = Resource<List<KillRequestPoultry>>.error(
'$error -- $stackTrace',
);
},
);
}
@@ -250,11 +269,15 @@ class KillingRegistrationLogic extends GetxController {
),
onSuccess: (result) {
if (result != null) {
poultryHatchingList.value = Resource<List<PoultryHatching>>.success(result);
poultryHatchingList.value = Resource<List<PoultryHatching>>.success(
result,
);
}
},
onError: (error, stackTrace) {
poultryHatchingList.value = Resource<List<PoultryHatching>>.error('$error -- $stackTrace');
poultryHatchingList.value = Resource<List<PoultryHatching>>.error(
'$error -- $stackTrace',
);
},
);
}
@@ -265,16 +288,23 @@ class KillingRegistrationLogic extends GetxController {
call: () async => await rootLogic.poultryRepository.getKillHouseList(
token: tokenService.accessToken.value ?? '',
queryParameters: buildRawQueryParams(
queryParams: {'show_poultry': '', 'date': DateTime.now().formattedDashedGregorian},
queryParams: {
'show_poultry': '',
'date': DateTime.now().formattedDashedGregorian,
},
),
),
onSuccess: (result) {
if (result != null) {
killHouseList.value = Resource<List<KillHousePoultry>>.success(result);
killHouseList.value = Resource<List<KillHousePoultry>>.success(
result,
);
}
},
onError: (error, stackTrace) {
killHouseList.value = Resource<List<KillHousePoultry>>.error('$error -- $stackTrace');
killHouseList.value = Resource<List<KillHousePoultry>>.error(
'$error -- $stackTrace',
);
},
);
}
@@ -311,7 +341,11 @@ class KillingRegistrationLogic extends GetxController {
selectedPoultryHatching.value != null &&
quantityKillsController.text.isNotEmpty &&
averageWeightKillsController.text.isNotEmpty &&
((selectedKillRequestPoultry.value?.provinceAllowChooseKillHouse?.mandatory ?? false)
((selectedKillRequestPoultry
.value
?.provinceAllowChooseKillHouse
?.mandatory ??
false)
? selectedKillHouse.value != null
: true);
}
@@ -352,7 +386,8 @@ class KillingRegistrationLogic extends GetxController {
);
await safeCall(
call: () async => await rootLogic.poultryRepository.submitKillRegistration(
call: () async =>
await rootLogic.poultryRepository.submitKillRegistration(
token: tokenService.accessToken.value ?? '',
request: registrationRequest,
),

View File

@@ -1,3 +1,4 @@
import 'package:rasadyar_chicken/features/poultry_science/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_core/core.dart';
@@ -6,29 +7,33 @@ class PoultryActionItem {
final String route;
final String icon;
PoultryActionItem({required this.title, required this.route, required this.icon});
PoultryActionItem({
required this.title,
required this.route,
required this.icon,
});
}
class PoultryActionLogic extends GetxController {
RxList<PoultryActionItem> items = [
PoultryActionItem(
title: "بازرسی",
route: ChickenRoutes.inspectionPoultryScience,
route: PoultryScienceRoutes.inspectionPoultryScience,
icon: Assets.vec.chickenInspectionSvg.path,
),
PoultryActionItem(
title: "ثبت کشتار",
route: ChickenRoutes.genocidePoultryScience,
route: PoultryScienceRoutes.genocidePoultryScience,
icon: Assets.vec.registerKillSvg.path,
),
PoultryActionItem(
title: "فارم ها",
route: ChickenRoutes.farmPoultryScience,
route: PoultryScienceRoutes.farmPoultryScience,
icon: Assets.vec.farmsSvg.path,
),
PoultryActionItem(
title: "جوجه ریزی فعال",
route: ChickenRoutes.activeHatchingPoultryScience,
route: PoultryScienceRoutes.activeHatchingPoultryScience,
icon: Assets.vec.activeFramSvg.path,
),

View File

@@ -2,9 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.dart';
import 'package:rasadyar_chicken/data/repositories/poultry_science/poultry_science_repository.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/home/view.dart';
import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/view.dart';
import 'package:rasadyar_chicken/presentation/routes/pages.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
import 'package:rasadyar_chicken/presentation/utils/utils.dart';
@@ -30,7 +31,7 @@ class PoultryScienceRootLogic extends GetxController {
final page = ChickenPages.pages.firstWhere(
(e) => e.name == settings.name,
orElse: () => ChickenPages.pages.firstWhere(
(e) => e.name == ChickenRoutes.actionPoultryScience,
(e) => e.name == PoultryScienceRoutes.actionPoultryScience,
),
);
@@ -39,8 +40,6 @@ class PoultryScienceRootLogic extends GetxController {
),
PoultryScienceHomePage(),
ProfilePage(),
];
@override
@@ -49,7 +48,6 @@ class PoultryScienceRootLogic extends GetxController {
poultryRepository = diChicken.get<PoultryScienceRepository>();
}
void toggleExpanded(int index) {
if (homeExpandedList.keys.contains(index)) {
homeExpandedList.remove(index);
@@ -81,7 +79,7 @@ class PoultryScienceRootLogic extends GetxController {
}
}
void popBackTaped() async{
void popBackTaped() async {
final nestedKeyId = getNestedKey();
GlobalKey<NavigatorState>? currentNestedKey = Get.nestedKey(nestedKeyId);

View File

@@ -0,0 +1,93 @@
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/active_hatching/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/active_hatching/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/farm/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/farm/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/genocide/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/genocide/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/home/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/inspection/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/inspection/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/killing_registration/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/killing_registration/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/poultry_action/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/poultry_action/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/logic.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/pages/root/view.dart';
import 'package:rasadyar_chicken/features/poultry_science/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/routes/global_binding.dart';
import 'package:rasadyar_core/core.dart';
class PoultrySciencePages {
PoultrySciencePages._();
static List<GetPage> get pages => [
GetPage(
name: PoultryScienceRoutes.initPoultryScience,
page: () => PoultryScienceRootPage(),
middlewares: [AuthMiddleware()],
bindings: [
GlobalBinding(),
BindingsBuilder(() {
Get.lazyPut(() => PoultryScienceRootLogic());
Get.lazyPut(() => PoultryScienceHomeLogic());
Get.lazyPut(() => PoultryActionLogic());
}),
],
),
GetPage(
name: PoultryScienceRoutes.inspectionPoultryScience,
page: () => InspectionPoultrySciencePage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => InspectionPoultryScienceLogic());
}),
),
GetPage(
name: PoultryScienceRoutes.actionPoultryScience,
page: () => PoultryActionPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => PoultryActionLogic());
}),
),
GetPage(
name: PoultryScienceRoutes.farmPoultryScience,
page: () => FarmPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => FarmLogic());
Get.lazyPut(() => PoultryScienceHomeLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
GetPage(
name: PoultryScienceRoutes.activeHatchingPoultryScience,
page: () => ActiveHatchingPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => ActiveHatchingLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
GetPage(
name: PoultryScienceRoutes.genocidePoultryScience,
page: () => GenocidePage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => GenocideLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
Get.lazyPut(() => KillingRegistrationLogic(), fenix: true);
}),
),
GetPage(
name: PoultryScienceRoutes.killingRegistrationPoultryScience,
page: () => KillingRegistrationPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => KillingRegistrationLogic());
Get.lazyPut(() => GenocideLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
];
}

View File

@@ -0,0 +1,13 @@
sealed class PoultryScienceRoutes {
PoultryScienceRoutes._();
static const _base = '/chicken/poultryScience';
static const initPoultryScience = '$_base/';
static const actionPoultryScience = '$_base/action';
static const inspectionPoultryScience = '$_base/inspection';
static const farmPoultryScience = '$_base/farm';
static const activeHatchingPoultryScience = '$_base/activeHatching';
static const genocidePoultryScience = '$_base/genocidePoultryScience';
static const killingRegistrationPoultryScience =
'$genocidePoultryScience/KillingRegistration';
}

View File

@@ -1,2 +0,0 @@
export 'home/logic.dart';
export 'home/view.dart';

View File

@@ -8,22 +8,8 @@ import 'package:rasadyar_chicken/presentation/pages/kill_house/root/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/kill_house/root/view.dart';
import 'package:rasadyar_chicken/presentation/pages/kill_house/submit_request/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/kill_house/submit_request/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/poultry_farm_inspection.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/farm/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/farm/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/genocide/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/genocide/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/inspection/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/inspection/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/killing_registration/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/killing_registration/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/view.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart';
import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/view.dart';
import 'package:rasadyar_chicken/features/poultry_farm_inspection/poultry_farm_inspection.dart';
import 'package:rasadyar_chicken/features/poultry_science/poultry_science.dart';
import 'package:rasadyar_chicken/presentation/pages/steward/steward.dart';
import 'package:rasadyar_chicken/presentation/routes/global_binding.dart';
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
@@ -159,76 +145,7 @@ sealed class ChickenPages {
//endregion
//region Poultry science Pages
GetPage(
name: ChickenRoutes.initPoultryScience,
page: () => PoultryScienceRootPage(),
middlewares: [AuthMiddleware()],
bindings: [
GlobalBinding(),
BindingsBuilder(() {
Get.lazyPut(() => PoultryScienceRootLogic());
Get.lazyPut(() => PoultryScienceHomeLogic());
Get.lazyPut(() => PoultryActionLogic());
}),
],
),
GetPage(
name: ChickenRoutes.inspectionPoultryScience,
page: () => InspectionPoultrySciencePage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => InspectionPoultryScienceLogic());
}),
),
GetPage(
name: ChickenRoutes.actionPoultryScience,
page: () => PoultryActionPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => PoultryActionLogic());
}),
),
GetPage(
name: ChickenRoutes.farmPoultryScience,
page: () => FarmPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => FarmLogic());
Get.lazyPut(() => PoultryScienceHomeLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
GetPage(
name: ChickenRoutes.activeHatchingPoultryScience,
page: () => ActiveHatchingPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => ActiveHatchingLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
GetPage(
name: ChickenRoutes.genocidePoultryScience,
page: () => GenocidePage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => GenocideLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
Get.lazyPut(() => KillingRegistrationLogic(), fenix: true);
}),
),
GetPage(
name: ChickenRoutes.killingRegistrationPoultryScience,
page: () => KillingRegistrationPage(),
middlewares: [AuthMiddleware()],
binding: BindingsBuilder(() {
Get.lazyPut(() => KillingRegistrationLogic());
Get.lazyPut(() => GenocideLogic());
Get.lazyPut(() => PoultryScienceRootLogic());
}),
),
...PoultrySciencePages.pages,
//endregion
//region Poultry Farm Inspection

View File

@@ -21,19 +21,8 @@ sealed class ChickenRoutes {
//sales
static const salesInProvinceSteward = '$saleSteward/SalesInProvince';
static const salesOutOfProvinceSteward = '$saleSteward/saleOutOfProvince';
static const salesOutOfProvinceBuyerSteward = '$saleSteward/saleOutOfProvinceBuyer ';
//endregion
//region Poultry Science Routes
static const _poultryScience = '$_base/poultryScience';
static const initPoultryScience = '$_poultryScience/';
static const actionPoultryScience = '$_poultryScience/action';
static const inspectionPoultryScience = '$_poultryScience/inspection';
static const farmPoultryScience = '$_poultryScience/farm';
static const activeHatchingPoultryScience = '$_poultryScience/activeHatching';
static const genocidePoultryScience = '$_poultryScience/genocidePoultryScience';
static const killingRegistrationPoultryScience = '$genocidePoultryScience/KillingRegistration';
static const salesOutOfProvinceBuyerSteward =
'$saleSteward/saleOutOfProvinceBuyer ';
//endregion

View File

@@ -1,7 +1,7 @@
name: rasadyar_app
description: "A new Flutter project."
publish_to: 'none'
version: 1.3.34+31
version: 1.3.35+32
environment:
sdk: ^3.9.2