import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/InsuranceViewModel.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/patients/insurance_approvals_details.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.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/doctor_card.dart';
import 'package:doctor_app_flutter/widgets/shared/doctor_card_insurance.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import '../base/base_view.dart';

class InsuranceApprovalScreenNew extends StatefulWidget {
  final int appointmentNo;

  InsuranceApprovalScreenNew({this.appointmentNo});

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

class _InsuranceApprovalScreenNewState
    extends State<InsuranceApprovalScreenNew> {
  @override
  Widget build(BuildContext context) {
    ProjectViewModel projectViewModel = Provider.of(context);
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    PatiantInformtion patient = routeArgs['patient'];
    patient = routeArgs['patient'];
    String patientType = routeArgs['patientType'];

    return BaseView<InsuranceViewModel>(
      onModelReady: patient.appointmentNo != null
          ? (model) => model.getInsuranceApproval(patient,
              appointmentNo: patient.appointmentNo)
          : (model) => model.getInsuranceApproval(patient),
      builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
          AppScaffold(
        appBar: PatientProfileHeaderNewDesignAppBar(
            patient, patientType.toString() ?? "0", patientType),
        isShowAppBar: true,
        baseViewModel: model,
        appBarTitle: TranslationBase.of(context).approvals,
        body: SingleChildScrollView(
          child: Container(
              margin: EdgeInsets.only(
                left: SizeConfig.screenWidth * 0.004,
                right: SizeConfig.screenWidth * 0.004,
                top: SizeConfig.screenWidth * 0.04,
              ),
              child: model.insuranceApproval.length != 0
                  ? Column(
                      children: <Widget>[
                        // Container(
                        //     width: double.infinity,
                        //     height: SizeConfig.screenHeight * 0.09,
                        //     color: Color(0xffEEEEEE),
                        //     child: Row(
                        //       mainAxisAlignment: MainAxisAlignment.spaceAround,
                        //       children: <Widget>[
                        //         Texts(
                        //           TranslationBase.of(context).totalApproval,
                        //           color: Color(0xff60688B),
                        //           fontSize: 19.0,
                        //           fontWeight: FontWeight.w600,
                        //         ),
                        //         if (model.insuranceApproval.length > 0)
                        //           Container(
                        //               width: 60,
                        //               height: 40,
                        //               decoration: BoxDecoration(
                        //                   color: Theme.of(context).primaryColor,
                        //                   borderRadius: BorderRadius.circular(19.0)),
                        //               child: Center(
                        //                 child: Texts(
                        //                   model.insuranceApproval[0].unUsedCount
                        //                       .toString(),
                        //                   color: Colors.white,
                        //                   fontSize: 17.0,
                        //                 ),
                        //               ))
                        //       ],
                        //     )),
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Column(
                            children: [
                              Row(
                                children: [
                                  AppText(
                                    'Insurance',
                                    fontSize: 15.0,
                                    fontWeight: FontWeight.w600,
                                    fontFamily: 'Poppins',
                                  ),
                                ],
                              ),
                              Row(
                                children: [
                                  AppText(
                                    'Approvals',
                                    fontSize: 30.0,
                                    fontWeight: FontWeight.w700,
                                  ),
                                ],
                              ),
                            ],
                          ),
                        ),

                        ...List.generate(
                          model.insuranceApproval.length,
                          (index) => Container(
                            child: InkWell(
                              onTap: () {
                                Navigator.push(
                                  context,
                                  MaterialPageRoute(
                                      builder: (context) =>
                                          InsuranceApprovalsDetails(
                                            patient: patient,
                                            indexInsurance: index,
                                          )),
                                );
                              },
                              child: DoctorCardInsurance(
                                patientOut: model.insuranceApproval[index]
                                    .patientDescription,
                                profileUrl:
                                    model.insuranceApproval[index].doctorImage,
                                clinic:
                                    model.insuranceApproval[index].clinicName,
                                doctorName:
                                    model.insuranceApproval[index].doctorName,
                                branch: model
                                    .insuranceApproval[index].approvalNo
                                    .toString(),
                                isPrescriptions: true,
                                approvalStatus: model.insuranceApproval[index]
                                    .approvalDetails.status,
                              ),
                            ),
                          ),
                          // (index) => Container(
                          //   width: double.maxFinite,
                          //   height: MediaQuery.of(context).size.height * .20,
                          //   margin: EdgeInsets.all(10),
                          //   padding:
                          //       EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
                          //   decoration: BoxDecoration(
                          //     borderRadius: BorderRadius.circular(15),
                          //     color: Colors.white,
                          //   ),
                          //   child: Padding(
                          //     padding: const EdgeInsets.all(8.0),
                          //     child: Container(
                          //       child: Row(
                          //         mainAxisAlignment: MainAxisAlignment.start,
                          //         children: [
                          //           Container(
                          //             height: MediaQuery.of(context).size.height * .20,
                          //             width: 5,
                          //             decoration: BoxDecoration(
                          //               borderRadius: BorderRadius.only(
                          //                 topLeft: Radius.circular(10),
                          //                 bottomLeft: Radius.circular(10),
                          //               ),
                          //               color: model.insuranceApproval[index]
                          //                           .approvalStatusDescption !=
                          //                       "Approved"
                          //                   ? Colors.red[500]
                          //                   : Colors.green,
                          //             ),
                          //           ),
                          //           Expanded(
                          //             child: Container(
                          //               padding: EdgeInsets.only(
                          //                   left: projectViewModel.isArabic ? 0 : 15,
                          //                   right: projectViewModel.isArabic ? 15 : 0),
                          //               child: InkWell(
                          //                 child: Column(
                          //                   crossAxisAlignment:
                          //                       CrossAxisAlignment.start,
                          //                   children: [
                          //                     Row(
                          //                       // mainAxisAlignment:
                          //                       //     MainAxisAlignment.spaceBetween,
                          //                       children: [
                          //                         Column(
                          //                           crossAxisAlignment:
                          //                               CrossAxisAlignment.start,
                          //                           children: [
                          //                             Texts(
                          //                               model.insuranceApproval[index]
                          //                                   .approvalDetails.status,
                          //                               color: model
                          //                                           .insuranceApproval[
                          //                                               index]
                          //                                           .approvalStatusDescption ==
                          //                                       "Approved"
                          //                                   ? Colors.green
                          //                                   : Colors.red[800],
                          //                               fontWeight: FontWeight.w600,
                          //                             ),
                          //                             SizedBox(
                          //                               height: 5,
                          //                             ),
                          //                             AppText(model
                          //                                 .insuranceApproval[index]
                          //                                 .doctorName),
                          //                             Container(
                          //                               child: LargeAvatar(
                          //                                 url: model
                          //                                     .insuranceApproval[index]
                          //                                     .doctorImage,
                          //                               ),
                          //                               width: 55,
                          //                               height: 55,
                          //                             ),
                          //                           ],
                          //                         ),
                          //                         Column(
                          //                           crossAxisAlignment:
                          //                               CrossAxisAlignment.start,
                          //                           children: [
                          //                             Row(
                          //                               children: <Widget>[
                          //                                 Texts(
                          //                                   'Clinic: ',
                          //                                   color: Colors.grey[500],
                          //                                 ),
                          //                                 Texts(
                          //                                   model
                          //                                       .insuranceApproval[
                          //                                           index]
                          //                                       .clinicName,
                          //                                 ),
                          //                               ],
                          //                             ),
                          //                             Row(
                          //                               children: <Widget>[
                          //                                 Texts(
                          //                                   'Approval No',
                          //                                   color: Colors.grey[500],
                          //                                 ),
                          //                                 Texts(
                          //                                   model
                          //                                       .insuranceApproval[
                          //                                           index]
                          //                                       .approvalNo
                          //                                       .toString(),
                          //                                 ),
                          //                               ],
                          //                             ),
                          //                           ],
                          //                         ),
                          //                         SizedBox(
                          //                           width: 5,
                          //                         ),
                          //                       ],
                          //                     ),
                          //                     Column(
                          //                       crossAxisAlignment:
                          //                       CrossAxisAlignment.start,
                          //                       children: [
                          //                         Row(
                          //                           children: <Widget>[
                          //                             Texts(
                          //                               'Clinic: ',
                          //                               color: Colors.grey[500],
                          //                             ),
                          //                             Texts(
                          //                               model
                          //                                   .insuranceApproval[
                          //                               index]
                          //                                   .clinicName,
                          //                             ),
                          //                           ],
                          //                         ),
                          //                         Row(
                          //                           children: <Widget>[
                          //                             Texts(
                          //                               'Approval No',
                          //                               color: Colors.grey[500],
                          //                             ),
                          //                             Texts(
                          //                               model
                          //                                   .insuranceApproval[
                          //                               index]
                          //                                   .approvalNo
                          //                                   .toString(),
                          //                             ),
                          //                           ],
                          //                         ),
                          //                       ],
                          //                     ),
                          //                     Row(
                          //                       mainAxisAlignment:
                          //                           MainAxisAlignment.end,
                          //                       children: [
                          //                         Icon(Icons.remove_red_eye_outlined)
                          //                       ],
                          //                     )
                          //                   ],
                          //                 ),
                          //               ),
                          //             ),
                          //           ),
                          //         ],
                          //       ),
                          //     ),
                          //   ),
                          // ),
//                       RoundedContainer(
//                     backgroundColor: Colors.white,
//                     child: Column(
//                       crossAxisAlignment: CrossAxisAlignment.start,
//                       children: <Widget>[
//                         ExpansionTile(
//                           title: Container(
//                             //height: 120.0,
//                             child: Column(
//                               crossAxisAlignment: CrossAxisAlignment.start,
//                               children: <Widget>[
//                                 model.insuranceApproval[index]
//                                             .patientDescription ==
//                                         "In Patient"
//                                     ? Container(
//                                         decoration: BoxDecoration(
//                                             color:
//                                                 Theme.of(context).primaryColor,
//                                             borderRadius:
//                                                 BorderRadius.circular(16.0)),
//                                         width: 115.0,
//                                         padding: EdgeInsets.only(left: 11.5),
//                                         child: Center(
//                                           child: Texts(
//                                             TranslationBase.of(context)
//                                                 .inPatient,
//                                             color: Colors.white,
//                                           ),
//                                         ),
//                                       )
//                                     : Container(
//                                         decoration: BoxDecoration(
//                                             color: Color(0xff505A5D),
//                                             borderRadius:
//                                                 BorderRadius.circular(16.0)),
//                                         width: 115.0,
//                                         padding: EdgeInsets.only(left: 11.5),
//                                         child: Center(
//                                           child: Texts(
//                                             TranslationBase.of(context)
//                                                 .outpatient,
//                                             color: Colors.white,
//                                           ),
//                                         ),
//                                       ),
//                                 Padding(
//                                   padding: EdgeInsets.symmetric(vertical: 10.0),
//                                   child: Texts(
//                                     model.insuranceApproval[index].clinicName,
//                                     fontSize: 20.0,
//                                     color: Color(0xff60686B),
//                                     fontWeight: FontWeight.w600,
//                                   ),
//                                 ),
//                                 Texts(
//                                   model.insuranceApproval[index].doctorName,
//                                   fontSize: 17.0,
//                                 ),
//                               ],
//                             ),
//                           ),
//                           children: <Widget>[
//                             Padding(
//                               padding: EdgeInsets.symmetric(
//                                   vertical: 12.0, horizontal: 12.0),
//                               child: Column(
//                                 crossAxisAlignment: CrossAxisAlignment.start,
//                                 children: <Widget>[
//                                   Row(
//                                     children: [
//                                       Texts(
//                                         TranslationBase.of(context).approvalNo,
//                                         fontSize: 18.0,
//                                       ),
//                                       Texts(
//                                         model
//                                             .insuranceApproval[index].approvalNo
//                                             .toString(),
//                                         fontSize: 18.0,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                     ],
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
//                                   Row(
//                                     children: [
//                                       Texts(
//                                         TranslationBase.of(context)
//                                             .procedureStatus,
//                                         fontSize: 17.5,
//                                       ),
//                                       SizedBox(
//                                         width: 12,
//                                       ),
//                                       Expanded(
//                                         child: Texts(
//                                           model.insuranceApproval[index]
//                                               .approvalStatusDescption,
//                                           fontWeight: FontWeight.w600,
//                                           fontSize: 17.5,
//                                         ),
//                                       ),
//                                     ],
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
//                                   Row(
//                                     children: [
//                                       Texts(
//                                         TranslationBase.of(context).unusedCount,
//                                         fontSize: 17.5,
//                                       ),
//                                       Texts(
//                                         model.insuranceApproval[index]
//                                             .unUsedCount
//                                             .toString(),
//                                         fontSize: 17.5,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                     ],
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
// //                                Text(
// //                                  'Company Name:    ' +
// //                                              model.insuranceApproval[index]
// //                                                  .companyName ==
// //                                          null
// //                                      ? '000'
// //                                      : model
// //                                          .insuranceApproval[index].companyName,
// //                                  style: TextStyle(
// //                                      fontSize: 17.5,
// //                                      fontWeight: FontWeight.w600),
// //                                ),
//                                   Texts(
//                                     TranslationBase.of(context).companyName,
//                                     fontWeight: FontWeight.w600,
//                                     fontSize: 17.5,
//                                   ),
//
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
//                                   Row(
//                                     children: [
//                                       Texts(
//                                         TranslationBase.of(context).receiptOn,
//                                         fontSize: 17.5,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                       Texts(
//                                         DateUtils.getDateTimeFromServerFormat(
//                                                 model.insuranceApproval[index]
//                                                     .rceiptOn)
//                                             .toString(),
//                                         fontSize: 17.5,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                     ],
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
//                                   Row(
//                                     children: [
//                                       Texts(
//                                         TranslationBase.of(context).expiryDate,
//                                         fontSize: 17.5,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                       Texts(
//                                         DateUtils.getDateTimeFromServerFormat(
//                                                 model.insuranceApproval[index]
//                                                     .expiryDate)
//                                             .toString(),
//                                         fontSize: 17.5,
//                                         fontWeight: FontWeight.w600,
//                                       ),
//                                     ],
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 55.0,
//                                     thickness: 1.2,
//                                   ),
//                                   IntrinsicHeight(
//                                     child: Row(
//                                       crossAxisAlignment:
//                                           CrossAxisAlignment.center,
//                                       children: <Widget>[
//                                         Expanded(
//                                           flex: 1,
//                                           child: Column(
//                                             children: <Widget>[
//                                               Text(TranslationBase.of(context)
//                                                   .procedureName),
//                                               Padding(
//                                                 padding: EdgeInsets.only(
//                                                     top: SizeConfig
//                                                             .heightMultiplier *
//                                                         3.0),
//                                                 child: Text(
//                                                   model.insuranceApproval[index]
//                                                               .approvalDetails ==
//                                                           null
//                                                       ? ''
//                                                       : model
//                                                           .insuranceApproval[
//                                                               index]
//                                                           .approvalDetails
//                                                           .procedureName,
//                                                   style: TextStyle(
//                                                       fontWeight:
//                                                           FontWeight.w600,
//                                                       fontSize: 15.5),
//                                                 ),
//                                               ),
//                                             ],
//                                           ),
//                                         ),
//                                         VerticalDivider(
//                                           width: 10.0,
//                                           thickness: 1.2,
//                                           color: Colors.black,
//                                         ),
//                                         Expanded(
//                                           flex: 1,
//                                           child: Column(
//                                             children: <Widget>[
//                                               Text(TranslationBase.of(context)
//                                                   .procedureStatus),
//                                               Padding(
//                                                 padding: EdgeInsets.only(
//                                                     top: SizeConfig
//                                                             .heightMultiplier *
//                                                         3.0),
//                                                 child: Text(
//                                                   model.insuranceApproval[index]
//                                                               .approvalDetails ==
//                                                           null
//                                                       ? ''
//                                                       : model
//                                                           .insuranceApproval[
//                                                               index]
//                                                           .approvalDetails
//                                                           .status,
//                                                   style: TextStyle(
//                                                       fontSize: 17.5,
//                                                       fontWeight:
//                                                           FontWeight.w600),
//                                                 ),
//                                               ),
//                                             ],
//                                           ),
//                                         ),
//                                         VerticalDivider(
//                                           width: 2.3,
//                                           thickness: 1.2,
//                                           color: Colors.black,
//                                         ),
//                                         Expanded(
//                                           flex: 1,
//                                           child: Column(
//                                             children: <Widget>[
//                                               Text(TranslationBase.of(context)
//                                                   .usageStatus),
//                                               Padding(
//                                                 padding: EdgeInsets.only(
//                                                     top: SizeConfig
//                                                             .heightMultiplier *
//                                                         3.0),
//                                                 child: Text(
//                                                   model.insuranceApproval[index]
//                                                               .approvalDetails ==
//                                                           null
//                                                       ? ''
//                                                       : model
//                                                           .insuranceApproval[
//                                                               index]
//                                                           .approvalDetails
//                                                           .isInvoicedDesc,
//                                                   style: TextStyle(
//                                                       fontWeight:
//                                                           FontWeight.w600,
//                                                       fontSize: 17.5),
//                                                 ),
//                                               ),
//                                             ],
//                                           ),
//                                         ),
//                                       ],
//                                     ),
//                                   ),
//                                   Divider(
//                                     color: Colors.black,
//                                     height: 25.0,
//                                     thickness: 1.0,
//                                   ),
//                                 ],
//                               ),
//                             ),
//                           ],
//                         ),
//                       ],
//                     ),
//                   ),
                        ),
                      ],
                    )
                  : Column(
                      children: [
                        Container(
                            height: 200,
                            width: double.infinity,
                            child: Center(
                                child: Text("No Insurance Approvals Found")))
                      ],
                    )),
        ),
      ),
    );
  }

  convertDateFormat(String Date) {
    const start = "/Date(";
    const end = "+0300)";

    final startIndex = Date.indexOf(start);
    final endIndex = Date.indexOf(end, startIndex + start.length);

    var date = new DateTime.fromMillisecondsSinceEpoch(
        int.parse(Date.substring(startIndex + start.length, endIndex)));
    String newDate = date.year.toString() +
        "-" +
        date.month.toString().padLeft(2, '0') +
        "-" +
        date.day.toString().padLeft(2, '0');

    return newDate.toString();
  }
}
