import 'package:doctor_app_flutter/core/viewModel/auth_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/screens/reschedule-leaves/add-rescheduleleave.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';

import '../../config/size_config.dart';
import '../../routes.dart';
import '../../util/dr_app_shared_pref.dart';
import '../../widgets/shared/drawer_item_widget.dart';
import '../../widgets/shared/rounded_container_widget.dart';
import 'app_texts_widget.dart';

DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();

// OWNER : Ibrahim albitar
// DATE : 06-04-2020
// DESCRIPTION : Custom App Drawer for app.

class AppDrawer extends StatefulWidget {
  @override
  _AppDrawerState createState() => _AppDrawerState();
}

class _AppDrawerState extends State<AppDrawer> {
  bool _isInit = true;
  Helpers helpers = new Helpers();
  ProjectViewModel projectsProvider;

  // @override
  // void didChangeDependencies() {
  //   super.didChangeDependencies();
  //   // if (_isInit) {
  //   getDocProfile(); // TODO: Refactor this code to prevent errors in the cosole.
  //   // }
  //   _isInit = false;
  // }

  @override
  Widget build(BuildContext context) {
    AuthViewModel authProvider = Provider.of(context);
    projectsProvider = Provider.of(context);
    return RoundedContainer(
      child: Container(
        color: Colors.white,
        // margin: EdgeInsets.only(top: SizeConfig.heightMultiplier * 2),
        child: Drawer(
            child: Column(children: <Widget>[
          Expanded(
            flex: 4,
            child: ListView(padding: EdgeInsets.zero, children: <Widget>[
              Container(
                height: SizeConfig.heightMultiplier * 50,
                child: InkWell(
                  child: DrawerHeader(
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: <Widget>[
                        Container(
                          child: Image.asset(
                            'assets/images/logo.png',
                          ),
                          margin: EdgeInsets.only(top: 10, bottom: 15),
                        ),
                        SizedBox(
                          height: 1,
                          child: Container(
                            color: Colors.black26,
                          ),
                        ),
                        SizedBox(height: 15),
                        InkWell(
                          onTap: () {
                            Navigator.of(context)
                                .pushNamed(PROFILE, arguments: {
                              'title': authProvider.doctorProfile.doctorName,
                              "doctorProfileall": authProvider.doctorProfile
                            });
                          },
                          child: Column(
                            children: [
                              authProvider.doctorProfile != null
                                  ? CircleAvatar(
                                      radius:
                                          SizeConfig.imageSizeMultiplier * 12,
                                      //     radius: (52)
                                      child: ClipRRect(
                                        borderRadius: BorderRadius.circular(50),
                                        child: Image.network(
                                          authProvider
                                              .doctorProfile.doctorImageURL,
                                          fit: BoxFit.fill,
                                          width: 700,
                                        ),
                                      ),
                                      backgroundColor: Colors.transparent,
                                    )
                                  : SizedBox(),
                              authProvider.doctorProfile != null
                                  ? Padding(
                                      padding: EdgeInsets.only(top: 10),
                                      child: AppText(
                                        TranslationBase.of(context).dr +
                                            authProvider
                                                .doctorProfile?.doctorName,
                                        fontWeight: FontWeight.bold,
                                        color: Colors.black,
                                        fontSize: SizeConfig.textMultiplier * 2,
                                      ))
                                  : SizedBox(),
                            ],
                          ),
                        ),
                        RaisedButton(
                          shape: RoundedRectangleBorder(
                              borderRadius: BorderRadius.circular(18.0),
                              side: BorderSide(color: Colors.red)),
                          child: AppText(
                            TranslationBase.of(context).logout,
                            color: Colors.white,
                          ),
                          onPressed: () async {
                            Navigator.pop(context);
                            await helpers.logout();
                          },
                        ),
                      ],
                    ),
                  ),
                ),
              ),
              InkWell(
                child: DrawerItem(
                    TranslationBase.of(context).settings, Icons.settings),
                onTap: () {
                  Navigator.pop(context);
                  Navigator.of(context).pushNamed(SETTINGS);
                },
              ),
              InkWell(
                child: DrawerItem(
                  TranslationBase.of(context).reschedule,
                  DoctorApp.leaves,
                  subTitle: TranslationBase.of(context).leaves,
                ),
                onTap: () {
                  Navigator.pop(context);

                  Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => AddRescheduleLeavScreen(),
                        // MyReferredPatient(),
                      ));
                },
              ),
              InkWell(
                child: DrawerItem(
                    TranslationBase.of(context).qr +
                        TranslationBase.of(context).reader,
                    DoctorApp.qr_code),
                onTap: () {
                  Navigator.pop(context);
                  Navigator.of(context).pushNamed(QR_READER);
                },
              ),
            ]),
          ),
          Expanded(
              flex: 1,
              child: Column(children: <Widget>[
                Container(
                    // This align moves the children to the bottom
                    child: Align(
                        alignment: FractionalOffset.bottomCenter,
                        child: Container(
                            child: Column(
                          children: <Widget>[
                            Text("Powered by"),
                            Image.asset(
                              'assets/images/cs_logo_container.png',
                              width: SizeConfig.imageSizeMultiplier * 30,
                            )
                          ],
                        ))))
              ]))
        ])),
      ),
      width: SizeConfig.realScreenWidth * 0.60,
      margin: 0,

      customCornerRaduis: false,
      // topRight: 30,
      // bottomRight: 30,
      backgroundColor: Colors.white,
    );
  }

  drawerNavigator(context, routeName) {
    Navigator.of(context).pushNamed(routeName);
  }
}
