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

import '../../../../../common/theme/theme.dart';

@RoutePage()
class NotificationPage extends StatelessWidget {
  const NotificationPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: AppColor.background,
      appBar: AppBar(
        title: Text(
          'Notifikasi',
          style: AppStyle.xl.copyWith(
            fontWeight: FontWeight.w600,
            color: AppColor.textPrimary,
          ),
        ),
        backgroundColor: AppColor.backgroundLight,
        elevation: 0,
        iconTheme: IconThemeData(color: AppColor.textPrimary),
        actions: [
          TextButton(
            onPressed: () => _markAllAsRead(context),
            child: Text(
              'Tandai Semua',
              style: AppStyle.sm.copyWith(
                color: AppColor.primary,
                fontWeight: FontWeight.w600,
              ),
            ),
          ),
        ],
        bottom: PreferredSize(
          preferredSize: Size.fromHeight(1),
          child: Container(height: 1, color: AppColor.borderLight),
        ),
      ),
      body: ListView(
        padding: EdgeInsets.symmetric(vertical: 8),
        children: [
          // Today Section
          _buildSectionHeader('Hari Ini'),
          _buildNotificationItem(
            icon: Icons.local_offer,
            iconColor: AppColor.primary,
            iconBgColor: AppColor.primaryWithOpacity(0.1),
            title: 'Voucher Baru Tersedia!',
            subtitle: 'Dapatkan diskon 50% untuk pembelian pertama Anda',
            time: '2 menit lalu',
            isUnread: true,
          ),
          _buildNotificationItem(
            icon: Icons.shopping_bag,
            iconColor: AppColor.success,
            iconBgColor: AppColor.successWithOpacity(0.1),
            title: 'Pesanan Sedang Dikirim',
            subtitle: 'Pesanan #ORD-2024-001 sedang dalam perjalanan',
            time: '1 jam lalu',
            isUnread: true,
          ),
          _buildNotificationItem(
            icon: Icons.payment,
            iconColor: AppColor.info,
            iconBgColor: AppColor.info.withOpacity(0.1),
            title: 'Pembayaran Berhasil',
            subtitle:
                'Pembayaran untuk pesanan #ORD-2024-001 telah dikonfirmasi',
            time: '3 jam lalu',
            isUnread: false,
          ),

          // Yesterday Section
          _buildSectionHeader('Kemarin'),
          _buildNotificationItem(
            icon: Icons.star,
            iconColor: AppColor.warning,
            iconBgColor: AppColor.warningWithOpacity(0.1),
            title: 'Berikan Rating Produk',
            subtitle: 'Bagaimana pengalaman Anda dengan produk yang dibeli?',
            time: '1 hari lalu',
            isUnread: false,
          ),
          _buildNotificationItem(
            icon: Icons.local_shipping,
            iconColor: AppColor.success,
            iconBgColor: AppColor.successWithOpacity(0.1),
            title: 'Pesanan Telah Diterima',
            subtitle: 'Pesanan #ORD-2024-002 telah sampai di tujuan',
            time: '1 hari lalu',
            isUnread: false,
          ),

          // This Week Section
          _buildSectionHeader('Minggu Ini'),
          _buildNotificationItem(
            icon: Icons.campaign,
            iconColor: AppColor.primary,
            iconBgColor: AppColor.primaryWithOpacity(0.1),
            title: 'Flash Sale 12.12!',
            subtitle: 'Jangan lewatkan flash sale dengan diskon hingga 70%',
            time: '3 hari lalu',
            isUnread: false,
          ),
          _buildNotificationItem(
            icon: Icons.card_giftcard,
            iconColor: AppColor.secondary,
            iconBgColor: AppColor.secondary.withOpacity(0.1),
            title: 'Poin Reward Ditambahkan',
            subtitle: 'Selamat! Anda mendapat 100 poin dari transaksi terakhir',
            time: '5 hari lalu',
            isUnread: false,
          ),
          _buildNotificationItem(
            icon: Icons.security,
            iconColor: AppColor.textSecondary,
            iconBgColor: AppColor.textSecondary.withOpacity(0.1),
            title: 'Keamanan Akun',
            subtitle: 'Login dari perangkat baru terdeteksi',
            time: '6 hari lalu',
            isUnread: false,
          ),

          SizedBox(height: 16),
        ],
      ),
    );
  }

  Widget _buildSectionHeader(String title) {
    return Padding(
      padding: EdgeInsets.fromLTRB(16, 16, 16, 8),
      child: Text(
        title,
        style: AppStyle.md.copyWith(
          fontWeight: FontWeight.w600,
          color: AppColor.textSecondary,
        ),
      ),
    );
  }

  Widget _buildNotificationItem({
    required IconData icon,
    required Color iconColor,
    required Color iconBgColor,
    required String title,
    required String subtitle,
    required String time,
    required bool isUnread,
  }) {
    return Container(
      margin: EdgeInsets.symmetric(horizontal: 16, vertical: 4),
      padding: EdgeInsets.all(16),
      decoration: BoxDecoration(
        color: isUnread
            ? AppColor.primary.withOpacity(0.02)
            : AppColor.backgroundLight,
        borderRadius: BorderRadius.circular(12),
        border: Border.all(
          color: isUnread
              ? AppColor.primary.withOpacity(0.1)
              : AppColor.borderLight,
        ),
      ),
      child: InkWell(
        onTap: () => _handleNotificationTap(title),
        borderRadius: BorderRadius.circular(12),
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // Icon Container
            Container(
              width: 48,
              height: 48,
              decoration: BoxDecoration(
                color: iconBgColor,
                borderRadius: BorderRadius.circular(12),
              ),
              child: Icon(icon, color: iconColor, size: 24),
            ),
            SizedBox(width: 12),

            // Content
            Expanded(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Row(
                    children: [
                      Expanded(
                        child: Text(
                          title,
                          style: AppStyle.md.copyWith(
                            fontWeight: FontWeight.w600,
                            color: AppColor.textPrimary,
                          ),
                        ),
                      ),
                      if (isUnread)
                        Container(
                          width: 8,
                          height: 8,
                          decoration: BoxDecoration(
                            color: AppColor.primary,
                            shape: BoxShape.circle,
                          ),
                        ),
                    ],
                  ),
                  SizedBox(height: 4),
                  Text(
                    subtitle,
                    style: AppStyle.sm.copyWith(
                      color: AppColor.textSecondary,
                      height: 1.4,
                    ),
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis,
                  ),
                  SizedBox(height: 8),
                  Text(
                    time,
                    style: AppStyle.xs.copyWith(color: AppColor.textLight),
                  ),
                ],
              ),
            ),

            // Options Menu
            IconButton(
              onPressed: () => _showNotificationOptions(title),
              icon: Icon(Icons.more_vert, color: AppColor.textLight, size: 20),
              constraints: BoxConstraints(),
              padding: EdgeInsets.all(4),
            ),
          ],
        ),
      ),
    );
  }

  void _markAllAsRead(BuildContext context) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(
          'Semua notifikasi ditandai sebagai dibaca',
          style: AppStyle.md.copyWith(color: AppColor.white),
        ),
        backgroundColor: AppColor.success,
        behavior: SnackBarBehavior.floating,
        margin: EdgeInsets.all(16),
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
      ),
    );
  }

  void _handleNotificationTap(String title) {
    // Handle notification tap - navigate to relevant page
    print('Notification tapped: $title');
  }

  void _showNotificationOptions(String title) {
    // Show bottom sheet or popup menu for notification options
    print('Show options for: $title');
  }
}
