import 'package:flutter/material.dart';
import 'package:p_tits_pas/models/m_dashbord/assistant_model.dart';
import 'package:p_tits_pas/models/m_dashbord/child_model.dart';
import 'package:p_tits_pas/models/m_dashbord/contract_model.dart';
import 'package:p_tits_pas/models/m_dashbord/event_model.dart';

class MainContentArea extends StatelessWidget {
  final ChildModel? selectedChild;
  final AssistantModel? selectedAssistant;
  final List<EventModel> events;
  final List<ContractModel> contracts;
  final bool showOnlyCalendar;
  final bool showOnlyContracts;

  const MainContentArea({
    Key? key,
    this.selectedChild,
    this.selectedAssistant,
    required this.events,
    required this.contracts,
    this.showOnlyCalendar = false,
    this.showOnlyContracts = false,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(24),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          if (!showOnlyCalendar && !showOnlyContracts) ...[
            if (selectedAssistant != null) _buildAssistantProfile(),
            const SizedBox(height: 24),
          ],
          
          if (showOnlyContracts || (!showOnlyCalendar && !showOnlyContracts)) ...[
            _buildContractsSection(),
            if (!showOnlyContracts) const SizedBox(height: 24),
          ],
          
          if (showOnlyCalendar || (!showOnlyCalendar && !showOnlyContracts)) ...[
            Expanded(child: _buildCalendarSection()),
          ],
        ],
      ),
    );
  }

  Widget _buildAssistantProfile() {
    if (selectedAssistant == null) {
      return _buildSearchAssistantCard();
    }

    return Container(
      width: double.infinity,
      padding: const EdgeInsets.all(20),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(12),
        boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.1),
            spreadRadius: 1,
            blurRadius: 6,
            offset: const Offset(0, 2),
          ),
        ],
      ),
      child: Row(
        children: [
          Container(
            width: 80,
            height: 80,
            decoration: BoxDecoration(
              color: const Color(0xFF9CC5C0),
              borderRadius: BorderRadius.circular(12),
            ),
            child: const Icon(
              Icons.person,
              color: Colors.white,
              size: 40,
            ),
          ),
          const SizedBox(width: 20),
          Expanded(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  selectedAssistant!.fullName,
                  style: const TextStyle(
                    fontSize: 18,
                    fontWeight: FontWeight.w600,
                  ),
                ),
                const SizedBox(height: 8),
                Row(
                  children: [
                    Text(
                      'Taux horaire : ${selectedAssistant!.hourlyRateFormatted}',
                      style: const TextStyle(
                        fontSize: 14,
                        color: Colors.grey,
                      ),
                    ),
                    const SizedBox(width: 20),
                    Text(
                      'Frais journaliers : ${selectedAssistant!.dailyFeesFormatted}',
                      style: const TextStyle(
                        fontSize: 14,
                        color: Colors.grey,
                      ),
                    ),
                  ],
                ),
              ],
            ),
          ),
          ElevatedButton(
            onPressed: () {
              // TODO: Navigation vers le contrat
            },
            style: ElevatedButton.styleFrom(
              backgroundColor: const Color(0xFF9CC5C0),
              foregroundColor: Colors.white,
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(8),
              ),
            ),
            child: const Text('Voir le contrat'),
          ),
        ],
      ),
    );
  }

  Widget _buildSearchAssistantCard() {
    return Container(
      width: double.infinity,
      padding: const EdgeInsets.all(20),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(12),
        border: Border.all(color: Colors.grey.shade300),
      ),
      child: Column(
        children: [
          Icon(
            Icons.search,
            size: 48,
            color: Colors.grey.shade400,
          ),
          const SizedBox(height: 16),
          const Text(
            'Aucune assistante maternelle assignée',
            style: TextStyle(
              fontSize: 16,
              fontWeight: FontWeight.w500,
            ),
          ),
          const SizedBox(height: 8),
          Text(
            'Trouvez une assistante maternelle pour votre enfant',
            style: TextStyle(
              fontSize: 14,
              color: Colors.grey.shade600,
            ),
          ),
          const SizedBox(height: 16),
          ElevatedButton(
            onPressed: () {
              // TODO: Navigation vers la recherche
            },
            style: ElevatedButton.styleFrom(
              backgroundColor: const Color(0xFF9CC5C0),
              foregroundColor: Colors.white,
            ),
            child: const Text('Rechercher une assistante maternelle'),
          ),
        ],
      ),
    );
  }

  Widget _buildCalendarSection() {
    return Container(
      padding: const EdgeInsets.all(20),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(12),
        boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.1),
            spreadRadius: 1,
            blurRadius: 6,
            offset: const Offset(0, 2),
          ),
        ],
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(
                'Planning de garde pour ${selectedChild?.firstName ?? "votre enfant"}',
                style: const TextStyle(
                  fontSize: 18,
                  fontWeight: FontWeight.w600,
                ),
              ),
              TextButton(
                onPressed: () {
                  // TODO: Mode sélection de plage
                },
                child: const Text('Mode sélection de plage'),
              ),
            ],
          ),
          const SizedBox(height: 20),
          Expanded(
            child: _buildCalendar(),
          ),
        ],
      ),
    );
  }

  Widget _buildCalendar() {
    // Placeholder pour le calendrier - sera développé dans FRONT-11
    return const Center(
      child: Text(
        'Calendrier à implémenter\n(FRONT-11)',
        textAlign: TextAlign.center,
        style: TextStyle(
          fontSize: 16,
          color: Colors.grey,
        ),
      ),
    );
  }

  Widget _buildContractsSection() {
    return Container(
      padding: const EdgeInsets.all(20),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(12),
        boxShadow: [
          BoxShadow(
            color: Colors.grey.withOpacity(0.1),
            spreadRadius: 1,
            blurRadius: 6,
            offset: const Offset(0, 2),
          ),
        ],
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          const Text(
            'Contrats',
            style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.w600,
            ),
          ),
          const SizedBox(height: 16),
          if (contracts.isEmpty)
            const Text(
              'Aucun contrat en cours',
              style: TextStyle(color: Colors.grey),
            )
          else
            ...contracts.map((contract) => _buildContractItem(contract)),
        ],
      ),
    );
  }

  Widget _buildContractItem(ContractModel contract) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 8),
      child: Row(
        children: [
          Container(
            width: 12,
            height: 12,
            decoration: BoxDecoration(
              color: _getContractStatusColor(contract.status),
              borderRadius: BorderRadius.circular(6),
            ),
          ),
          const SizedBox(width: 12),
          Expanded(
            child: Text(contract.statusLabel),
          ),
          if (contract.needsSignature)
            TextButton(
              onPressed: () {
                // TODO: Action signature
              },
              child: const Text('Signer'),
            ),
        ],
      ),
    );
  }

  Color _getContractStatusColor(ContractStatus status) {
    switch (status) {
      case ContractStatus.draft:
        return Colors.grey;
      case ContractStatus.pending:
        return Colors.orange;
      case ContractStatus.active:
        return Colors.green;
      case ContractStatus.ended:
        return Colors.blue;
      case ContractStatus.cancelled:
        return Colors.red;
    }
  }
}