import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/hospitals/hospital_button.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';

class ProfilePage extends StatefulWidget {
  static final String id = "/user/profile";

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

class _ProfilePageState extends State<ProfilePage> {
  UserProvider _userProvider;
  SettingProvider _settingProvider;
  double _width;
  double _height;
  User _user = User();
  bool _firstTime = true;
  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    _userProvider = Provider.of<UserProvider>(context);
    _settingProvider = Provider.of<SettingProvider>(context);
    _width = MediaQuery.of(context).size.width;
    _height = MediaQuery.of(context).size.height;

    if (_firstTime) {
      _user = User.fromJson(_userProvider.user.toJson());
      _firstTime = false;
    }
    return Scaffold(
      key: _scaffoldKey,
      body: LoadingManager(
        isLoading: _userProvider.isLoading,
        isFailedLoading: false,
        stateCode: 200,
        onRefresh: () async {},
        child: SafeArea(
          child: Stack(
            children: [
              Form(
                key: _formKey,
                child: ListView(
                  children: [
                    //AppNameBar(),
                    Hero(
                      tag: "logo",
                      child: Image(
                        height: _height / 4,
                        image: AssetImage("assets/images/logo.png"),
                      ),
                    ),
                    Container(
                      padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
                      margin: EdgeInsets.symmetric(horizontal: 16),
                      decoration: BoxDecoration(color: AColors.primaryColor, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [
                        BoxShadow(
                          color: AColors.grey,
                          offset: Offset(0, -1),
                        )
                      ]),
                      child: Column(
                        children: [
                          ATextFormField(
                            initialValue: _user.userName,
                            hintText: context.translation.name,
                            enable: false,
                            prefixIconData: Icons.account_circle,
                            style: Theme.of(context).textTheme.headline6,
                            validator: (value) => Validator.hasValue(value) ? null : context.translation.nameValidateMessage,
                            onSaved: (value) {
                              _user.userName = value;
                            },
                          ),
                          SizedBox(
                            height: 8,
                          ),
                          ATextFormField(
                            initialValue: _user.email,
                            hintText: context.translation.email,
                            enable: false,
                            prefixIconData: Icons.email,
                            textInputType: TextInputType.emailAddress,
                            style: Theme.of(context).textTheme.headline6,
                            validator: (value) => Validator.isEmail(value) ? null : context.translation.emailValidateMessage,
                            onSaved: (value) {
                              _user.email = value;
                            },
                          ),
                          SizedBox(
                            height: 8,
                          ),
                          AbsorbPointer(
                            child: HospitalButton(
                              hospital: Hospital(name: _user.clientName, id: _user.clientId),
                              onHospitalPick: (hospital) {
                                _user.clientName = hospital.name;
                                _user.clientId = hospital.id;
                                setState(() {});
                              },
                            ),
                          ),
                          SizedBox(
                            height: 8,
                          ),
                          // DepartmentButton(
                          //   department: Department(name: _user.departmentName, id: _user.departmentId),
                          //   onDepartmentPick: (department) {
                          //     _user.departmentName = department.name;
                          //     _user.departmentId = department.id;
                          //     setState(() {});
                          //   },
                          // ),
                          SizedBox(
                            height: 8,
                          ),
                          ATextFormField(
                            initialValue: _user.phoneNumber,
                            hintText: context.translation.phoneNumber,
                            style: Theme.of(context).textTheme.headline6,
                            prefixIconData: Icons.phone_android,
                            validator: (value) => Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage,
                            textInputType: TextInputType.phone,
                            onSaved: (value) {
                              _user.phoneNumber = value;
                            },
                          ),
                          SizedBox(
                            height: 8,
                          ),
                          // ATextFormField(
                          //   initialValue: _user.whatsApp,
                          //   hintText: context.translation.whatsApp,
                          //   style: Theme.of(context).textTheme.headline6,
                          //   prefixIconData: FontAwesomeIcons.whatsapp,
                          //   prefixIconSize: 36,
                          //   validator: (value) =>
                          //   Validator.isPhoneNumber(value) ? null : context.translation.phoneNumberValidateMessage,
                          //   textInputType: TextInputType.phone,
                          //   onSaved: (value){
                          //     _user.whatsApp = value;
                          //   },
                          // ),
                        ],
                      ),
                    ),
                    SizedBox(
                      height: 16,
                    ),
                    Center(
                      child: SizedBox(
                        height: _width / 8,
                        width: _width / 1.2,
                        child: AButton(
                          text: context.translation.update,
                          onPressed: () async {
                            // if (!_formKey.currentState.validate()) return;
                            // _formKey.currentState.save();
                            // if (_user.departmentId == null) {
                            //   ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                            //     content: Text(context.translation.unitRequired),
                            //   ));
                            //   return;
                            // }
                            // int status = await _userProvider.updateProfile(
                            //   user: _user,
                            //   host: _settingProvider.host,
                            // );
                            // if (status >= 200 && status < 300) {
                            //   _settingProvider.setUser(_userProvider.user);
                            //   ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                            //     content: Text(context.translation.requestCompleteSuccessfully),
                            //   ));
                            // } else {
                            //   String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation);
                            //   ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                            //     content: Text(errorMessage),
                            //   ));
                            // }
                          },
                        ),
                      ),
                    ),
                    SizedBox(
                      height: 32,
                    ),
                  ],
                ),
              ),
              ABackButton(),
            ],
          ),
        ),
      ),
    );
  }
}
