import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

import '../../configs/configs.dart';
import '../../core/core.dart';
import '../../domain/domain.dart';
import 'vertical_line.dart';

final infoStyle = AppText.b2b!.copyWith(
  color: const Color(0xFF57575C),
  fontSize: 16,
);

class OrderCard extends StatelessWidget {
  final OrderEntity order;

  const OrderCard({required this.order, super.key});

  @override
  Widget build(BuildContext context) {
    return Card(
      color: Colors.white,
      margin: Space.all(.8, 0.5),
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            /// Track number
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(
                  '№ ${order.no}',
                  style: AppText.b1b,
                ),
                GestureDetector(
                  onTap: () {
                    Navigator.of(context).pushNamed(
                      AppRouter.orderDetails,
                      arguments: order,
                    );
                  },
                  child: Text(
                    '${'order_details'.tr()} >',
                    style: AppText.b1b?.copyWith(
                      color: AppColors.primary,
                    ),
                  ),
                ),
              ],
            ),

            /// gap
            Space.yf(0.5),

            /// status bar
            Row(
              children: [
                const Icon(Icons.circle, color: AppColors.green, size: 12),
                const SizedBox(width: 4),
                Text(
                  order.state.tr(),
                  style: AppText.b2b!.copyWith(
                    color: AppColors.grey,
                  ),
                ),
                const Spacer(),
                /* Text(
                  '${'order_sent'.tr()}: ${order.departedAt}',
                  style: AppText.b2b!.copyWith(
                    color: AppColors.grey,
                  ),
                ), */

                RichText(
                  text: TextSpan(
                    text: '${'order_sent'.tr()}: ',
                    style: AppText.b2b!.copyWith(
                      color: AppColors.grey,
                    ),
                    children: [
                      TextSpan(
                        text: order.departedAt,
                        style: AppText.b2b!.copyWith(
                          color: const Color(0xFF57575C),
                          fontWeight: FontWeight.bold,
                          fontSize: 15,
                        ),
                      ),
                    ],
                  ),
                ),
              ],
            ),

            /// gap
            Space.y!,
            const Divider(),
            Space.y!,

            /// info bar
            Row(
              children: [
                Expanded(
                  flex: 2,
                  child: Row(
                    children: [
                      /// vertical status line
                      Container(
                        width: AppDimensions.normalize(15),
                        alignment: Alignment.topLeft,
                        child: VerticalLine(
                          width: AppDimensions.normalize(1),
                          height: AppDimensions.normalize(2.5),
                          topColor: AppColors.green,
                          bottomColor: order.state == GoodsState.Delivered.name ? AppColors.green : AppColors.grey,
                        ),
                      ),

                      /// info
                      Expanded(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Text(
                              '${'order_from_card'.tr()}:',
                              style: AppText.b2b!.copyWith(
                                color: AppColors.grey,
                              ),
                            ),
                            Text(
                              order.from,
                              style: infoStyle,
                              maxLines: 2,
                              overflow: TextOverflow.ellipsis,
                            ),
                            const SizedBox(height: 8),
                            Text(
                              '${'order_to_card'.tr()}:',
                              style: AppText.b2b!.copyWith(
                                color: AppColors.grey,
                              ),
                            ),
                            Text(
                              order.to,
                              style: infoStyle,
                              maxLines: 2,
                              overflow: TextOverflow.ellipsis,
                            ),
                          ],
                        ),
                      ),
                    ],
                  ),
                ),
                // const Spacer(flex: 1),
                Expanded(
                  flex: 1,
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        '${'order_placement_count'.tr()}:',
                        style: AppText.b2b!.copyWith(
                          color: AppColors.grey,
                        ),
                      ),
                      Text(
                        order.placesCount.toString(),
                        style: infoStyle,
                      ),
                      const SizedBox(height: 8),
                      Text(
                        '${'order_dimensions'.tr()}:',
                        style: AppText.b2b!.copyWith(
                          color: AppColors.grey,
                        ),
                      ),
                      Text(
                        order.volume.toString(),
                        style: infoStyle,
                      ),
                    ],
                  ),
                ),
                // const Spacer(flex: 1),
                Expanded(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        '${'order_carrier'.tr()}:',
                        style: AppText.b2b!.copyWith(
                          color: AppColors.grey,
                        ),
                      ),
                      Text(
                        order.carrier,
                        style: AppText.b2b!.copyWith(
                          color: const Color(0xFF57575C),
                        ),
                      ),
                      const SizedBox(height: 8),
                      Text(
                        '${'order_shop'.tr()}:',
                        style: AppText.b2b!.copyWith(
                          color: AppColors.grey,
                        ),
                      ),
                      Text(
                        order.shopNo,
                        style: infoStyle,
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
