import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/PendingComplaintsProvider.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/serviceEngineer/PaymentDetails.dart';
import 'package:generp/screens/serviceEngineer/VisitDetails.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../Utils/app_colors.dart';
import 'package:dropdown_button2/dropdown_button2.dart';

import 'UpdateComplaints.dart';

class Pendingcomplaints extends StatefulWidget {
  const Pendingcomplaints({super.key});

  @override
  State<Pendingcomplaints> createState() => _PendingcomplaintsState();
}

class _PendingcomplaintsState extends State<Pendingcomplaints> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      var complaintsprovider = Provider.of<Pendingcomplaintsprovider>(
        context,
        listen: false,
      );
      complaintsprovider.TechnicianPendingComplaints(context);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Consumer<Pendingcomplaintsprovider>(
      builder: (context, provider, child) {
        return Scaffold(
          backgroundColor: AppColors.scaffold_bg_color,
          appBar: AppBar(
            automaticallyImplyLeading: false,
            elevation: 2.0,
            title: SizedBox(
              child: Row(
                mainAxisAlignment: MainAxisAlignment.start,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  InkResponse(
                    onTap: () => Navigator.pop(context, true),
                    child: SvgPicture.asset(
                      "assets/svg/app_bar_back.svg",
                      height: 25,
                    ),
                  ),
                  Text(
                    "Pending Complaints",
                    style: TextStyle(
                      fontSize: 16,
                      height: 1.1,
                      color: AppColors.semi_black,
                    ),
                  ),
                  Spacer(),
                  SvgPicture.asset("assets/svg/scanner.svg"),
                ],
              ),
            ),
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.vertical(
                bottom: Radius.circular(30), // Adjust the radius as needed
              ),
            ),
          ),
          body: Container(
            child: ListView.builder(
              scrollDirection: Axis.vertical,
              shrinkWrap: true,
              itemCount: provider.technician_complaint_list.length,
              padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),

              itemBuilder: (context, index) {
                return Container(
                  padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
                  margin: EdgeInsets.symmetric(vertical: 5),
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(20),
                  ),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Row(
                        crossAxisAlignment: CrossAxisAlignment.center,
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          Expanded(
                            flex: 1,
                            child: SvgPicture.asset(
                              "assets/svg/se_block_head.svg",
                            ),
                          ),
                          SizedBox(width: 5),

                          Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              Text(
                                "${provider.technician_complaint_list[index].contactName}",
                              ),
                              Text(
                                "${provider.technician_complaint_list[index].companyName}",
                                style: TextStyle(color: Color(0xFF818181)),
                              ),
                            ],
                          ),
                          Spacer(),
                          Expanded(
                            flex: 1,
                            child: InkResponse(
                              onTap: () {
                                launch(
                                  'tel://${provider.technician_complaint_list[index].mobileNo}',
                                );
                              },
                              child: SvgPicture.asset(
                                "assets/svg/se_call_customer.svg",
                              ),
                            ),
                          ),
                          Expanded(
                            flex: 1,
                            child: InkResponse(
                              onTap: () {
                                _showOptionsSheet(
                                  context,
                                  provider
                                      .technician_complaint_list[index]
                                      .companyName,

                                  provider
                                      .technician_complaint_list[index]
                                      .genId,
                                  provider
                                      .technician_complaint_list[index]
                                      .complaintId,
                                );
                              },
                              child: Icon(Icons.more_vert),
                            ),
                          ),
                        ],
                      ),
                      Divider(thickness: 0.5, color: Color(0xFFD7D7D7)),
                      ...List.generate(3, (j) {
                        final textheads = ["ID", "Generator Type", "Address"];
                        final textSubheads = [
                          provider.technician_complaint_list[index].genId,
                          provider.technician_complaint_list[index].productName,
                          provider.technician_complaint_list[index].address,
                        ];
                        return Container(
                          padding: EdgeInsets.symmetric(vertical: 3),
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              Text(textheads[j].toString()),
                              Text(
                                textSubheads[j].toString(),
                                style: TextStyle(color: Color(0xFF818181)),
                              ),
                            ],
                          ),
                        );
                      }),
                      InkResponse(
                        onTap: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                              builder:
                                  (context) => Visitdetails(
                                    complaintID:
                                        provider
                                            .technician_complaint_list[index]
                                            .complaintId,
                                  ),
                            ),
                          );
                        },
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.start,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: [
                            Text(
                              "View Details",
                              style: TextStyle(color: AppColors.app_blue),
                            ),
                            SizedBox(width: 5),
                            SvgPicture.asset("assets/svg/next_button.svg"),
                          ],
                        ),
                      ),
                    ],
                  ),
                );
              },
            ),
          ),
        );
      },
    );
  }

  Future<void> _showOptionsSheet(
    BuildContext context,
    companyName,
    genId,
    complaintId,
  ) {
    return showModalBottomSheet(
      useSafeArea: true,
      isDismissible: true,
      isScrollControlled: true,
      showDragHandle: true,
      backgroundColor: Colors.white,
      enableDrag: true,
      context: context,
      builder: (context) {
        return StatefulBuilder(
          builder: (context, setState) {
            return SafeArea(
              child: Consumer<Pendingcomplaintsprovider>(
                builder: (context, provider, child) {
                  return Container(
                    margin: EdgeInsets.only(
                      bottom: 15,
                      left: 15,
                      right: 15,
                      top: 10,
                    ),

                    child: SingleChildScrollView(
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          SizedBox(height: 15),

                          ...List.generate(3, (index) {
                            final assetnames = [
                              "se_locate_customer",
                              "se_update_complaint",
                              "se_payment_details",
                            ];
                            final Headingnames = [
                              "Location",
                              "Update Complaint",
                              "Payment Details",
                            ];
                            return ListTile(
                              onTap: () async {
                                switch (index) {
                                  case 0:
                                    {
                                      var loc =
                                          provider
                                              .technician_complaint_list[index]
                                              .loc
                                              ?.split(",")
                                              .toString();
                                      var uri = Uri.parse(
                                        "google.navigation:q=${loc![0]},${loc![1]}&mode=d",
                                      );
                                      if (await canLaunch(uri.toString())) {
                                        await launch(uri.toString());
                                      } else {
                                        throw 'Could not launch ${uri.toString()}';
                                      }
                                    }
                                    break;
                                  case 1:
                                    Navigator.pop(context);
                                    Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                        builder:
                                            (context) => Updatecomplaints(
                                              ComplaintID: complaintId,
                                            ),
                                      ),
                                    );
                                    break;
                                  case 2:
                                    Navigator.pop(context);
                                    Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                        builder:
                                            (context) => Paymentdetails(
                                              accountName: "Account",
                                              name: companyName,
                                              genId: genId,
                                              referenceID: complaintId,
                                            ),
                                      ),
                                    );
                                    break;
                                }
                              },
                              leading: SvgPicture.asset(
                                "assets/svg/${assetnames[index]}.svg",
                              ),
                              title: Text(Headingnames[index]),
                              trailing: Icon(
                                Icons.arrow_forward_ios_sharp,
                                size: 16,
                              ),
                            );
                          }),
                        ],
                      ),
                    ),
                  );
                },
              ),
            );
          },
        );
      },
    );
  }
}
