import React, { useEffect, useState } from "react";
import usersService from "../../../../services/UsersService";
import InputCom from "../../../Helpers/Inputs/InputCom";
import debounce from "../../../../hooks/debounce";

const DEFAULT_IMAGE = require("../../../../assets/images/taskbanners/default.jpg");
export default function NewTasks({ formState, setFormState }) {
  let [currency, setCurrency] = useState({
    loading: true,
    status: false,
    data: null,
  });

  const ApiCall = new usersService();

  // FUNCTION TO GET Currency
  const getUserCurrency = () => {
    setCurrency((prev) => ({ ...prev, loading: true }));
    ApiCall.getUserWallets()
      .then((res) => {
        if (res.data.internal_return < 0) {
          setCurrency({ loading: false, status: true, data: [] });
          return;
        }

        setCurrency({
          loading: false,
          status: true,
          data: res.data.result_list,
        });
      })
      .catch((err) => {
        setCurrency({ loading: false, status: false, data: [] });
      });
  };

  const handleInputChange = (event) => {
    const { name, value } = event.target;
    setFormState((prevState) => ({
      ...prevState,
      [name]: value,
    }));
  };

  useEffect(() => {
    getUserCurrency();
  }, []);

  return (
    <form className="w-full flex justify-between items-center">
      <div className="flex flex-col gap-3 max-w-[77%]">
        {/* inputs starts here */}
        <div className="grid md:grid-cols-3 grid-cols-1 gap-6 mb-[5px]">
          {/* Currency */}
          <div className="field w-full mb-6 xl:mb-0">
            <label
              htmlFor="country"
              className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex item-center gap-1"
            >
              Currency
              {/* {props.errors.country && props.touched.country && <span className="text-[12px] text-red-500">{props.errors.country}</span>} */}
            </label>
            <select
              id="country"
              name="country"
              value={formState.country}
              className={`input-field p-2 mt-3 rounded-md placeholder:text-base text-dark-gray dark:text-white w-full h-10 bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-none`}
              onChange={handleInputChange}
              // onBlur={props.handleBlur}
            >
              {currency.loading ? (
                <option className="text-slate-500 text-[13.975px]" value="">
                  Loading...
                </option>
              ) : currency.data.length ? (
                <>
                  <option className="text-slate-500 text-[13.975px]" value="">
                    Currency
                  </option>
                  {currency.data?.map((item, index) => (
                    <option
                      key={index}
                      className="text-slate-500 text-lg"
                      value={item?.country}
                    >
                      {item?.description}
                    </option>
                  ))}
                </>
              ) : (
                <option className="text-slate-500 text-lg" value="">
                  No Options Found! Try Again
                </option>
              )}
            </select>
          </div>

          {/* Price */}
          <div className="field w-full">
            <InputCom
              fieldClass="px-6 text-right"
              label="Price"
              labelClass="tracking-wide"
              inputBg="bg-slate-100"
              type="number"
              name="price"
              placeholder="0"
              value={formState.price}
              inputHandler={handleInputChange}
              // blurHandler={props.handleBlur}
              // error={props.errors.price && props.touched.price && props.errors.price}
            />
          </div>

          {/* Duration */}
          <div className="field w-full mb-6 xl:mb-0">
            <label
              htmlFor="timeline_days"
              className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex item-center gap-1"
            >
              Timeline
              {/* {props.errors.country && props.touched.country && <span className="text-[12px] text-red-500">{props.errors.country}</span>} */}
            </label>
            <select
              id="timeline_days"
              name="timeline_days"
              value={formState.timeline_days}
              className={`input-field p-2 mt-3 rounded-md placeholder:text-base text-dark-gray dark:text-white w-full h-10 bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-none`}
              onChange={handleInputChange}
              // onBlur={props.handleBlur}
            >
              {publicArray.length && (
                <>
                  <option className="text-slate-500 text-[13.975px]" value="">
                    Duration
                  </option>
                  {publicArray.map(({ name, duration }, idx) => (
                    <option
                      className="text-slate-500 text-[13.975px]"
                      value={duration}
                    >
                      {name}
                    </option>
                  ))}
                </>
              )}
            </select>
          </div>
        </div>

        {/* Title  */}
        <div className="field w-full mb-[5px]">
          <InputCom
            fieldClass="px-6"
            label="Title"
            labelClass="tracking-wide"
            inputBg="bg-slate-100"
            type="text"
            name="title"
            value={formState.title}
            inputHandler={handleInputChange}
            //   blurHandler={props.handleBlur}
            //   error={props.errors.title && props.touched.title && props.errors.title}
          />
        </div>

        {/* Description  */}
        <div className="field w-full mb-[5px]">
          <InputCom
            fieldClass="px-6"
            label="Description"
            labelClass="tracking-wide"
            inputBg="bg-slate-100"
            type="text"
            name="description"
            value={formState.description}
            inputHandler={handleInputChange}
            //   blurHandler={props.handleBlur}
            //   error={props.errors.description && props.touched.description && props.errors.description}
          />
        </div>

        {/* Details */}
        <div className="field flex flex-col sm:flex-row w-full mb-[5px] gap-2">
          <div className="w-full">
            <label
              htmlFor="Job Delivery Details"
              className='className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex items-center gap-1'
            >
              Job Delivery Details
              {/* {props.errors.job_detail && props.touched.job_detail && <span className="text-[12px] text-red-500">{props.errors.job_detail}</span>} */}
            </label>
            <textarea
              id="Job Delivery Details"
              rows="5"
              className={`input-field px-3 py-2 placeholder:text-base text-dark-gray dark:text-white w-full h-[100px] bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-[#dce4e9] rounded-[10px]`}
              style={{ resize: "none" }}
              name="job_detail"
              value={formState.job_detail}
              onChange={handleInputChange}
              // onBlur={props.handleBlur}
            />
          </div>
        </div>
      </div>
      {/* Banner Image */}
      <div className="max-w-[20%] w-full">
        <div className="h-32 w-full">
          <img
            src={DEFAULT_IMAGE}
            alt="task_banner_img"
            className="w-full h-full object-contain"
          />
        </div>
      </div>
    </form>
  );
}

const publicArray = [
  { duration: 1, name: "1 day" },
  { duration: 2, name: "2 days" },
  { duration: 3, name: "3 days" },
  { duration: 4, name: "4 days" },
  { duration: 5, name: "5 days" },
  { duration: 6, name: "6 days" },
  { duration: 7, name: "1 week" },
  { duration: 14, name: "2 weeks" },
  { duration: 21, name: "3 weeks" },
  { duration: 28, name: "4 weeks" },
];
