import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart';

import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';

class GasRefillItemView extends StatelessWidget {
  final Data? requestData;
  final RequestsDetails? requestDetails;
  final bool showShadow;

  const GasRefillItemView({Key? key, this.requestDetails, this.requestData, this.showShadow = true}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    if (requestData != null) {

      return Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              // StatusLabel(
              //   label: requestData!.priorityName!,
              //   textColor: AppColor.getRequestStatusTextColorByName(context, requestData!.priorityName!),
              //   backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.priorityName!),
              // ),
              // 8.width,
              StatusLabel(
                label: requestData!.statusName!,
                textColor: AppColor.getRequestStatusTextColorByName(context, requestData!.statusName!),
                backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!),
              ),
              1.width.expanded,
              Text(requestData!.transactionDate?.toServiceRequestCardFormat ?? "",
                  textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)),
            ],
          ),
          8.height,
          (requestData?.typeTransaction ?? context.translation.gasRefillRequest).heading5(context),
          // '${context.translation.gasType}: ${request.gasType}'.bodyText(context), // todo ask ahmed
          // '${context.translation.site}: ${request.site?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),// todo ask ahmed
          '${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context),
          8.height,
          Row(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(
                context.translation.viewDetails,
                style: AppTextStyles.bodyText.copyWith(
                  color: AppColor.blueStatus(context),
                ),
              ),
              4.width,
              Icon(
                Icons.arrow_forward,
                color: AppColor.blueStatus(context),
                size: 14,
              )
            ],
          ),
        ],
      ).toShadowContainer(context, withShadow: showShadow).onPress(() {
        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (_) => GasRefillDetailsPage(
              priority: requestData!.priorityName,
              date: requestData!.transactionDate!,
              model: GasRefillModel(id: requestData!.id),
            ),
          ),
        );
      });
    }

    if (requestDetails != null) {
      return Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              // StatusLabel(
              //   label: requestDetails!.priority!,
              //   textColor: AppColor.getRequestStatusTextColorByName(context, requestDetails!.priority!),
              //   backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.priority!),
              // ),
              // 8.width,
              StatusLabel(
                label: requestDetails!.status!,
                textColor: AppColor.getRequestStatusTextColorByName(context, requestDetails!.status!),
                backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.status!),
              ),
              1.width.expanded,
              Text(requestDetails!.date?.toServiceRequestCardFormat ?? "",
                  textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)),
            ],
          ),
          8.height,
          (requestDetails?.nameOfType ?? context.translation.gasRefillRequest).heading5(context),
          8.height,
          '${context.translation.gasType}: ${requestDetails!.gasType}'.bodyText(context),
          '${context.translation.site}: ${requestDetails!.site?.cleanupWhitespace?.capitalizeFirstOfEach}'.bodyText(context),
          '${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context),
          8.height,
          Row(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(
                context.translation.viewDetails,
                style: AppTextStyles.bodyText.copyWith(
                  color: AppColor.blueStatus(context),
                ),
              ),
              4.width,
              Icon(
                Icons.arrow_forward,
                color: AppColor.blueStatus(context),
                size: 14,
              )
            ],
          ),
        ],
      ).toShadowContainer(context, withShadow: showShadow).onPress(() {
        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (_) => GasRefillDetailsPage(
              priority: requestDetails!.priority!,
              date: requestDetails!.date,
              model: GasRefillModel(id: requestDetails!.id),
            ),
          ),
        );
      });
    }

    return const  SizedBox();
  }
}
