import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/table_names.dart';

import '../../../constant/colors.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/toast.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../main.dart';

GetBuilder<MapPassengerController> formSearchPlacesStart() {
  // DbSql sql = DbSql.instance;
  return GetBuilder<MapPassengerController>(
      builder: (controller) => Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(8),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Container(
                      width: Get.width * .75,
                      height: 40,
                      decoration:
                          const BoxDecoration(color: AppColor.secondaryColor),
                      child: TextFormField(
                        decoration: InputDecoration(
                          border: const OutlineInputBorder(
                              borderRadius: BorderRadius.only(),
                              gapPadding: 4,
                              borderSide: BorderSide(
                                color: AppColor.redColor,
                                width: 2,
                              )),
                          suffixIcon: const Icon(Icons.search),
                          hintText: controller.hintTextStartPoint,
                          hintStyle: AppStyle.title,
                          hintMaxLines: 1,
                          prefixIcon: IconButton(
                            onPressed: () {
                              controller.placeStartController.clear();
                              controller.clearPlacesStart();
                            },
                            icon: Icon(
                              Icons.clear,
                              color: Colors.red[300],
                            ),
                          ),
                        ),
                        controller: controller.placeStartController,
                        onChanged: (value) {
                          if (controller.placeStartController.text.length > 5) {
                            controller.getPlacesStart();
                            controller.changeHeightStartPlaces();
                          }
                        },
                        // onEditingComplete: () => controller.changeHeight(),
                      ),
                    ),
                    IconButton(
                      onPressed: () {
                        controller.startLocationFromMap = true;
                        controller.changeMainBottomMenuMap();
                        controller.changePickerShown();
                      },
                      icon: const Icon(
                        Icons.map_outlined,
                        color: AppColor.yellowColor,
                      ),
                    ),
                  ],
                ),
              ),
              // controller.placesDestination.isEmpty
              //     ? InkWell(
              //         onTap: () {
              //           controller.startLocationFromMap = true;
              //           controller.changeMainBottomMenuMap();
              //           controller.changePickerShown();
              //         },
              //         child: Text(
              //           'Choose from Map Start Point'.tr,
              //           style:
              //               AppStyle.title.copyWith(color: AppColor.blueColor),
              //         ),
              //       )
              //     : const SizedBox(),
              Container(
                height:
                    controller.placesStart.isNotEmpty ? controller.height : 0,
                color: AppColor.secondaryColor,
                child: ListView.builder(
                  itemCount: controller.placesStart.length,
                  itemBuilder: (BuildContext context, int index) {
                    var res = controller.placesStart[index];
                    return InkWell(
                      onTap: () async {
                        controller.changeHeightPlaces();
                        // if (controller.currentLocationToFormPlaces == true) {
                        //   controller.newStartPointLocation =
                        //       controller.myLocation;
                        // } else {
                        //   controller.myLocation =
                        //       controller.newStartPointLocation;
                        // }
                        await sql.insertData({
                          'latitude': res['geometry']['location']['lat'],
                          'longitude': res['geometry']['location']['lng'],
                          'name': res['name'].toString(),
                          'rate': res['rating'].toString(),
                        }, TableName.recentLocations);

                        controller.convertHintTextStartNewPlaces(index);
                        controller.currentLocationString = res['name'];
                        controller.placesStart = [];
                        controller.placeStartController.clear();
                      },
                      child: Padding(
                        padding: const EdgeInsets.symmetric(horizontal: 10),
                        child: Column(
                          children: [
                            Row(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              children: [
                                Column(
                                  children: [
                                    Image.network(
                                      res['icon'],
                                      width: 20,
                                    ),
                                    IconButton(
                                      onPressed: () async {
                                        await sql.insertData({
                                          'latitude': res['geometry']
                                              ['location']['lat'],
                                          'longitude': res['geometry']
                                              ['location']['lng'],
                                          'name': res['name'].toString(),
                                          'rate': res['rating'].toString(),
                                        }, TableName.placesFavorite);
                                        Toast.show(
                                            context,
                                            '${res['name']} ${'Saved Sucssefully'.tr}',
                                            AppColor.primaryColor);
                                      },
                                      icon: const Icon(Icons.favorite_border),
                                    ),
                                  ],
                                ),
                                Column(
                                  children: [
                                    Text(
                                      res['name'].toString(),
                                      style: AppStyle.title,
                                    ),
                                    Text(
                                      res['vicinity'].toString(),
                                      style: AppStyle.subtitle,
                                    ),
                                  ],
                                ),
                                Column(
                                  children: [
                                    Text(
                                      'rate',
                                      style: AppStyle.subtitle,
                                    ),
                                    Text(
                                      res['rating'].toString(),
                                      style: AppStyle.subtitle,
                                    ),
                                  ],
                                ),
                              ],
                            ),
                            const Divider(
                              thickness: 1,
                            )
                          ],
                        ),
                      ),
                    );
                  },
                ),
              )
            ],
          ));
}
