import React, { useMemo, useState } from "react";
import { useLocation, useNavigate } from "react-router-dom";
import localImgLoad from "../../../lib/localImgLoad";
import Icons from "../../Helpers/Icons";
import { PriceFormatter } from "../../Helpers/PriceFormatter";
import { handlePagingFunc } from "../../Pagination/HandlePagination";
import PaginatedList from "../../Pagination/PaginatedList";
import LoadingSpinner from "../../Spinners/LoadingSpinner";

export default function FamilyTasks({
  familyData,
  className,
  loader,
  accountDetails,
}) {
  let navigate = useNavigate();
  let { pathname } = useLocation();

  // ...
  const filteredFamilyData = useMemo(
    () =>
      familyData?.result_list?.filter(
        (data) => data?.family_uid === accountDetails?.family_uid
      ),
    [familyData, accountDetails]
  );

  const [currentPage, setCurrentPage] = useState(0);
  const indexOfFirstItem = Number(currentPage);
  const indexOfLastItem =
    Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
  const currentTask = familyData?.result_list.slice(
    indexOfFirstItem,
    indexOfLastItem
  );

  const handlePagination = (e) => handlePagingFunc(e, setCurrentPage);


  return (
    <div
      className={`update-table w-full bg-white dark:bg-dark-white h-full lg:min-h-[538px] overflow-hidden rounded-2xl section-shadow p-3 ${
        className || ""
      }`}
    >
      {loader ? (
        <div className="w-full h-full flex justify-center items-center lg:min-h-[470px]">
          <LoadingSpinner size={16} color="sky-blue" />
        </div>
      ) : (
        <>
          {familyData && familyData?.result_list && (
            <div className="relative w-full overflow-x-auto sm:rounded-lg flex flex-col justify-between h-full">
              <table className="w-full text-sm text-left text-gray-500 dark:text-gray-400">
                <tbody>
                  {
                    <>
                      {familyData &&
                      familyData?.result_list &&
                      familyData.result_list.length > 0 ? (
                        currentTask.map((value, index) => {
                          // find due date
                          const dueDate = value?.delivery_date.split(" ")[0];
                          // the price
                          let thePrice = PriceFormatter(
                            value?.price * 0.01,
                            value?.currency_code,
                            value?.currency
                          );
                          let image = value.banner
                            ? value.banner
                            : "default.jpg";
                          return (
                            <tr
                              key={index}
                              className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50"
                            >
                              <td className=" py-4">
                                <div className="flex space-x-2 items-center w-full">
                                  <div className="w-[60px] h-[60px] p-2 bg-alice-blue rounded-full overflow-hidden flex justify-center items-center">
                                    <img
                                      src={localImgLoad(
                                        `images/taskbanners/${image}`
                                      )}
                                      alt="data"
                                      className="w-full h-full rounded-full"
                                    />
                                  </div>
                                  <div className="flex flex-col flex-[0.9]">
                                    <h1 className="font-bold text-xl text-dark-gray dark:text-white">
                                      {value.title}
                                    </h1>
                                    <div className="flex flex-col sm:flex-row items-start gap-1 md:gap-4 md:items-center">
                                      <span className="text-sm text-thin-light-gray flex flex-start gap-1">
                                        Price:{" "}
                                        <span className="text-purple">
                                          {thePrice}
                                        </span>
                                      </span>
                                      <span className="text-sm text-thin-light-gray">
                                        Duration:{" "}
                                        <span className="text-purple">
                                          {" "}
                                          {value.timeline_days} day(s)
                                        </span>
                                      </span>
                                      <span className="text-sm text-thin-light-gray">
                                        Due Date:{" "}
                                        <span className="text-purple">
                                          {" "}
                                          {dueDate}
                                        </span>
                                      </span>
                                    </div>
                                  </div>
                                </div>
                              </td>

                              <td className="text-right py-4 px-2">
                                <button
                                  type="button"
                                  onClick={() => {
                                    navigate("/manage-active-job", {
                                      state: {
                                        ...value,
                                        pathname,
                                        accountDetails,
                                      },
                                    });
                                  }}
                                  className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
                                >
                                  <Icons name="right-arrow" />
                                </button>
                              </td>
                            </tr>
                          );
                        })
                      ) : (
                        <tr>
                          <td colSpan="2" className="text-center py-4 font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
                            No Family Task
                          </td>
                        </tr>
                      )}
                    </>
                  }
                </tbody>
              </table>
              {/* PAGINATION BUTTON */}
              <PaginatedList
                onClick={handlePagination}
                prev={currentPage == 0 ? true : false}
                next={
                  currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >=
                  familyData?.result_list.length
                    ? true
                    : false
                }
                data={familyData?.result_list}
                start={indexOfFirstItem}
                stop={indexOfLastItem}
              />
              {/* END OF PAGINATION BUTTON */}
            </div>
          )}
        </>
      )}
    </div>
  );
}
