import 'package:flutter/material.dart';

import '../../../../common/theme/theme.dart';
import '../../../components/spacer/spacer.dart';
import '../customer_page.dart';

class CustomerTile extends StatelessWidget {
  final Customer customer;
  const CustomerTile({super.key, required this.customer});

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.symmetric(horizontal: AppValue.margin, vertical: 6),
      decoration: BoxDecoration(
        color: AppColor.white,
        borderRadius: BorderRadius.circular(12),
        boxShadow: [
          BoxShadow(
            color: Colors.black.withOpacity(0.05),
            blurRadius: 10,
            offset: Offset(0, 2),
          ),
        ],
      ),
      child: ListTile(
        contentPadding: EdgeInsets.all(16),
        leading: CircleAvatar(
          backgroundColor: _getMembershipColor(customer.membershipLevel),
          child: Text(
            customer.name[0].toUpperCase(),
            style: AppStyle.sm.copyWith(
              color: AppColor.white,
              fontWeight: FontWeight.bold,
            ),
          ),
        ),
        title: Text(
          customer.name,
          style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold),
        ),
        subtitle: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            SpaceHeight(4),
            Text(customer.email),
            SpaceHeight(2),
            Text(customer.phone),
            SpaceHeight(4),
            Row(
              children: [
                Container(
                  padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
                  decoration: BoxDecoration(
                    color: _getMembershipColor(
                      customer.membershipLevel,
                    ).withOpacity(0.1),
                    borderRadius: BorderRadius.circular(12),
                  ),
                  child: Text(
                    customer.membershipLevel,
                    style: AppStyle.sm.copyWith(
                      color: _getMembershipColor(customer.membershipLevel),
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                SpaceWidth(8),
                Container(
                  padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
                  decoration: BoxDecoration(
                    color: customer.isActive
                        ? AppColor.success.withOpacity(0.1)
                        : AppColor.error.withOpacity(0.1),
                    borderRadius: BorderRadius.circular(12),
                  ),
                  child: Text(
                    customer.isActive ? 'Active' : 'Inactive',
                    style: AppStyle.sm.copyWith(
                      color: customer.isActive
                          ? AppColor.success
                          : AppColor.error,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
        trailing: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.end,
          children: [
            Text(
              'Rp ${customer.totalPurchases.toStringAsFixed(0)}',
              style: AppStyle.md.copyWith(
                fontWeight: FontWeight.bold,
                color: AppColor.primary,
              ),
            ),
            Text(
              '${customer.totalOrders} orders',
              style: AppStyle.sm.copyWith(color: AppColor.textSecondary),
            ),
          ],
        ),
        onTap: () {},
      ),
    );
  }

  Color _getMembershipColor(String level) {
    switch (level) {
      case 'Platinum':
        return Color(0xFF9C27B0);
      case 'Gold':
        return Color(0xFFFF9800);
      case 'Silver':
        return Color(0xFF607D8B);
      case 'Bronze':
        return Color(0xFF795548);
      default:
        return AppColor.primary;
    }
  }
}
