import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/price_extension.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
import 'package:tm_app/views/detail/widgets/tender_detail_info_section.dart';

import '../../../core/constants/assets.dart';
import '../../shared/flag.dart';
import '../strings/tender_details_strings.dart';
import 'detail_drop_down.dart';

class TenderDetailHeader extends StatelessWidget {
  final bool isScreenBig;
  final TenderData detail;

  const TenderDetailHeader({
    required this.isScreenBig,
    required this.detail,
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.symmetric(horizontal: 16.0.w(), vertical: 16.0.h()),
      decoration: BoxDecoration(
        color: AppColors.backgroundColor,
        borderRadius: BorderRadius.circular(12),
        border: Border.all(width: 0.5, color: AppColors.grey50),
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          _titleText(),
          SizedBox(height: 4.0.h()),
          _nameText(),
          SizedBox(height: 4.0.h()),
          _idText(),
          SizedBox(height: 16.0.h()),
          _locationBudgetRow(),
          SizedBox(height: 24.0.h()),
          _projectId(),
          SizedBox(height: 12.0.h()),
          _winningChanceAndDificulty(),
          SizedBox(height: 24.0.h()),
          _keyRisksDropDown(),
          SizedBox(height: 24.0.h()),
          Divider(color: AppColors.grey20),
          TenderDetailInfoSection(isScreenBig: isScreenBig, detail: detail),
          SizedBox(height: 24.0.h()),
          _overViewTitle(),
          SizedBox(height: 12.0.h()),
          _descriptionText(),
          SizedBox(height: 24.0.h()),
          _serviceDropDown(),
          SizedBox(height: 24.0.h()),
          _requirementsDropDown(),
          SizedBox(height: 24.0.h()),
          _backgroundDropDown(),
        ],
      ),
    );
  }

  Widget _serviceDropDown() =>
      const DetailDropDown(title: 'Servive/Product', items: []);

  Widget _backgroundDropDown() =>
      const DetailDropDown(title: 'Background', items: []);

  Widget _requirementsDropDown() {
    return const DetailDropDown(
      title: 'Requirements (Summary)',
      items: [
        'Market consultation for selecting and procuring a Customer Data Platform (CDP) to unify student data from multiple sources and improve personalization and marketing.',
      ],
    );
  }

  Widget _descriptionText() {
    return Text(
      detail.description ?? '',
      style: TextStyle(
        color: AppColors.grey70,
        fontSize: 16.0.sp(),
        fontWeight: FontWeight.w400,
      ),
    );
  }

  Widget _overViewTitle() {
    return Text(
      'Overview',
      style: TextStyle(
        color: AppColors.grey80,
        fontSize: 16.0.sp(),
        fontWeight: FontWeight.w600,
      ),
    );
  }

  Widget _keyRisksDropDown() {
    return const DetailDropDown(
      title: 'Key risks & dealbreakers',
      items: [
        'ISO 27001:2022 likely mandatory for future tender.',
        'Lack of past performance — public sector values references.',
        'Implementation & ongoing support required (1–5 person team expectation).',
      ],
    );
  }

  Widget _winningChanceAndDificulty() {
    return Row(
      children: [
        Container(
          height: 24.0.h(),
          padding: EdgeInsets.symmetric(
            horizontal: 16.0.w(),
            vertical: 4.0.h(),
          ),
          decoration: BoxDecoration(
            color: AppColors.blue0,
            borderRadius: BorderRadius.circular(8),
          ),
          child: Text(
            'Winning chance: <5%',
            style: TextStyle(
              color: AppColors.blue10,
              fontSize: 12.0.sp(),
              fontWeight: FontWeight.w500,
            ),
          ),
        ),
        SizedBox(width: 12.0.w()),
        Container(
          height: 24.0.h(),
          padding: EdgeInsets.symmetric(
            horizontal: 16.0.w(),
            vertical: 4.0.h(),
          ),
          decoration: BoxDecoration(
            color: AppColors.blue0,
            borderRadius: BorderRadius.circular(8),
          ),
          child: Text(
            'Difficulty 2/5',
            style: TextStyle(
              color: AppColors.blue10,
              fontSize: 12.0.sp(),
              fontWeight: FontWeight.w500,
            ),
          ),
        ),
      ],
    );
  }

  Widget _projectId() {
    return Container(
      height: 24.0.h(),
      padding: EdgeInsets.symmetric(horizontal: 16.0.w(), vertical: 4.0.h()),
      decoration: BoxDecoration(
        color: AppColors.blue0,
        borderRadius: BorderRadius.circular(8),
      ),
      child: Text(
        'Project ID 6243372025NLD',
        style: TextStyle(
          color: AppColors.blue10,
          fontSize: 12.0.sp(),
          fontWeight: FontWeight.w500,
        ),
      ),
    );
  }

  Widget _locationBudgetRow() {
    return Row(
      children: [
        SvgPicture.asset(
          AssetsManager.location,
          height: 20.0.h(),
          width: 20.0.w(),
        ),
        SizedBox(width: 4.0.w()),
        Text(
          detail.countryCode ?? '',
          style: TextStyle(
            color: AppColors.grey70,
            fontSize: 14.0.sp(),
            fontWeight: FontWeight.w400,
          ),
        ),
        SizedBox(width: 8.0.w()),
        detail.countryCode != null
            ? Flag(countryCode: detail.countryCode!)
            : const Flag(countryCode: ''),
        const Spacer(),
        Container(
          height: 32.0.h(),
          padding: EdgeInsets.symmetric(horizontal: 16.0.w()),
          decoration: BoxDecoration(
            color: AppColors.grey30,
            borderRadius: BorderRadius.circular(8),
          ),
          alignment: Alignment.center,
          child: Text(
            '${detail.estimatedValue?.formattedPrice} ${detail.currency ?? ''}',
            style: TextStyle(
              color: AppColors.grey60,
              fontSize: 16.0.sp(),
              fontWeight: FontWeight.w600,
            ),
          ),
        ),
      ],
    );
  }

  Widget _idText() {
    return Text(
      '${TenderDetailsStrings.tenderIdLabel}: ${detail.tenderId}',
      style: TextStyle(
        color: AppColors.grey80,
        fontSize: 14.0.sp(),
        fontWeight: FontWeight.w400,
      ),
    );
  }

  Widget _nameText() {
    return Text(
      detail.buyerOrganization?.name ?? '',
      style: TextStyle(
        color: AppColors.grey80,
        fontSize: 14.0.sp(),
        fontWeight: FontWeight.w400,
      ),
    );
  }

  Widget _titleText() => Text(
    detail.title ?? '',
    style: TextStyle(
      color: AppColors.grey80,
      fontWeight: FontWeight.w600,
      fontSize: 18.0.sp(),
    ),
  );
}
