import 'package:Intaleq/controller/home/map_passenger_controller.dart';
import 'package:flutter/material.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:get/get.dart';

import '../../constant/colors.dart';
import '../../constant/style.dart';
import '../../controller/firebase/firbase_messge.dart';
import '../../controller/payment/payment_controller.dart';
import '../../controller/rate/rate_conroller.dart';
import '../widgets/elevated_btn.dart';
import '../widgets/my_scafold.dart';

class RateDriverFromPassenger extends StatelessWidget {
  RateDriverFromPassenger({super.key});
  final RateController controller = Get.put(RateController());
  @override
  Widget build(BuildContext context) {
    return MyScafolld(
        title: 'Rate Driver'.tr,
        body: [
          Positioned(
              top: 10,
              left: Get.width * .1,
              right: Get.width * .1,
              child: Container(
                // height: Get.height * 6,
                decoration: AppStyle.boxDecoration1,
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Padding(
                      padding: const EdgeInsets.all(4),
                      child: Container(
                          height: Get.height * .5,
                          decoration: AppStyle.boxDecoration1,
                          child: Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                              children: [
                                Text(
                                  '${'Total price to '.tr}${Get.find<MapPassengerController>().driverName}',
                                  style: AppStyle.title,
                                ),
                                Row(
                                  mainAxisAlignment:
                                      MainAxisAlignment.spaceEvenly,
                                  children: [
                                    Container(
                                      decoration: BoxDecoration(
                                          border: Border.all(
                                        width: 2,
                                        color: AppColor.redColor,
                                      )),
                                      child: Padding(
                                        padding: const EdgeInsets.all(4),
                                        child: Text(
                                          (double.parse(controller.price
                                                          .toString()) *
                                                      .12 +
                                                  double.parse(controller.price
                                                      .toString()))
                                              .toStringAsFixed(2),
                                          style: AppStyle.number.copyWith(
                                              color: AppColor.redColor,
                                              textBaseline:
                                                  TextBaseline.ideographic,
                                              decoration:
                                                  TextDecoration.lineThrough,
                                              decorationColor:
                                                  AppColor.redColor),
                                        ),
                                      ),
                                    ),
                                    const SizedBox(
                                      height: 10,
                                    ),
                                    Container(
                                      decoration: BoxDecoration(
                                          border: Border.all(
                                        width: 2,
                                        color: AppColor.greenColor,
                                      )),
                                      child: Padding(
                                        padding: const EdgeInsets.all(4),
                                        child: Text(
                                          controller.price.toString(),
                                          style: AppStyle.number,
                                        ),
                                      ),
                                    ),
                                  ],
                                ),
                                const SizedBox(
                                  height: 10,
                                ),
                                Padding(
                                  padding: const EdgeInsets.all(4.0),
                                  child: Text(
                                    'Exclusive offers and discounts always with the Intaleq app'
                                        .tr,
                                    style: AppStyle.title.copyWith(
                                      color: AppColor.redColor,
                                    ),
                                    textAlign: TextAlign.center,
                                  ),
                                ),
                                (Get.find<PaymentController>()
                                            .isWalletChecked ==
                                        true)
                                    ? const DriverTipWidget()
                                    : const SizedBox(),
                              ],
                            ),
                          )),
                    ),
                    Center(
                      child: RatingBar.builder(
                        initialRating: 0,
                        itemCount: 5,
                        itemSize: 50,
                        itemPadding: const EdgeInsets.symmetric(horizontal: 2),
                        itemBuilder: (context, index) {
                          switch (index) {
                            case 0:
                              return const Icon(
                                Icons.sentiment_very_dissatisfied,
                                color: Colors.red,
                              );
                            case 1:
                              return const Icon(
                                Icons.sentiment_dissatisfied,
                                color: Colors.redAccent,
                              );
                            case 2:
                              return const Icon(
                                Icons.sentiment_neutral,
                                color: Colors.amber,
                              );
                            case 3:
                              return const Icon(
                                Icons.sentiment_satisfied,
                                color: Colors.lightGreen,
                              );
                            case 4:
                              return const Icon(
                                Icons.sentiment_very_satisfied,
                                color: Colors.green,
                              );
                            default:
                              return const Icon(
                                Icons.sentiment_neutral,
                                color: Colors.amber,
                              );
                          } //
                        },
                        onRatingUpdate: (rating) {
                          controller.selectRateItem(rating);
                        },
                      ),
                    ),
                    const SizedBox(
                      height: 20,
                    ),
                    SizedBox(
                      width: Get.width * .75,
                      child: TextFormField(
                        maxLines: 4,
                        minLines: 1,
                        keyboardType: TextInputType.multiline,
                        controller: controller.comment,
                        decoration: InputDecoration(
                          labelText: 'Enter your Note'.tr,
                          hintText: 'Type something...'.tr,
                          prefixIcon: const Icon(
                              Icons.rate_review), // Add an icon as a prefix
                          suffixIcon: IconButton(
                            icon: const Icon(
                              Icons.clear,
                              color: AppColor.redColor,
                            ), // Add an icon as a suffix
                            onPressed: () {
                              controller.comment.clear();
                            },
                          ),
                          border:
                              const OutlineInputBorder(), // Add a border around the input field
                          enabledBorder: const OutlineInputBorder(
                            borderSide: BorderSide(
                                color:
                                    Colors.blue), // Customize the border color
                          ),
                          focusedBorder: const OutlineInputBorder(
                            borderSide: BorderSide(
                                color: Colors
                                    .green), // Customize the border color when focused
                          ),
                          errorBorder: const OutlineInputBorder(
                            borderSide: BorderSide(
                                color: Colors
                                    .red), // Customize the border color when there's an error
                          ),
                        ),
                      ),
                    ),
                    const SizedBox(
                      height: 20,
                    ),
                    MyElevatedButton(
                        title: 'Submit rating'.tr,
                        onPressed: () => controller.addRateToDriver())
                  ],
                ),
              )),
        ],
        isleading: false);
  }
}
