Untitled

 avatar
unknown
dart
7 months ago
18 kB
5
Indexable
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:takamol_user/app/app_ui.dart';
import 'package:takamol_user/app/enums/enums.dart';
import 'package:takamol_user/app/modules/hospitality/current_order/controllers/hospitality_current_order_controller.dart';
import 'package:takamol_user/app/modules/hospitality/current_order/widget/cancel_order_widget.dart';
import 'package:takamol_user/app/modules/hospitality/current_order/widget/current_order_list.dart';
import 'package:takamol_user/app/utils/functions/app_functions.dart';
import 'package:takamol_user/app/widgets/back_button_widget.dart';
import 'package:takamol_user/app/widgets/bottom_sheet.dart';
import 'package:takamol_user/app/widgets/takamol/main_taxt.dart';
import 'package:takamol_user/app/widgets/takamol/takamol_button.dart';
import 'package:takamol_user/resources/assets_svg_generated.dart';
import 'package:takamol_user/resources/strings_generated.dart';

class HospitalityCurrentOrder
    extends GetView<HospitalityCurrentOrderController> {
  final BottomSheetWidget bottomSheet = BottomSheetWidget();

  HospitalityCurrentOrder({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    HospitalityCurrentOrderController c = Get.find();
    print('object');
    print(c.restaurantOrder.status.toInt);
    final order = controller.restaurantOrder;

    return GetBuilder<HospitalityCurrentOrderController>(builder: (c) {
      return Scaffold(
        body: Stack(
          alignment: Alignment.bottomCenter,
          children: [
            Container(
              color: const Color(0xffFCF2E0),
              child: Align(
                alignment: Alignment.topCenter,
                child: Container(
                  padding: const EdgeInsets.all(60),
                  decoration: BoxDecoration(
                    shape: BoxShape.circle,
                    gradient: LinearGradient(
                      colors: [
                        appColors.whiteColor,
                        appColors.whiteColor.withOpacity(0.1),
                      ],
                      begin: Alignment.bottomCenter,
                      end: Alignment.topCenter,
                    ),
                  ),
                  child: AppSVGAssets.getWidget(
                    c.getOrderIcon(),
                    color: appColors.orange,
                    height: 60,
                  ),
                ),
              ).paddingOnly(top: 150),
            ),
            SafeArea(
              child: Align(
                alignment: Alignment.topRight,
                child: BackButtonWidget(
                  onTap: Get.back,
                  backgroundColor: appColors.whiteColor,
                  iconColor: appColors.blackColor,
                  svgIcon: 'assets/svgs/icons/home.svg',
                ),
              ),
            ).paddingSymmetric(horizontal: 20, vertical: 12),
            // WaitApproveStage(),
            // WaitDriverStage(),
            bottomSheet.bottomSheetWidget(
              Container(
                padding: const EdgeInsets.all(16),
                decoration: const BoxDecoration(
                  borderRadius: BorderRadius.vertical(
                    top: Radius.circular(25),
                  ),
                ),
                child: SingleChildScrollView(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          MainText(
                            text: c.getOrderType(),
                            fontSize: 14,
                          ),
                          if (c.restaurantOrder.serialNo != null) ...[
                            MainText(
                              text: '#${c.restaurantOrder.serialNo}',
                              fontSize: 14,
                            ),
                          ],
                        ],
                      ),
                      SizedBox(
                        height: 16.h,
                      ),
                      Container(
                        decoration: BoxDecoration(
                          color: appColors.lightGreyColor,
                          borderRadius: BorderRadius.circular(15),
                        ),
                        child: Padding(
                          padding: const EdgeInsets.all(16.0),
                          child: Row(
                            children: [
                              AppSVGAssets.getWidget(
                                'assets/svgs/icons/chef.svg',
                              ),
                              SizedBox(
                                width: 12.h,
                              ),
                              MainText(
                                text: c.restaurantOrder.waiter?.name ??
                                    AppStrings.waitingForOrderWaiter,
                              ),
                            ],
                          ),
                        ),
                      ),
                      SizedBox(
                        height: 16.h,
                      ),
                      if (c.restaurantOrder.status == OrderStatus.canceled) ...[
                        Center(
                          child: MainText(
                            text: AppStrings.canceledOrder,
                            fontSize: 16,
                            fontWeight: FontWeight.w600,
                            color: AppColors.instanse.red,
                          ),
                        ),
                        if (c.restaurantOrder.rejectedReason?.reason !=
                            null) ...[
                          SizedBox(
                            height: 6.h,
                          ),
                          Center(
                            child: MainText(
                              text: c.restaurantOrder.rejectedReason!.reason!,
                              fontSize: 16,
                            ),
                          ),
                        ],
                      ],
                      if (c.restaurantOrder.status != OrderStatus.canceled)
                        OrderStatusStepper(
                          orderStatus: c.restaurantOrder.status.toInt ?? 0,
                        ),
                      SizedBox(
                        height: 16.h,
                      ),
                      Container(
                        padding: const EdgeInsets.all(8),
                        decoration: BoxDecoration(
                          borderRadius: BorderRadius.circular(10),
                          border: Border.all(color: appColors.lightGreyColor),
                        ),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            if (c.restaurantOrder.status !=
                                OrderStatus.canceled) ...[
                              Row(
                                children: [
                                  Container(
                                    padding: const EdgeInsets.all(8),
                                    decoration: BoxDecoration(
                                      color: appColors.takamolgrey,
                                      shape: BoxShape.circle,
                                    ),
                                    child: AppSVGAssets.getWidget(
                                      'assets/svgs/icons/clock1.svg',
                                    ),
                                  ),
                                  SizedBox(
                                    width: 12.w,
                                  ),
                                  Column(
                                    crossAxisAlignment:
                                        CrossAxisAlignment.start,
                                    children: [
                                      MainText(
                                        text: AppStrings
                                            .expectedDateForOrderDelivery,
                                        color: appColors.mediumGreyColor,
                                        fontSize: 14,
                                      ),
                                      SizedBox(
                                        height: 4.h,
                                      ),
                                      MainText(
                                        text: c.getOrderEstimatedTime(),
                                        color: appColors.blackColor,
                                        fontSize: 14,
                                      ),
                                    ],
                                  ),
                                ],
                              ),
                              const Divider(
                                height: 24,
                              ),
                            ],
                            Row(
                              children: [
                                Container(
                                  padding: const EdgeInsets.all(8),
                                  decoration: BoxDecoration(
                                    color: appColors.takamolgrey,
                                    shape: BoxShape.circle,
                                  ),
                                  child: AppSVGAssets.getWidget(
                                    'assets/svgs/icons/marker.svg',
                                  ),
                                ),
                                SizedBox(
                                  width: 12.w,
                                ),
                                Column(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: [
                                    MainText(
                                      text: AppStrings.deliverOrderTo,
                                      color: appColors.mediumGreyColor,
                                      fontSize: 14,
                                    ),
                                    SizedBox(
                                      height: 4.h,
                                    ),
                                    FittedBox(
                                      child: MainText(
                                        text: controller.getOrderLocation(),
                                        color: appColors.blackColor,
                                        fontSize: 14,
                                      ),
                                    ),
                                  ],
                                ),
                              ],
                            ),
                          ],
                        ),
                      ),
                      if (c.restaurantOrder.items.isNotEmpty) ...[
                        SizedBox(
                          height: 16.h,
                        ),
                        CurrentOrderList(
                          items: c.restaurantOrder.items,
                        ),
                      ],
                      SizedBox(
                        height: 16.h,
                      ),
                      Builder(
                        builder: (context) {
                          if (c.restaurantOrder.status == OrderStatus.pending) {
                            return Column(
                              mainAxisSize: MainAxisSize.min,
                              children: [
                                TakamolButton(
                                  onPressed: () =>
                                      AppFunctions().openAppBottomSheet(
                                    title: AppStrings.cancelReason,
                                    horizontalPadding: 0,
                                    verticalPadding: 0,
                                    body: const CancelOrderWidget(),
                                  ),
                                  text: AppStrings.cancelOrder,
                                  width: Get.width,
                                  height: Get.width * 0.14,
                                  color: Colors.red.withOpacity(0.05),
                                  textColor: appColors.red,
                                  fontSize: 16,
                                  fontWeight: FontWeight.bold,
                                ),
                              ],
                            );
                          }
                          return const SizedBox();
                        },
                      ),
                    ],
                  ),
                ),
              ),
            ),
          ],
        ),
        // floatingActionButtonLocation: FloatingActionButtonLocation.miniCenterDocked,
        // floatingActionButton:
      );
    });
  }
}

// ignore: must_be_immutable
class OrderStatusStepper extends StatelessWidget {
  const OrderStatusStepper({
    super.key,
    required this.orderStatus,
  });

  final int orderStatus;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Builder(
              builder: (_) => orderStatus < 0
                  ? Transform.scale(
                      scale: 1.2,
                      child: AppSVGAssets.getWidget(
                          'assets/svgs/icons/grey_point.svg'),
                    )
                  : orderStatus == 0
                      ? Transform.scale(
                          scale: 1.2,
                          child: AppSVGAssets.getWidget(
                              'assets/svgs/icons/orange_point.svg'),
                        )
                      : orderStatus > 0
                          ? Transform.scale(
                              scale: 1.2,
                              child: AppSVGAssets.getWidget(
                                  'assets/svgs/icons/check.svg',
                                  width: 16),
                            )
                          : Transform.scale(
                              scale: 1.2,
                              child: AppSVGAssets.getWidget(
                                  'assets/svgs/icons/grey_point.svg'),
                            ),
            ),
            const Expanded(
              child: Divider(
                thickness: 1.5,
                color: Color(0xffECECEC),
              ),
            ),
            Builder(
              builder: (_) => orderStatus < 2
                  ? Transform.scale(
                      scale: 1.2,
                      child: AppSVGAssets.getWidget(
                          'assets/svgs/icons/grey_point.svg'),
                    )
                  : orderStatus == 2
                      ? Transform.scale(
                          scale: 1.2,
                          child: AppSVGAssets.getWidget(
                              'assets/svgs/icons/orange_point.svg'),
                        )
                      : orderStatus > 2
                          ? Transform.scale(
                              scale: 1.2,
                              child: AppSVGAssets.getWidget(
                                  'assets/svgs/icons/check.svg',
                                  width: 16),
                            )
                          : Transform.scale(
                              scale: 1.2,
                              child: AppSVGAssets.getWidget(
                                  'assets/svgs/icons/grey_point.svg'),
                            ),
            ),
            const Expanded(
              child: Divider(
                thickness: 1.5,
                color: Color(0xffECECEC),
              ),
            ),
            Builder(
              builder: (_) => orderStatus == 5
                  ? Transform.scale(
                      scale: 1.2,
                      child: AppSVGAssets.getWidget(
                          'assets/svgs/icons/check.svg',
                          width: 16),
                    )
                  : Transform.scale(
                      scale: 1.2,
                      child: AppSVGAssets.getWidget(
                          'assets/svgs/icons/grey_point.svg'),
                    ),
            ),
          ],
        ).paddingSymmetric(horizontal: 24),
        SizedBox(height: 8.h),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            MainText(
              text: AppStrings.pending,
              fontSize: 14,
            ),
            MainText(
              text: AppStrings.preparing,
              fontSize: 14,
            ),
            MainText(
              text: AppStrings.delivered,
              fontSize: 14,
            ),
          ],
        ),
      ],
    );
  }
}
Editor is loading...
Leave a Comment