refactor: remove unused local and remote data sources, models, and tests for chicken and poultry features to streamline codebase

This commit is contained in:
2025-12-08 16:10:34 +03:30
parent 890be0ded6
commit 455a5a5571
230 changed files with 2812 additions and 3471 deletions

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/request/steward_allocation/steward_allocation_request.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/steward_allocation/steward_allocation_request.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
@@ -33,7 +33,11 @@ class BuyInProvinceAllLogic extends GetxController {
@override
void onReady() {
debounce(searchedValue, (callback) => getAllArrivals(), time: Duration(milliseconds: 2000));
debounce(
searchedValue,
(callback) => getAllArrivals(),
time: Duration(milliseconds: 2000),
);
super.onReady();
ever(approvedWithOtpCode, (callback) {
if (callback == false) {
@@ -42,13 +46,12 @@ class BuyInProvinceAllLogic extends GetxController {
});
}
Future<void> getAllArrivals([bool isLoadingMore = false]) async {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
allProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.loading();
allProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.loading();
}
if (searchedValue.value != null &&
@@ -58,7 +61,7 @@ class BuyInProvinceAllLogic extends GetxController {
}
safeCall(
call: () async => await rootLogic.chickenRepository.getWaitingArrivals(
call: () async => await rootLogic.stewardRepository.getWaitingArrivals(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
queryParams: {'type': 'all'},
@@ -74,16 +77,21 @@ class BuyInProvinceAllLogic extends GetxController {
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 200));
if ((res?.count ?? 0) == 0) {
allProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.empty();
allProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.empty();
} else {
allProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.success(
PaginationModel<WaitingArrivalModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(allProduct.value.data?.results ?? []), ...(res?.results ?? [])],
),
);
allProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.success(
PaginationModel<WaitingArrivalModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(allProduct.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
}
},
);
@@ -105,7 +113,7 @@ class BuyInProvinceAllLogic extends GetxController {
safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.setSateForArrivals(
call: () async => await rootLogic.stewardRepository.setSateForArrivals(
token: rootLogic.tokenService.accessToken.value!,
request: request,
),
@@ -128,7 +136,7 @@ class BuyInProvinceAllLogic extends GetxController {
request.removeWhere((key, value) => value == null);
safeCall(
call: () async => await rootLogic.chickenRepository.setSateForArrivals(
call: () async => await rootLogic.stewardRepository.setSateForArrivals(
token: rootLogic.tokenService.accessToken.value!,
request: request,
),

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';
import 'package:rasadyar_core/core.dart';
@@ -84,14 +84,19 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
child: Assets.vec.hotChickenSvg.svg(
width: 24,
height: 24,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
colorFilter: ColorFilter.mode(
AppColor.blueNormal,
BlendMode.srcIn,
),
),
),
Text(
item.weightOfCarcasses?.separatedByCommaFa.addKg ?? 'N/A',
textAlign: TextAlign.left,
textDirection: TextDirection.ltr,
style: AppFonts.yekan12Bold.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan12Bold.copyWith(
color: AppColor.blueNormal,
),
),
],
),
@@ -119,7 +124,10 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
Container itemListExpandedWidget(WaitingArrivalModel 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: [
@@ -138,10 +146,15 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
style: AppFonts.yekan10.copyWith(color: AppColor.darkGreyDark),
),
SizedBox(width: 7),
SvgGenImage.vec(controller.getVecPathItem(item.receiverState)).svg(
SvgGenImage.vec(
controller.getVecPathItem(item.receiverState),
).svg(
width: 16.w,
height: 16.h,
colorFilter: ColorFilter.mode(AppColor.darkGreyDark, BlendMode.srcIn),
colorFilter: ColorFilter.mode(
AppColor.darkGreyDark,
BlendMode.srcIn,
),
),
],
),
@@ -163,12 +176,16 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
children: [
Text(
item.date?.toJalali.formatter.wN ?? 'N/A',
style: AppFonts.yekan14.copyWith(color: AppColor.textColor),
style: AppFonts.yekan14.copyWith(
color: AppColor.textColor,
),
),
Text(
'${item.date?.toJalali.formatter.d} ${item.date?.toJalali.formatter.mN ?? 'N/A'}',
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
),
],
),
@@ -186,13 +203,19 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
),
),
buildRow(title: 'مشخصات فروشنده', value: item.toSteward?.user?.fullname ?? 'N/A'),
buildRow(
title: 'مشخصات فروشنده',
value: item.toSteward?.user?.fullname ?? 'N/A',
),
buildRow(
title: 'تلفن فروشنده',
value: item.toSteward?.user?.mobile ?? 'N/A',
valueStyle: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
),
buildRow(title: 'نوع تخصیص', value: item.allocationType?.faAllocationType ?? 'N/A'),
buildRow(
title: 'نوع تخصیص',
value: item.allocationType?.faAllocationType ?? 'N/A',
),
buildRow(title: ' سهمیه', value: item.quota?.faTitle ?? 'N/A'),
buildRow(title: 'محصول', value: item.product?.name ?? 'N/A'),
buildRow(
@@ -203,7 +226,9 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
buildRow(
title: 'قیمت هر کیلوگرم',
titleLabel: (item.approvedPriceStatus ?? false) ? 'مصوب' : 'آزاد',
titleLabelStyle: AppFonts.yekan14Bold.copyWith(color: AppColor.greenNormal),
titleLabelStyle: AppFonts.yekan14Bold.copyWith(
color: AppColor.greenNormal,
),
value: item.amount?.separatedByCommaFa ?? 'N/A',
valueLabel: 'ریال',
),
@@ -240,7 +265,9 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
}, controller.isLoadingConfirmMap),
ROutlinedElevated(
text: 'رد',
textStyle: AppFonts.yekan20.copyWith(color: AppColor.redNormal),
textStyle: AppFonts.yekan20.copyWith(
color: AppColor.redNormal,
),
width: 150.w,
height: 40.h,
onPressed: () {
@@ -285,25 +312,37 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
label: 'وزن(کیلوگرم)',
controller: controller.weightController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
RTextField(
label: 'حجم(قطعه)',
controller: controller.countController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
RTextField(
label: 'افت وزن(کیلوگرم)',
controller: controller.lossController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
Text('تایید ', style: AppFonts.yekan16Bold.copyWith(color: AppColor.textColor)),
Text(
'تایید ',
style: AppFonts.yekan16Bold.copyWith(color: AppColor.textColor),
),
ObxValue((data) {
return Column(
children: [
@@ -373,7 +412,12 @@ class BuyInProvinceAllPage extends GetView<BuyInProvinceAllLogic> {
child: Row(
children: [
Radio(value: value),
Text(label, style: textStyle ?? AppFonts.yekan16.copyWith(color: AppColor.textColor)),
Text(
label,
style:
textStyle ??
AppFonts.yekan16.copyWith(color: AppColor.textColor),
),
],
),
);

View File

@@ -1,8 +1,8 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/request/steward_allocation/steward_allocation_request.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/steward_allocation/steward_allocation_request.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_chicken/presentation/utils/utils.dart';
import 'package:rasadyar_core/core.dart';
@@ -48,8 +48,6 @@ class BuyInProvinceWaitingLogic extends GetxController {
});
}
void setSearchValue(String? data) {
searchedValue.value = data?.trim();
}
@@ -58,7 +56,8 @@ class BuyInProvinceWaitingLogic extends GetxController {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
waitingProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.loading();
waitingProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.loading();
}
if (searchedValue.value != null &&
@@ -68,7 +67,7 @@ class BuyInProvinceWaitingLogic extends GetxController {
}
safeCall(
call: () async => await rootLogic.chickenRepository.getWaitingArrivals(
call: () async => await rootLogic.stewardRepository.getWaitingArrivals(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
queryParams: {'type': 'not_entered'},
@@ -84,16 +83,21 @@ class BuyInProvinceWaitingLogic extends GetxController {
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 200));
if ((res?.count ?? 0) == 0) {
waitingProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.empty();
waitingProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.empty();
} else {
waitingProduct.value = Resource<PaginationModel<WaitingArrivalModel>>.success(
PaginationModel<WaitingArrivalModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(waitingProduct.value.data?.results ?? []), ...(res?.results ?? [])],
),
);
waitingProduct.value =
Resource<PaginationModel<WaitingArrivalModel>>.success(
PaginationModel<WaitingArrivalModel>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(waitingProduct.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
flashingFabBgColor();
}
},
@@ -118,7 +122,7 @@ class BuyInProvinceWaitingLogic extends GetxController {
safeCall(
showError: true,
showSuccess: true,
call: () async => await rootLogic.chickenRepository.setSateForArrivals(
call: () async => await rootLogic.stewardRepository.setSateForArrivals(
token: rootLogic.tokenService.accessToken.value!,
request: request,
),
@@ -147,7 +151,7 @@ class BuyInProvinceWaitingLogic extends GetxController {
request.removeWhere((key, value) => value == null);
safeCall(
call: () async => await rootLogic.chickenRepository.setSateForArrivals(
call: () async => await rootLogic.stewardRepository.setSateForArrivals(
token: rootLogic.tokenService.accessToken.value!,
request: request,
),

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/waiting_arrival/waiting_arrival.dart';
import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';
import 'package:rasadyar_core/core.dart';
@@ -88,14 +88,19 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
child: Assets.vec.hotChickenSvg.svg(
width: 24,
height: 24,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
colorFilter: ColorFilter.mode(
AppColor.blueNormal,
BlendMode.srcIn,
),
),
),
Text(
item.weightOfCarcasses?.separatedByCommaFa.addKg ?? 'ندارد',
textAlign: TextAlign.left,
textDirection: TextDirection.ltr,
style: AppFonts.yekan12Bold.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan12Bold.copyWith(
color: AppColor.blueNormal,
),
),
],
),
@@ -130,7 +135,10 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
Container itemListExpandedWidget(WaitingArrivalModel 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: [
@@ -170,12 +178,16 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
children: [
Text(
item.date?.toJalali.formatter.wN ?? 'ندارد',
style: AppFonts.yekan14.copyWith(color: AppColor.textColor),
style: AppFonts.yekan14.copyWith(
color: AppColor.textColor,
),
),
Text(
'${item.date?.toJalali.formatter.d} ${item.date?.toJalali.formatter.mN ?? 'ندارد'}',
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
),
],
),
@@ -204,9 +216,15 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
'${controller.rootLogic.isKillHouse(item) ? item.killHouse?.killHouseOperator?.user?.mobile : item.steward?.user?.mobile} ',
valueStyle: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
),
buildRow(title: 'نوع تخصیص', value: item.allocationType?.faAllocationType ?? 'ندارد'),
buildRow(
title: 'نوع تخصیص',
value: item.allocationType?.faAllocationType ?? 'ندارد',
),
buildRow(title: ' سهمیه', value: item.quota?.faTitle ?? 'ندارد'),
buildRow(title: 'نوع فروش', value: item.saleType == "governmental" ? 'دولتی' : 'آزاد'),
buildRow(
title: 'نوع فروش',
value: item.saleType == "governmental" ? 'دولتی' : 'آزاد',
),
buildRow(title: 'محصول', value: item.product?.name ?? 'ندارد'),
buildRow(
title: 'تاریخ تولید گوشت',
@@ -219,11 +237,16 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
buildRow(
title: 'قیمت هر کیلوگرم',
titleLabel: (item.approvedPriceStatus ?? false) ? 'دولتی' : 'آزاد',
titleLabelStyle: AppFonts.yekan14Bold.copyWith(color: AppColor.greenNormal),
titleLabelStyle: AppFonts.yekan14Bold.copyWith(
color: AppColor.greenNormal,
),
value: '${item.amount?.separatedByCommaFa} ریال',
),
buildRow(title: 'قیمت کل', value: '${item.totalAmount?.separatedByCommaFa} ریال'),
buildRow(
title: 'قیمت کل',
value: '${item.totalAmount?.separatedByCommaFa} ریال',
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
@@ -236,7 +259,10 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
height: 40.h,
isLoading: data[item.key!] ?? false,
onPressed: () async {
await Get.bottomSheet(conformationBottomSheet(item), isScrollControlled: true);
await Get.bottomSheet(
conformationBottomSheet(item),
isScrollControlled: true,
);
},
textStyle: AppFonts.yekan20.copyWith(color: Colors.white),
backgroundColor: AppColor.greenNormal,
@@ -276,25 +302,37 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
label: 'وزن(کیلوگرم)',
controller: controller.weightController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
RTextField(
label: 'حجم(قطعه)',
controller: controller.countController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
RTextField(
label: 'افت وزن(کیلوگرم)',
controller: controller.lossController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly, SeparatorInputFormatter()],
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
SeparatorInputFormatter(),
],
),
SizedBox(height: 16.h),
Text('تایید ', style: AppFonts.yekan16Bold.copyWith(color: AppColor.textColor)),
Text(
'تایید ',
style: AppFonts.yekan16Bold.copyWith(color: AppColor.textColor),
),
ObxValue((data) {
return Column(
children: [
@@ -365,7 +403,12 @@ class BuyInProvinceWaitingPage extends GetView<BuyInProvinceWaitingLogic> {
child: Row(
children: [
Radio(value: value),
Text(label, style: textStyle ?? AppFonts.yekan16.copyWith(color: AppColor.textColor)),
Text(
label,
style:
textStyle ??
AppFonts.yekan16.copyWith(color: AppColor.textColor),
),
],
),
);

View File

@@ -1,8 +1,8 @@
import 'package:flutter/cupertino.dart';
import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/create_steward_free_bar/create_steward_free_bar.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.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_bar/steward_free_bar.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/buy/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sale/logic.dart';
@@ -84,11 +84,14 @@ class BuyOutOfProvinceLogic extends GetxController {
searchedValue.value = data?.trim();
}
Future<void> getStewardPurchaseOutOfProvince([bool isLoadingMore = false]) async {
Future<void> getStewardPurchaseOutOfProvince([
bool isLoadingMore = false,
]) async {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
purchaseOutOfProvinceList.value = Resource<PaginationModel<StewardFreeBar>>.loading();
purchaseOutOfProvinceList.value =
Resource<PaginationModel<StewardFreeBar>>.loading();
}
if (searchedValue.value != null &&
@@ -97,34 +100,37 @@ class BuyOutOfProvinceLogic extends GetxController {
currentPage.value = 1; // Reset to first page if search value is set
}
await safeCall(
call: () => rootLogic.chickenRepository.getStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
page: currentPage.value,
search: 'filter',
role: 'Steward',
value: searchedValue.value,
fromDate: fromDateFilter.value.toDateTime(),
toDate: toDateFilter.value.toDateTime(),
),
),
call: () =>
rootLogic.stewardRepository.getStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
page: currentPage.value,
search: 'filter',
role: 'Steward',
value: searchedValue.value,
fromDate: fromDateFilter.value.toDateTime(),
toDate: toDateFilter.value.toDateTime(),
),
),
onSuccess: (res) async {
await Future.delayed(Duration(milliseconds: 500));
if ((res?.count ?? 0) == 0) {
purchaseOutOfProvinceList.value = Resource<PaginationModel<StewardFreeBar>>.empty();
purchaseOutOfProvinceList.value =
Resource<PaginationModel<StewardFreeBar>>.empty();
} else {
purchaseOutOfProvinceList.value = Resource<PaginationModel<StewardFreeBar>>.success(
PaginationModel<StewardFreeBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(purchaseOutOfProvinceList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
purchaseOutOfProvinceList.value =
Resource<PaginationModel<StewardFreeBar>>.success(
PaginationModel<StewardFreeBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(purchaseOutOfProvinceList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
}
},
);
@@ -132,8 +138,9 @@ class BuyOutOfProvinceLogic extends GetxController {
Future<void> getCites() async {
await safeCall(
call: () =>
rootLogic.chickenRepository.getCity(provinceName: selectedProvince.value?.name ?? ''),
call: () => rootLogic.commonRepository.getCity(
provinceName: selectedProvince.value?.name ?? '',
),
onSuccess: (result) {
if (result != null && result.isNotEmpty) {
cites.value = result;
@@ -201,10 +208,11 @@ class BuyOutOfProvinceLogic extends GetxController {
barImage: _base64Image.value,
date: DateTime.now().formattedYHMS,
);
await rootLogic.chickenRepository.createStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
body: createStewardFreeBar,
);
await rootLogic.stewardRepository
.createStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
body: createStewardFreeBar,
);
},
onSuccess: (result) {
getStewardPurchaseOutOfProvince();
@@ -266,10 +274,11 @@ class BuyOutOfProvinceLogic extends GetxController {
await safeCall(
showError: true,
call: () => rootLogic.chickenRepository.editStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
body: edit,
),
call: () =>
rootLogic.stewardRepository.editStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
body: edit,
),
onSuccess: (result) {
onRefresh();
rootLogic.onRefresh();
@@ -280,10 +289,11 @@ class BuyOutOfProvinceLogic extends GetxController {
Future<void> deleteStewardPurchaseOutOfProvince(String key) async {
await safeCall(
call: () => rootLogic.chickenRepository.deleteStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildRawQueryParams(queryParams: {'key': key}),
),
call: () => rootLogic.stewardRepository
.deleteStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildRawQueryParams(queryParams: {'key': key}),
),
);
}

View File

@@ -3,9 +3,9 @@ import 'dart:io';
import 'package:flutter/cupertino.dart' hide Image;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.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_bar/steward_free_bar.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/steward/inventory_widget.dart';

View File

@@ -1,12 +1,13 @@
import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/bar_information/bar_information.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class HomeLogic extends GetxController {
StewardRootLogic rootLogic = Get.find<StewardRootLogic>();
RxnInt totalWeightTodayBars = RxnInt();
Rxn<KillHouseDistributionInfo> killHouseDistributionInfo = Rxn<KillHouseDistributionInfo>();
Rxn<KillHouseDistributionInfo> killHouseDistributionInfo =
Rxn<KillHouseDistributionInfo>();
Rxn<BarInformation> barInformation = Rxn();
RxList<Map<String, String?>> inventoryItems = [
@@ -34,7 +35,6 @@ class HomeLogic extends GetxController {
void onReady() {
super.onReady();
refreshData();
}
Future<void> refreshData() async {
@@ -49,10 +49,11 @@ class HomeLogic extends GetxController {
Future<void> getGeneralBarsInformation() async {
await safeCall<BarInformation?>(
call: () async => await rootLogic.chickenRepository.getGeneralBarInformation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(role: 'Steward'),
),
call: () async =>
await rootLogic.commonRepository.getGeneralBarInformation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(role: 'Steward'),
),
onSuccess: (result) {
if (result != null) {
barInformation.value = result;
@@ -64,14 +65,15 @@ class HomeLogic extends GetxController {
Future<void> getTodayBars() async {
await safeCall<BarInformation?>(
call: () async => await rootLogic.chickenRepository.getGeneralBarInformation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
fromDate: DateTime.now(),
toDate: DateTime.now(),
role: 'Steward',
),
),
call: () async =>
await rootLogic.commonRepository.getGeneralBarInformation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
fromDate: DateTime.now(),
toDate: DateTime.now(),
role: 'Steward',
),
),
onSuccess: (result) {
if (result != null) {
totalWeightTodayBars.value = result.totalBarsWeight?.toInt();
@@ -83,9 +85,10 @@ class HomeLogic extends GetxController {
Future<void> getDistributionInformation() async {
await safeCall<KillHouseDistributionInfo?>(
call: () async => await rootLogic.chickenRepository.getKillHouseDistributionInfo(
token: rootLogic.tokenService.accessToken.value!,
),
call: () async =>
await rootLogic.commonRepository.getKillHouseDistributionInfo(
token: rootLogic.tokenService.accessToken.value!,
),
onSuccess: (result) {
if (result != null) {
killHouseDistributionInfo.value = result;

View File

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

View File

@@ -2,17 +2,18 @@ import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:rasadyar_chicken/data/data_source/local/chicken_local.dart';
import 'package:rasadyar_chicken/features/common/data/datasources/local/chicken_local.dart';
import 'package:rasadyar_chicken/data/di/chicken_di.dart';
import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.dart';
import 'package:rasadyar_chicken/data/models/response/steward_sales_info_dashboard/steward_sales_info_dashboard.dart';
import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart'
import 'package:rasadyar_chicken/features/common/data/model/local/widely_used_local_model.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/inventory/inventory_model.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.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/data/model/response/steward_sales_info_dashboard/steward_sales_info_dashboard.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/waiting_arrival/waiting_arrival.dart'
hide ProductModel;
import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository.dart';
import 'package:rasadyar_chicken/features/common/data/repositories/common/common_repository.dart';
import 'package:rasadyar_chicken/features/steward/data/repositories/steward_repository.dart';
import 'package:rasadyar_chicken/features/common/presentation/page/profile/view.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/buy/view.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/home/view.dart';
@@ -49,7 +50,8 @@ class StewardRootLogic extends GetxController {
late DioRemote dioRemote;
var tokenService = Get.find<TokenStorageService>();
late ChickenRepository chickenRepository;
late CommonRepository commonRepository;
late StewardRepository stewardRepository;
late ChickenLocalDataSource localDatasource;
RxList<ErrorLocationType> errorLocationType = RxList();
@@ -65,7 +67,8 @@ class StewardRootLogic extends GetxController {
void onInit() {
super.onInit();
localDatasource = diChicken.get<ChickenLocalDataSource>();
chickenRepository = diChicken.get<ChickenRepository>();
commonRepository = diChicken.get<CommonRepository>();
stewardRepository = diChicken.get<StewardRepository>();
}
@override
@@ -125,7 +128,7 @@ class StewardRootLogic extends GetxController {
_inventoryCancelToken = CancelToken();
await safeCall<List<InventoryModel>?>(
call: () async => await chickenRepository.getInventory(
call: () async => await commonRepository.getInventory(
token: tokenService.accessToken.value!,
cancelToken: _inventoryCancelToken,
),
@@ -159,7 +162,7 @@ class StewardRootLogic extends GetxController {
_provincesCancelToken = CancelToken();
try {
final res = await chickenRepository.getProvince(
final res = await commonRepository.getProvince(
cancelToken: _provincesCancelToken,
);
if (res != null) {
@@ -177,7 +180,7 @@ class StewardRootLogic extends GetxController {
Future<void> getRolesProducts() async {
safeCall(
call: () async => await chickenRepository.getRolesProducts(
call: () async => await commonRepository.getRolesProducts(
token: tokenService.accessToken.value!,
),
onSuccess: (result) {
@@ -191,7 +194,7 @@ class StewardRootLogic extends GetxController {
Future<void> getStewardSaleDashboard() async {
safeCall(
call: () async => await chickenRepository.getStewardSalesInfoDashboard(
call: () async => await stewardRepository.getStewardSalesInfoDashboard(
token: tokenService.accessToken.value!,
queryParameters: buildRawQueryParams(role: 'Steward'),
),
@@ -206,7 +209,7 @@ class StewardRootLogic extends GetxController {
Future<void> getStewardRemainWeightData() async {
safeCall(
call: () async => await chickenRepository.getStewardRemainWeight(
call: () async => await stewardRepository.getStewardRemainWeight(
token: tokenService.accessToken.value!,
),
onSuccess: (result) {

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/chicken.dart';
import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/routes/routes.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';

View File

@@ -1,19 +1,20 @@
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/request/conform_allocation/conform_allocation.dart';
import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/conform_allocation/conform_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/guild/guild_model.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_bar_dashboard/steward_free_bar_dashboard.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/root/logic.dart';
import 'package:rasadyar_core/core.dart';
class SaleLogic extends GetxController {
Rxn<List<AllocatedMadeModel>?> allocatedMadeModel = Rxn<List<AllocatedMadeModel>?>();
Rxn<List<AllocatedMadeModel>?> allocatedMadeModel =
Rxn<List<AllocatedMadeModel>?>();
RxList<GuildModel> guildsModel = <GuildModel>[].obs;
Rxn<StewardFreeBarDashboard> stewardFreeDashboard = Rxn<StewardFreeBarDashboard>();
Rxn<StewardFreeBarDashboard> stewardFreeDashboard =
Rxn<StewardFreeBarDashboard>();
StewardRootLogic rootLogic = Get.find<StewardRootLogic>();
@@ -24,14 +25,18 @@ class SaleLogic extends GetxController {
void onReady() {
super.onReady();
getStewardDashBord();
}
Future<void> getAllocatedMade() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getAllocatedMade(
call: () async => await rootLogic.stewardRepository.getAllocatedMade(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(page: 1, pageSize: 20, search: 'filter', role: 'Steward'),
queryParameters: buildQueryParams(
page: 1,
pageSize: 20,
search: 'filter',
role: 'Steward',
),
),
onSuccess: (result) {
if (result != null) {
@@ -46,7 +51,7 @@ class SaleLogic extends GetxController {
void confirmAllocation(ConformAllocation allocation) {
safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllocation(
call: () async => await rootLogic.stewardRepository.confirmAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocation: allocation.toJson(),
),
@@ -59,7 +64,7 @@ class SaleLogic extends GetxController {
void denyAllocation(String token) {
safeCall(
call: () async => await rootLogic.chickenRepository.denyAllocation(
call: () async => await rootLogic.stewardRepository.denyAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocationToken: token,
),
@@ -72,9 +77,10 @@ class SaleLogic extends GetxController {
Future<void> confirmAllAllocations() async {
safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllAllocation(
call: () async => await rootLogic.stewardRepository.confirmAllAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocationTokens: allocatedMadeModel.value?.map((e) => e.key!).toList() ?? [],
allocationTokens:
allocatedMadeModel.value?.map((e) => e.key!).toList() ?? [],
),
onSuccess: (result) {
getAllocatedMade();
@@ -83,7 +89,6 @@ class SaleLogic extends GetxController {
);
}
Future<void> getGuilds() async {}
Future<void> addSale() async {}
@@ -94,7 +99,7 @@ class SaleLogic extends GetxController {
Future<void> getStewardDashBord() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getStewardDashboard(
call: () async => await rootLogic.stewardRepository.getStewardDashboard(
token: rootLogic.tokenService.accessToken.value!,
stratDate: DateTime.now().formattedDashedGregorian,
endDate: DateTime.now().formattedDashedGregorian,
@@ -116,22 +121,20 @@ class SaleLogic extends GetxController {
super.dispose();
}
void onPopScopTaped() async {
final now = DateTime.now();
if (_lastBackPressed == null || now.difference(_lastBackPressed!) > Duration(seconds: 2)) {
_lastBackPressed = now;
Get.snackbar(
'خروج از برنامه',
'برای خروج دوباره بازگشت را بزنید',
snackPosition: SnackPosition.TOP,
duration: Duration(seconds: 2),
backgroundColor: AppColor.warning,
);
} else {
await SystemNavigator.pop();
}
final now = DateTime.now();
if (_lastBackPressed == null ||
now.difference(_lastBackPressed!) > Duration(seconds: 2)) {
_lastBackPressed = now;
Get.snackbar(
'خروج از برنامه',
'برای خروج دوباره بازگشت را بزنید',
snackPosition: SnackPosition.TOP,
duration: Duration(seconds: 2),
backgroundColor: AppColor.warning,
);
} else {
await SystemNavigator.pop();
}
}
}

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/steward_free_bar_dashboard/steward_free_bar_dashboard.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/widget/base_page/view.dart';

View File

@@ -1,14 +1,14 @@
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/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';
@@ -56,7 +56,8 @@ class SalesInProvinceLogic 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 +134,8 @@ class SalesInProvinceLogic 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 +158,8 @@ class SalesInProvinceLogic extends GetxController {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
allocatedList.value = Resource<PaginationModel<AllocatedMadeModel>>.loading();
allocatedList.value =
Resource<PaginationModel<AllocatedMadeModel>>.loading();
}
if (searchedValue.value != null &&
@@ -166,7 +169,7 @@ class SalesInProvinceLogic extends GetxController {
}
safeCall(
call: () async => await rootLogic.chickenRepository.getAllocatedMade(
call: () async => await rootLogic.stewardRepository.getAllocatedMade(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
page: currentPage.value,
@@ -181,18 +184,23 @@ class SalesInProvinceLogic 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();
@@ -208,10 +216,14 @@ class SalesInProvinceLogic 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,7 +236,7 @@ class SalesInProvinceLogic extends GetxController {
void confirmAllocation(ConformAllocation allocation) {
safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllocation(
call: () async => await rootLogic.stewardRepository.confirmAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocation: allocation.toJson(),
),
@@ -237,7 +249,7 @@ class SalesInProvinceLogic extends GetxController {
void denyAllocation(String token) {
safeCall(
call: () async => await rootLogic.chickenRepository.denyAllocation(
call: () async => await rootLogic.stewardRepository.denyAllocation(
token: rootLogic.tokenService.accessToken.value!,
allocationToken: token,
),
@@ -250,9 +262,11 @@ class SalesInProvinceLogic extends GetxController {
Future<void> confirmAllAllocations() async {
safeCall(
call: () async => await rootLogic.chickenRepository.confirmAllAllocation(
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,7 +277,7 @@ class SalesInProvinceLogic extends GetxController {
Future<void> getRolesProducts() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getRolesProducts(
call: () async => await rootLogic.commonRepository.getRolesProducts(
token: rootLogic.tokenService.accessToken.value!,
),
onSuccess: (result) {
@@ -278,7 +292,7 @@ class SalesInProvinceLogic extends GetxController {
Future<void> getGuilds() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getGuilds(
call: () async => await rootLogic.commonRepository.getGuilds(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
//queryParams: {'free': saleType.value == 2 ? true : false},
@@ -310,7 +324,7 @@ class SalesInProvinceLogic extends GetxController {
Future<void> getGuildProfile() async {
await safeCall(
call: () async => await rootLogic.chickenRepository.getProfile(
call: () async => await rootLogic.commonRepository.getProfile(
token: rootLogic.tokenService.accessToken.value!,
),
onError: (error, stackTrace) {},
@@ -326,13 +340,17 @@ class SalesInProvinceLogic 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,
@@ -346,16 +364,20 @@ class SalesInProvinceLogic 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) {},
@@ -364,10 +386,11 @@ class SalesInProvinceLogic 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},
),
call: () async =>
await rootLogic.stewardRepository.deleteStewardAllocation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: {'steward_allocation_key': model.key},
),
onSuccess: (result) {
getAllocatedMade();
@@ -391,7 +414,9 @@ class SalesInProvinceLogic 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;
@@ -425,16 +450,20 @@ class SalesInProvinceLogic 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) {},
@@ -473,14 +502,16 @@ class SalesInProvinceLogic extends GetxController {
Future<void> getBroadcastPrice() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getBroadcastPrice(
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;
}
},
@@ -492,7 +523,11 @@ class SalesInProvinceLogic 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,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/allocated_made/allocated_made.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sales_in_province/widgets/cu_sale_in_provience.dart';
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
import 'package:rasadyar_chicken/presentation/utils/string_utils.dart';

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sales_in_province/logic.dart';
import 'package:rasadyar_core/core.dart';

View File

@@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.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/data/models/response/steward_remain_weight/steward_remain_weight.dart';
import 'package:rasadyar_chicken/features/steward/data/model/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/broadcast_price/broadcast_price.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.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/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/features/steward/presentation/pages/sales_out_of_province_buyers/logic.dart';
@@ -18,9 +18,11 @@ class SalesOutOfProvinceLogic extends GetxController {
SaleLogic saleLogic = Get.find<SaleLogic>();
SalesOutOfProvinceSalesListLogic saleListLogic = Get.find<SalesOutOfProvinceSalesListLogic>();
SalesOutOfProvinceSalesListLogic saleListLogic =
Get.find<SalesOutOfProvinceSalesListLogic>();
SalesOutOfProvinceBuyersLogic buyerLogic = Get.find<SalesOutOfProvinceBuyersLogic>();
SalesOutOfProvinceBuyersLogic buyerLogic =
Get.find<SalesOutOfProvinceBuyersLogic>();
RxBool isExpanded = false.obs;
RxInt currentPage = 1.obs;
@@ -99,7 +101,8 @@ class SalesOutOfProvinceLogic 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(
@@ -135,7 +138,7 @@ class SalesOutOfProvinceLogic extends GetxController {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.loading();
}
await safeCall(
call: () => rootLogic.chickenRepository.getStewardFreeSaleBar(
call: () => rootLogic.stewardRepository.getStewardFreeSaleBar(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
@@ -150,16 +153,21 @@ class SalesOutOfProvinceLogic extends GetxController {
),
onSuccess: (res) {
if ((res?.count ?? 0) == 0) {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.empty();
salesList.value =
Resource<PaginationModel<StewardFreeSaleBar>>.empty();
} else {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.success(
PaginationModel<StewardFreeSaleBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(salesList.value.data?.results ?? []), ...(res?.results ?? [])],
),
);
salesList.value =
Resource<PaginationModel<StewardFreeSaleBar>>.success(
PaginationModel<StewardFreeSaleBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(salesList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
isLoadingMoreAllocationsMade.value = false;
}
@@ -173,7 +181,8 @@ class SalesOutOfProvinceLogic extends GetxController {
saleWeightController.addListener(() {
checkSalesFormValid();
weight.value = int.parse(saleWeightController.text.clearComma);
var res = (weight / selectedProduct.value!.weightAverage!.toInt()).round();
var res = (weight / selectedProduct.value!.weightAverage!.toInt())
.round();
saleCountController.text = res.separatedByComma;
});
ever(selectedBuyer, (_) => checkSalesFormValid);
@@ -192,7 +201,8 @@ class SalesOutOfProvinceLogic extends GetxController {
void setEditDataSales(StewardFreeSaleBar item) {
quarantineCodeController.text = item.clearanceCode ?? '';
saleWeightController.text = item.weightOfCarcasses?.toInt().toString() ?? '';
saleWeightController.text =
item.weightOfCarcasses?.toInt().toString() ?? '';
saleDate.value = Jalali.fromDateTime(DateTime.parse(item.date!));
selectedCity.value = IranProvinceCityModel(name: item.city);
selectedBuyer.value = buyerLogic.buyerList.value.data?.results?.firstWhere(
@@ -204,13 +214,15 @@ class SalesOutOfProvinceLogic extends GetxController {
quotaType.value = item.quota == 'governmental' ? 1 : 2;
isSaleSubmitButtonEnabled.value = true;
productionDate.value = item.productionDate.toJalali;
pricePerKiloController.text = pricePerKilo.value.toString().separatedByComma;
pricePerKiloController.text = pricePerKilo.value
.toString()
.separatedByComma;
totalCostController.text = totalCost.value.toString().separatedByComma;
}
Future<void> deleteStewardPurchaseOutOfProvince(String key) async {
await safeCall(
call: () => rootLogic.chickenRepository.deleteOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.deleteOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
key: key,
),
@@ -228,11 +240,13 @@ class SalesOutOfProvinceLogic extends GetxController {
productKey: selectedProduct.value?.key,
saleType: saleType.value == 2 ? 'free' : 'exclusive',
quota: quotaType.value == 1 ? 'governmental' : 'free',
productionDate: productionDate.value?.toDateTime().formattedDashedGregorian,
productionDate: productionDate.value
?.toDateTime()
.formattedDashedGregorian,
);
await safeCall(
showError: true,
call: () => rootLogic.chickenRepository.createOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.createOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
body: requestBody,
),
@@ -272,7 +286,7 @@ class SalesOutOfProvinceLogic extends GetxController {
key: key,
);
await safeCall(
call: () => rootLogic.chickenRepository.updateOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.updateOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
body: requestBody,
),
@@ -308,7 +322,7 @@ class SalesOutOfProvinceLogic extends GetxController {
);
await safeCall(
showError: true,
call: () => rootLogic.chickenRepository.updateOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.updateOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
body: requestBody,
),
@@ -348,7 +362,7 @@ class SalesOutOfProvinceLogic extends GetxController {
Future<void> getBroadcastPrice() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getBroadcastPrice(
call: () async => await rootLogic.commonRepository.getBroadcastPrice(
token: rootLogic.tokenService.accessToken.value!,
),
onSuccess: (result) {
@@ -375,7 +389,9 @@ class SalesOutOfProvinceLogic extends GetxController {
saleDate.value = Jalali.now();
Future.delayed(
Duration(milliseconds: 300),
() => defaultShowErrorMessage("تاریخ تولید نمی تواند قبل از تاریخ فروش باشد"),
() => defaultShowErrorMessage(
"تاریخ تولید نمی تواند قبل از تاریخ فروش باشد",
),
);
}
}

View File

@@ -1,9 +1,9 @@
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/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';

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/out_province_carcasses_buyer/out_province_carcasses_buyer.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/features/steward/presentation/pages/sales_out_of_province/logic.dart';
@@ -9,11 +9,12 @@ import 'package:rasadyar_chicken/presentation/utils/utils.dart';
import 'package:rasadyar_core/core.dart';
class SalesOutOfProvinceBuyersLogic extends GetxController {
StewardRootLogic rootLogic = Get.find<StewardRootLogic>();
StewardRootLogic rootLogic = Get.find<StewardRootLogic>();
SaleLogic get saleLogic => Get.find<SaleLogic>();
SalesOutOfProvinceLogic get saleOutOfProvince => Get.find<SalesOutOfProvinceLogic>();
SalesOutOfProvinceLogic get saleOutOfProvince =>
Get.find<SalesOutOfProvinceLogic>();
RxInt currentPage = 1.obs;
RxInt expandedListIndex = (-1).obs;
@@ -74,11 +75,14 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
super.onClose();
}
Future<void> getOutProvinceCarcassesBuyer([bool isLoadingMore = false]) async {
Future<void> getOutProvinceCarcassesBuyer([
bool isLoadingMore = false,
]) async {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
buyerList.value = Resource<PaginationModel<OutProvinceCarcassesBuyer>>.loading();
buyerList.value =
Resource<PaginationModel<OutProvinceCarcassesBuyer>>.loading();
}
if (searchedValue.value != null &&
@@ -88,7 +92,7 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
}
await safeCall(
call: () => rootLogic.chickenRepository.getOutProvinceCarcassesBuyer(
call: () => rootLogic.stewardRepository.getOutProvinceCarcassesBuyer(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
@@ -99,19 +103,25 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
value: searchedValue.value ?? '',
),
),
onError: (error, stackTrace) => isLoadingMoreAllocationsMade.value = false,
onError: (error, stackTrace) =>
isLoadingMoreAllocationsMade.value = false,
onSuccess: (res) {
if ((res?.count ?? 0) == 0) {
buyerList.value = Resource<PaginationModel<OutProvinceCarcassesBuyer>>.empty();
buyerList.value =
Resource<PaginationModel<OutProvinceCarcassesBuyer>>.empty();
} else {
buyerList.value = Resource<PaginationModel<OutProvinceCarcassesBuyer>>.success(
PaginationModel<OutProvinceCarcassesBuyer>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(buyerList.value.data?.results ?? []), ...(res?.results ?? [])],
),
);
buyerList.value =
Resource<PaginationModel<OutProvinceCarcassesBuyer>>.success(
PaginationModel<OutProvinceCarcassesBuyer>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(buyerList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
isLoadingMoreAllocationsMade.value = false;
}
@@ -130,8 +140,9 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
Future<void> getCites() async {
await safeCall(
call: () =>
rootLogic.chickenRepository.getCity(provinceName: selectedProvince.value?.name ?? ''),
call: () => rootLogic.commonRepository.getCity(
provinceName: selectedProvince.value?.name ?? '',
),
onSuccess: (result) {
if (result != null && result.isNotEmpty) {
cites.value = result;
@@ -175,7 +186,7 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
mobile: buyerPhoneController.text,
role: 'Steward',
);
await rootLogic.chickenRepository.createOutProvinceCarcassesBuyer(
await rootLogic.stewardRepository.createOutProvinceCarcassesBuyer(
token: rootLogic.tokenService.accessToken.value!,
body: buyer,
);
@@ -209,12 +220,12 @@ class SalesOutOfProvinceBuyersLogic extends GetxController {
getOutProvinceCarcassesBuyer();
}
Future<void> onRefresh() async {
currentPage.value = 1;
await rootLogic.onRefresh();
await getOutProvinceCarcassesBuyer();
}
void toggleExpansion({int? index}) {
if (expandedListIndex.value == index || index == null) {
expandedListIndex.value = -1;

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/out_province_carcasses_buyer/out_province_carcasses_buyer.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';

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.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/features/steward/data/model/request/steward_free_sale_bar/steward_free_sale_bar_request.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/iran_province_city/iran_province_city_model.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/pages/root/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sale/logic.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/sales_out_of_province_buyers/logic.dart';
@@ -15,7 +15,8 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
SaleLogic saleLogic = Get.find<SaleLogic>();
SalesOutOfProvinceBuyersLogic buyerLogic = Get.find<SalesOutOfProvinceBuyersLogic>();
SalesOutOfProvinceBuyersLogic buyerLogic =
Get.find<SalesOutOfProvinceBuyersLogic>();
RxInt selectedSegmentIndex = 0.obs;
RxBool isExpanded = false.obs;
@@ -32,12 +33,9 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
//TODO add this to Di
ImagePicker imagePicker = ImagePicker();
RxInt saleType = 1.obs;
RxInt quotaType = 1.obs;
GlobalKey<FormState> formKey = GlobalKey<FormState>();
TextEditingController quarantineCodeController = TextEditingController();
TextEditingController saleWeightController = TextEditingController();
@@ -82,7 +80,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.loading();
}
await safeCall(
call: () => rootLogic.chickenRepository.getStewardFreeSaleBar(
call: () => rootLogic.stewardRepository.getStewardFreeSaleBar(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
@@ -97,16 +95,21 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
),
onSuccess: (res) {
if ((res?.count ?? 0) == 0) {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.empty();
salesList.value =
Resource<PaginationModel<StewardFreeSaleBar>>.empty();
} else {
salesList.value = Resource<PaginationModel<StewardFreeSaleBar>>.success(
PaginationModel<StewardFreeSaleBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [...(salesList.value.data?.results ?? []), ...(res?.results ?? [])],
),
);
salesList.value =
Resource<PaginationModel<StewardFreeSaleBar>>.success(
PaginationModel<StewardFreeSaleBar>(
count: res?.count ?? 0,
next: res?.next,
previous: res?.previous,
results: [
...(salesList.value.data?.results ?? []),
...(res?.results ?? []),
],
),
);
isLoadingMoreAllocationsMade.value = false;
}
@@ -115,7 +118,6 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
}
void setupListeners() {
quarantineCodeController.addListener(checkSalesFormValid);
ever(selectedBuyer, (_) => checkSalesFormValid);
ever(selectedProduct, (_) => checkSalesFormValid);
@@ -133,7 +135,8 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
void setEditDataSales(StewardFreeSaleBar item) {
quarantineCodeController.text = item.clearanceCode ?? '';
saleWeightController.text = item.weightOfCarcasses?.toInt().toString() ?? '';
saleWeightController.text =
item.weightOfCarcasses?.toInt().toString() ?? '';
saleDate.value = Jalali.fromDateTime(DateTime.parse(item.date!));
selectedCity.value = IranProvinceCityModel(name: item.city);
selectedBuyer.value = buyerLogic.buyerList.value.data?.results?.firstWhere(
@@ -147,7 +150,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
Future<void> deleteStewardPurchaseOutOfProvince(String key) async {
//todo
/* await safeCall(
call: () => rootLogic.chickenRepository
call: () => rootLogic.commonRepository
.editStewardPurchasesOutSideOfTheProvince(
token: rootLogic.tokenService.accessToken.value!,
stewardFreeBarKey: key,
@@ -169,7 +172,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
productKey: selectedProduct.value?.key,
);
await safeCall(
call: () => rootLogic.chickenRepository.createOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.createOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
body: requestBody,
),
@@ -198,7 +201,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
key: key,
);
await safeCall(
call: () => rootLogic.chickenRepository.updateOutProvinceStewardFreeBar(
call: () => rootLogic.stewardRepository.updateOutProvinceStewardFreeBar(
token: rootLogic.tokenService.accessToken.value!,
body: requestBody,
),
@@ -214,6 +217,7 @@ class SalesOutOfProvinceSalesListLogic extends GetxController {
selectedProduct.value = null;
key = null;
}
void toggleExpansion({int? index}) {
if (expandedListIndex.value == index || index == null) {
expandedListIndex.value = -1;

View File

@@ -1,9 +1,9 @@
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/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_core/core.dart';

View File

@@ -1,10 +1,10 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.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/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/data/models/response/segmentation_model/segmentation_model.dart';
import 'package:rasadyar_chicken/data/models/response/steward_remain_weight/steward_remain_weight.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/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/segmentation_model/segmentation_model.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/presentation/utils/utils.dart';
import 'package:rasadyar_core/core.dart';
@@ -48,7 +48,10 @@ class SegmentationLogic extends GetxController {
void onInit() {
super.onInit();
routesName = ['قطعه‌بندی'].toList();
once(rootLogic.rolesProductsModel, (callback) => selectedProduct.value = callback.first);
once(
rootLogic.rolesProductsModel,
(callback) => selectedProduct.value = callback.first,
);
getAllSegmentation();
getGuilds();
@@ -65,7 +68,8 @@ class SegmentationLogic 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(
@@ -90,7 +94,6 @@ class SegmentationLogic extends GetxController {
setUpListener();
}
void setSearchValue(String? value) {
searchedValue.value = value?.trim();
}
@@ -134,14 +137,16 @@ class SegmentationLogic extends GetxController {
hasWeight &&
productionDate.value != null &&
weight > 0 &&
(segmentType.value == 1 || (segmentType.value == 2 && selectedGuildModel.value != null));
(segmentType.value == 1 ||
(segmentType.value == 2 && selectedGuildModel.value != null));
}
Future<void> getAllSegmentation([bool isLoadingMore = false]) async {
if (isLoadingMore) {
isLoadingMoreAllocationsMade.value = true;
} else {
segmentationList.value = Resource<PaginationModel<SegmentationModel>>.loading();
segmentationList.value =
Resource<PaginationModel<SegmentationModel>>.loading();
}
if (searchedValue.value != null &&
@@ -152,7 +157,7 @@ class SegmentationLogic extends GetxController {
await safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.getSegmentation(
call: () async => await rootLogic.commonRepository.getSegmentation(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(
pageSize: 20,
@@ -167,19 +172,21 @@ class SegmentationLogic extends GetxController {
onSuccess: (result) {
if ((result?.count ?? 0) == 0) {
segmentationList.value = Resource<PaginationModel<SegmentationModel>>.empty();
segmentationList.value =
Resource<PaginationModel<SegmentationModel>>.empty();
} else {
segmentationList.value = Resource<PaginationModel<SegmentationModel>>.success(
PaginationModel<SegmentationModel>(
count: result?.count ?? 0,
next: result?.next,
previous: result?.previous,
results: [
...(segmentationList.value.data?.results ?? []),
...(result?.results ?? []),
],
),
);
segmentationList.value =
Resource<PaginationModel<SegmentationModel>>.success(
PaginationModel<SegmentationModel>(
count: result?.count ?? 0,
next: result?.next,
previous: result?.previous,
results: [
...(segmentationList.value.data?.results ?? []),
...(result?.results ?? []),
],
),
);
isLoadingMoreAllocationsMade.value = false;
}
@@ -191,7 +198,7 @@ class SegmentationLogic extends GetxController {
await safeCall(
showError: true,
showSuccess: true,
call: () => rootLogic.chickenRepository.deleteSegmentation(
call: () => rootLogic.commonRepository.deleteSegmentation(
token: rootLogic.tokenService.accessToken.value!,
key: key,
),
@@ -202,12 +209,14 @@ class SegmentationLogic extends GetxController {
var res = true;
safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.editSegmentation(
call: () async => await rootLogic.commonRepository.editSegmentation(
token: rootLogic.tokenService.accessToken.value!,
model: SegmentationModel(
key: selectedSegment.value?.key,
weight: int.tryParse(weightController.text.clearComma) ?? 0,
productionDate: productionDate.value?.toDateTime().formattedDashedGregorian,
productionDate: productionDate.value
?.toDateTime()
.formattedDashedGregorian,
),
),
onSuccess: (result) {
@@ -230,14 +239,18 @@ class SegmentationLogic extends GetxController {
quota: quotaType.value == 1 ? 'governmental' : 'free',
);
if (segmentType.value == 2) {
segmentationModel = segmentationModel.copyWith(guildKey: selectedGuildModel.value?.key);
segmentationModel = segmentationModel.copyWith(
guildKey: selectedGuildModel.value?.key,
);
}
segmentationModel = segmentationModel.copyWith(
productionDate: productionDate.value?.toDateTime().formattedDashedGregorian,
productionDate: productionDate.value
?.toDateTime()
.formattedDashedGregorian,
);
await safeCall(
showError: true,
call: () async => await rootLogic.chickenRepository.createSegmentation(
call: () async => await rootLogic.commonRepository.createSegmentation(
token: rootLogic.tokenService.accessToken.value!,
model: segmentationModel,
),
@@ -260,9 +273,12 @@ class SegmentationLogic extends GetxController {
Future<void> getGuilds() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getGuilds(
call: () async => await rootLogic.commonRepository.getGuilds(
token: rootLogic.tokenService.accessToken.value!,
queryParameters: buildQueryParams(queryParams: {'all': true}, role: 'Steward'),
queryParameters: buildQueryParams(
queryParams: {'all': true},
role: 'Steward',
),
),
onSuccess: (result) {
if (result != null) {
@@ -286,7 +302,7 @@ class SegmentationLogic extends GetxController {
Future<void> getBroadcastPrice() async {
safeCall(
call: () async => await rootLogic.chickenRepository.getBroadcastPrice(
call: () async => await rootLogic.commonRepository.getBroadcastPrice(
token: rootLogic.tokenService.accessToken.value!,
),
onSuccess: (result) {

View File

@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/data/models/response/segmentation_model/segmentation_model.dart';
import 'package:rasadyar_chicken/features/steward/data/model/response/segmentation_model/segmentation_model.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/segmentation/widgets/cu_bottom_sheet.dart';
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
import 'package:rasadyar_chicken/presentation/widget/filter_bottom_sheet.dart';

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart';
import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/guild/guild_model.dart';
import 'package:rasadyar_chicken/features/common/data/model/response/roles_products/roles_products.dart';
import 'package:rasadyar_chicken/features/steward/presentation/pages/segmentation/logic.dart';
import 'package:rasadyar_core/core.dart';