import 'package:hmg_patient_app/core/model/childvaccines/delete_baby_model.dart';
import 'package:hmg_patient_app/core/viewModels/child_vaccines/child_vaccines_view_model.dart';
import 'package:hmg_patient_app/pages/ChildVaccines/add_newchild_page.dart';
import 'package:hmg_patient_app/pages/ChildVaccines/vaccinationtable_page.dart';
import 'package:hmg_patient_app/pages/base/base_view.dart';
import 'package:hmg_patient_app/uitl/app_toast.dart';
import 'package:hmg_patient_app/uitl/date_uitl.dart';
import 'package:hmg_patient_app/uitl/translations_delegate_base.dart';
import 'package:hmg_patient_app/widgets/buttons/secondary_button.dart';
import 'package:hmg_patient_app/widgets/data_display/text.dart';
import 'package:hmg_patient_app/widgets/others/app_scaffold_widget.dart';
import 'package:hmg_patient_app/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ChildPage extends StatefulWidget {
  @override
  _ChildPageState createState() => _ChildPageState();
}

class _ChildPageState extends State<ChildPage> with SingleTickerProviderStateMixin {
  DeleteBaby deleteBaby = DeleteBaby();

  @override
  Widget build(BuildContext context) {
    var size = MediaQuery.of(context).size;
    final double height = (size.height - kToolbarHeight - 60);
    final double itemWidth = size.width / 2;
    final double itemHeight = height / 2 + 40;

    var checkedValue = true;
    return BaseView<ChildVaccinesViewModel>(
        onModelReady: (model) => model.getNewUserOrders(),
        builder: (_, model, widget) => AppScaffold(
              isShowAppBar: true,
              appBarTitle: TranslationBase.of(context).vaccination,
              baseViewModel: model,
              body: Container(
                height: height * 0.85,
                child: SingleChildScrollView(
                    child: Container(
                        margin: EdgeInsets.only(left: 8, right: 8, top: 16),
                        child: GridView.count(
                          crossAxisCount: 2,
                          childAspectRatio: (itemWidth / (itemHeight + 0)),
                          crossAxisSpacing: 10,
                          mainAxisSpacing: 10,
                          controller: ScrollController(keepScrollOffset: true),
                          shrinkWrap: true,
                          padding: const EdgeInsets.all(4.0),
                          children: [
                            ...List.generate(
                              model.babyInformationModelList.length,
                              (index) => InkWell(
                                onTap: () {
                                  Navigator.push(
                                    context,
                                    FadePage(
                                      page: VaccinationTablePage(model.babyInformationModelList[index]),
                                    ),
                                  );
                                },
                                child: Container(
                                  margin: EdgeInsets.only(left: 0, right: 0, bottom: 20),
                                  decoration: BoxDecoration(
                                    shape: BoxShape.rectangle,
                                    border: Border.all(color: Colors.white, width: 0.5),
                                    borderRadius: BorderRadius.all(Radius.circular(5)),
                                    color: Colors.white,
                                  ),
                                  padding: EdgeInsets.all(12),
                                  //double.infinity,
                                  child: Column(
                                    children: [
                                      Row(children: [
                                        Texts(TranslationBase.of(context).childName),
                                      ]),
                                      Row(children: [
                                        Texts(model.babyInformationModelList[index].babyName!.trim()),
                                      ]),
                                      Row(children: [
                                        IconButton(
                                          icon: Image.asset(model.babyInformationModelList[index].gender == 1 ? 'assets/images/new-design/male.png' : 'assets/images/new-design/female.png'),
                                          tooltip: '',
                                          onPressed: () {
                                            setState(() {
                                              //  _volume += 10;
                                              //  launch("tel://" +model.FindusHospitalModelList[index].phoneNumber);
                                            });
                                          },
                                        ),
                                        Texts(model.babyInformationModelList[index].genderDescription),
                                        IconButton(
                                          icon: Icon(
                                            Icons.remove_red_eye,
                                            color: Colors.red,
                                          ),
                                          tooltip: '',
                                          onPressed: () {
                                            Navigator.push(
                                              context,
                                              FadePage(
                                                page: VaccinationTablePage(model.babyInformationModelList[index]),
                                              ),
                                            );
                                          },
                                        )
                                      ]),
                                      Row(children: [
                                        Texts(TranslationBase.of(context).dob),
                                      ]),
                                      Row(children: [
                                        IconButton(
                                          icon: new Image.asset('assets/images/new-design/calender-secondary.png'),
                                          tooltip: '',
                                          onPressed: () {
                                            setState(() {});
                                          },
                                        ),
                                        Texts(DateUtil.yearMonthDay(model.babyInformationModelList[index].dOB!)),
                                      ]),
                                      Row(children: [
                                        IconButton(
                                          icon: new Image.asset('assets/images/new-design/garbage.png'),
                                          tooltip: '',
                                          onPressed: () async {
                                            //=====================
                                            await model.deleteBabyOrders(newChild: deleteBaby);

                                            deleteBaby.babyID = model.babyInformationModelList[index].babyID;

                                            await model.deleteBabyOrders(newChild: deleteBaby);
                                            if (model.isDeleted) {
                                              AppToast.showSuccessToast(message: TranslationBase.of(context).recordDeleted);
                                              Navigator.pop(context, model.isDeleted);
                                            } else {
                                              //TODO handling error
                                            }
                                          },
                                        ),
                                        Texts(TranslationBase.of(context).deleteView),
                                      ]),
                                      SizedBox(
                                        height: 12,
                                      ),
                                    ],
                                  ),
                                ),
                              ),
                            )
                          ],
                        ))),
              ),
              bottomSheet: Container(
                height: height * 0.15,
                width: double.infinity,
                padding: EdgeInsets.all(16),
                child: SecondaryButton(
                  textColor: Colors.white,
                  color: checkedValue == false
                      ? Colors.white24
                      : Color.fromRGBO(
                          63,
                          72,
                          74,
                          1,
                        ),
                  label: TranslationBase.of(context).addNewChild,
                  //
                  onTap: () {
                    Navigator.push(
                      context,
                      FadePage(
                        page: AddNewChildPage(),
                      ),
                    ).then((value) {
                      if (value) model.getNewUserOrders();
                    });
                  },
                ),
              ),
            ));
  }
}
