import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'all_discharge_summary.dart';
import 'pending_discharge_summary.dart';

class DischargeSummaryPage extends StatefulWidget {
  final Function? changeCurrentTab;

  const DischargeSummaryPage({Key? key, this.changeCurrentTab})
      : super(key: key);

  @override
  _DoctorReplyScreenState createState() => _DoctorReplyScreenState();
}

class _DoctorReplyScreenState extends State<DischargeSummaryPage>
    with SingleTickerProviderStateMixin {
  late TabController _tabController;
  int _activeTab = 0;
  int pageIndex = 1;
  bool isVidaPlusProject = false;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 2, vsync: this);
    _tabController.addListener(_handleTabSelection);
  }

  @override
  void dispose() {
    super.dispose();
    _tabController.dispose();
  }

  _handleTabSelection() {
    setState(() {
      _activeTab = _tabController.index;
    });
  }

  @override
  Widget build(BuildContext context) {
    final screenSize = MediaQuery.of(context).size;
    final routeArgs = ModalRoute.of(context)!.settings.arguments as Map;
    PatiantInformtion patient = routeArgs['patient'];
    isVidaPlusProject = routeArgs['isVidaPlusProject'];

    return WillPopScope(
      onWillPop: () async {
        widget.changeCurrentTab!();
        return false;
      },
      child: AppScaffold(
        appBarTitle: TranslationBase.of(context).replay2,
        isShowAppBar: true,
        // appBarTitle: TranslationBase.of(context).progressNote,
        appBar: PatientProfileAppBar(
          patient,
          isInpatient: true,
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Expanded(
              child: Scaffold(
                extendBodyBehindAppBar: false,
                appBar: PreferredSize(
                  preferredSize: Size.fromHeight(
                      MediaQuery.of(context).size.height * 0.070),
                  child: Container(
                    height: MediaQuery.of(context).size.height * 0.070,
                    decoration: BoxDecoration(
                        border: Border(
                          bottom: BorderSide(
                              color: Theme.of(context).dividerColor,
                              width: 0.5), //width: 0.7
                        ),
                        color: Colors.white),
                    child: Center(
                      child: TabBar(
                        isScrollable: false,
                        controller: _tabController,
                        indicatorColor: Colors.transparent,
                        indicatorWeight: 1.0,
                        indicatorSize: TabBarIndicatorSize.tab,
                        labelColor: Theme.of(context).primaryColor,
                        labelPadding: EdgeInsets.only(
                            top: 0, left: 0, right: 0, bottom: 0),
                        unselectedLabelColor: Colors.grey[800],
                        tabs: [
                          tabWidget(
                            screenSize,
                            _activeTab == 0,
                            TranslationBase.of(context).pending,
                          ),
                          tabWidget(
                            screenSize,
                            _activeTab == 1,
                            TranslationBase.of(context).all,
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
                body: Column(
                  children: [
                    Expanded(
                      child: TabBarView(
                        physics: BouncingScrollPhysics(),
                        controller: _tabController,
                        children: [
                          PendingDischargeSummary(
                            patient: patient,
                            isVidaPlusProject: isVidaPlusProject,
                          ),
                          AllDischargeSummary(patient: patient, isVidaPlusProject: isVidaPlusProject,),
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Widget tabWidget(Size screenSize, bool isActive, String title,
    {int counter = -1}) {
  return Center(
    child: Container(
      height: screenSize.height * 0.070,
      decoration: TextFieldsUtils.containerBorderDecoration(
          isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA),
          isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA),
          borderRadius: 4,
          borderWidth: 0),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          AppText(
            title,
            fontSize: SizeConfig.textMultiplier! * 1.5,
            color: isActive ? Colors.white : Color(0xFF2B353E),
            fontWeight: FontWeight.w700,
          ),
          if (counter != -1)
            Container(
              margin: EdgeInsets.all(4),
              width: 15,
              height: 15,
              decoration: BoxDecoration(
                color: isActive ? Colors.white : Color(0xFFD02127),
                shape: BoxShape.circle,
              ),
              child: Center(
                child: FittedBox(
                  child: AppText(
                    "$counter",
                    fontSize: SizeConfig.textMultiplier! * 1.5,
                    color: !isActive ? Colors.white : Color(0xFFD02127),
                    fontWeight: FontWeight.w700,
                  ),
                ),
              ),
            ),
        ],
      ),
    ),
  );
}
