Feat: done logic get data statistic for home porter

This commit is contained in:
orangdeso 2025-05-14 13:40:01 +07:00
parent 9e29e29a6b
commit 4436670550
1 changed files with 35 additions and 23 deletions

View File

@ -9,6 +9,7 @@ import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart'; import 'package:e_porter/_core/constants/typography.dart';
import 'package:e_porter/_core/service/preferences_service.dart'; import 'package:e_porter/_core/service/preferences_service.dart';
import 'package:e_porter/presentation/controllers/porter_queue_controller.dart'; import 'package:e_porter/presentation/controllers/porter_queue_controller.dart';
import 'package:e_porter/presentation/controllers/statistic_controller.dart';
import 'package:e_porter/presentation/screens/home/component/card_service_porter.dart'; import 'package:e_porter/presentation/screens/home/component/card_service_porter.dart';
import 'package:e_porter/presentation/screens/home/component/profile_avatar.dart'; import 'package:e_porter/presentation/screens/home/component/profile_avatar.dart';
import 'package:e_porter/presentation/screens/home/component/summary_card.dart'; import 'package:e_porter/presentation/screens/home/component/summary_card.dart';
@ -18,6 +19,7 @@ import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart'; import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../../../../_core/utils/snackbar/snackbar_helper.dart'; import '../../../../_core/utils/snackbar/snackbar_helper.dart';
@ -38,6 +40,8 @@ class _HomeScreenState extends State<HomeScreen> {
final CarouselSliderController _carouselController = CarouselSliderController(); final CarouselSliderController _carouselController = CarouselSliderController();
final TextEditingController _locationController = TextEditingController(); final TextEditingController _locationController = TextEditingController();
final _statisticController = Get.find<StatisticController>();
final List<Widget> imageList = [ final List<Widget> imageList = [
Container( Container(
child: Image.asset( child: Image.asset(
@ -120,7 +124,6 @@ class _HomeScreenState extends State<HomeScreen> {
return; return;
} }
// Periksa apakah ada porterOnline yang aktif
if (_porterQueueController.currentPorter.value == null) { if (_porterQueueController.currentPorter.value == null) {
SnackbarHelper.showError( SnackbarHelper.showError(
'Gagal', 'Gagal',
@ -129,13 +132,8 @@ class _HomeScreenState extends State<HomeScreen> {
return; return;
} }
// Dapatkan ID porter saat ini
final porterId = _porterQueueController.currentPorter.value!.id!; final porterId = _porterQueueController.currentPorter.value!.id!;
// Muat ulang data porter sebelum melakukan pengecekan (optional)
await _porterQueueController.loadCurrentPorter(validUserId); await _porterQueueController.loadCurrentPorter(validUserId);
// Gunakan metode cek kondisi yang diperbaiki
final canProceed = await _porterQueueController.checkConditionForPorter(porterId); final canProceed = await _porterQueueController.checkConditionForPorter(porterId);
if (!canProceed) { if (!canProceed) {
return; return;
@ -398,33 +396,47 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox(height: 16.h), SizedBox(height: 16.h),
Row( Row(
children: [ children: [
SummaryCard( Obx(
label: 'Pesanan Masuk', () => SummaryCard(
value: '1000000000000000000000', label: 'Pesanan Masuk',
icon: CustomeIcons.PlaneLeftOutline(), value: '${_statisticController.incoming.value}',
icon: CustomeIcons.PlaneLeftOutline(),
),
), ),
SizedBox(width: 16.w), SizedBox(width: 16.w),
SummaryCard( Obx(
label: 'Pesanan Berjalan', () => SummaryCard(
value: '1000000000000000000000', label: 'Pesanan Diproses',
icon: CustomeIcons.PlaneLeftOutline(), value: '${_statisticController.inProgress.value}',
icon: CustomeIcons.PlaneLeftOutline(),
),
) )
], ],
), ),
SizedBox(height: 16.w), SizedBox(height: 16.w),
Row( Row(
children: [ children: [
SummaryCard( Obx(
label: 'Pesanan Selesai', () => SummaryCard(
value: '1000000000000000000000', label: 'Pesanan Selesai',
icon: CustomeIcons.PlaneLeftOutline(), value: 'Rp ${_statisticController.completed.value}',
icon: CustomeIcons.PlaneLeftOutline(),
),
), ),
SizedBox(width: 16.w), SizedBox(width: 16.w),
SummaryCard( Obx(
label: 'Pendapatan', () {
value: 'Rp 500.000', final revenue = _statisticController.revenue.value;
icon: CustomeIcons.PlaneLeftOutline(), final formatted =
) NumberFormat.currency(locale: 'id_ID', symbol: 'Rp ', decimalDigits: 0)
.format(revenue);
return SummaryCard(
label: 'Pendapatan',
value: formatted,
icon: CustomeIcons.PlaneLeftOutline(),
);
},
),
], ],
), ),
SizedBox(height: 32.w), SizedBox(height: 32.w),