VendorDetails.js 9.21 KB
import React, { Fragment, useEffect, useState } from "react";
import { Button, Table } from "react-bootstrap";
import { FaAngleLeft, FaArrowLeft } from "react-icons/fa";
import ActivityDetailsModal from "./ActivityDetailsModal";
import Image from "next/image";
import RejectModal from "./RejectModal";
import ActivityListingRBAC from "../vendor/ActivityListingRBAC";
import { useDispatch, useSelector } from "react-redux";
import { getActivitiesByVendor, getActivitiesForAdmin } from "../../redux/actions/activityAction";
import { Tag } from "antd";
import { updateApprovalStatusAdmin } from "../../redux/actions/userActions";
import { getAllVendors } from "../../redux/actions/vendorActions";
import { toast } from "react-toastify";

const VendorDetails = ({ id, backClick, setShowDetail, showDetail, detail }) => {
    const { allVendors } = useSelector(state => state.allVendors);

    const dispatch = useDispatch();
    useEffect(() => {
        dispatch(getActivitiesForAdmin({ vendorId: detail[0].id }));
        console.log("cancel policy", detail[0])
    }, []);

    useEffect(() => {
        dispatch(getActivitiesForAdmin({ vendorId: detail[0].id }));
    }, [allVendors]);

    console.log("detail", detail);
    const [showActivityDetailsModal, setShowActivityDetailsModal] = useState(false);
    const [showRejectModal, setShowRejectModal] = useState(false);
    const [activityDetailInfo, setactivityDetailInfo] = useState();
    const handleShowActivityDetails = () => {
        setShowActivityDetailsModal(true);
    };
    const handleCloseActivityDetails = () => {
        setShowActivityDetailsModal(false);
    };
    const handleShowRejectModal = () => {
        setShowRejectModal(true);
    };
    const handleCloseRejectModal = () => {
        setShowRejectModal(false);
    };

    const UserStatus = () => {
        if (!detail || !detail.length > 0) return;
        const currentStatus = detail[0].attributes.user.data.attributes.approved;
        let message;
        let color;
        switch (currentStatus) {
            case "approved":
                message = "Approved";
                color = "success";
                break;

            case "rejected":
                message = "Rejected";
                color = "error";
                break;
            case "pending":
                message = "Pending";
                color = "warning";
                break;
            default:
                break;
        }
        return <Tag color={color}>{message.toUpperCase()}</Tag>;
    };
    return (
        <Fragment>
            <div className="vendorDetails">
                <div className="row">
                    <div className="col-12 col-lg-12">
                        <div className="d-flex align-items-center justify-content-between">
                            <div className="backDiv">
                                <span className="backArrow">
                                    <FaAngleLeft
                                        onClick={() => {
                                            setShowDetail(false);
                                        }}
                                    />
                                </span>
                                <span>Vendors List</span>
                            </div>
                        </div>
                    </div>
                    <div className="col-8 col-lg-8 mt-4">
                        <h4>Business Information</h4>
                        <div className="row">
                            <div className="col-12 col-lg-5">
                                <p className="phead">Business Documents</p>
                                <div className="row">
                                    <p className="col-12 col-lg-6">Business PAN No.</p>
                                    <p className="col-12 col-lg-6">{detail[0].attributes.pan}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-6">PAN</p>
                                    <p className="col-12 col-lg-6 pview">View</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-6">GST Number</p>
                                    <p className="col-12 col-lg-6">{detail[0].attributes.gst}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-6">GST Certificate</p>
                                    <p className="col-12 col-lg-6 pview">View</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-6">Business Name</p>
                                    <p className="col-12 col-lg-6">{detail[0].attributes.businessName}</p>
                                </div>
                            </div>
                            <div className="col-12 col-lg-7 borderLeft">
                                <p className="phead">Business Address</p>
                                <div className="row">
                                    <p className="col-12 col-lg-4">Pincode</p>
                                    <p className="col-12 col-lg-8">{detail[0].attributes.pincode}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-4">Country</p>
                                    <p className="col-12 col-lg-8">United States</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-4">State</p>
                                    <p className="col-12 col-lg-8">{detail[0].attributes.state}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-4">City</p>
                                    <p className="col-12 col-lg-8">{detail[0].attributes.city}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-4">Address Line 1</p>
                                    <p className="col-12 col-lg-8">{detail[0].attributes.addressLine1}</p>
                                </div>
                                <div className="row">
                                    <p className="col-12 col-lg-4">Address Line 2</p>
                                    <p className="col-12 col-lg-8">{detail[0].attributes.addressLine2 ? detail[0].attributes.addressLine2 : "N/A"}</p>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div className=" col-4">
                        <div className="row">
                            {/* <div className="col-12">
                <div className="row">
                  <div className="col-6">Current status:</div>
                  <div className="col-6">
                    <UserStatus />
                  </div>
                </div>
              </div> */}
                            <div className="col-md-12 d-flex">
                                <Button
                                    variant=""
                                    className="btnAdd btnApprove  col-6 me-2"
                                    onClick={async () => {
                                        await updateApprovalStatusAdmin({ status: "approved", userId: detail[0].attributes.user.data.id });
                                        toast.success("User approved");
                                        await dispatch(getAllVendors());
                                    }}
                                >
                                    Approve
                                </Button>
                                <Button variant="" className="btnAdd btnReject  col-6" onClick={handleShowRejectModal}>
                                    Reject
                                </Button>
                            </div>
                            <div className="col-12">
                                <div className="d-flex align-items-center gap-4">
                                    <p className="phead m-0">Status :</p> <UserStatus />
                                </div>
                            </div>
                        </div>
                    </div>
                    <div className="col-12 col-lg-12 mt-4">
                        <h4 className="mb-1">Activities</h4>
                        <ActivityListingRBAC setactivityDetailInfo={setactivityDetailInfo} setShowActivityDetailsModal={setShowActivityDetailsModal} />
                    </div>
                </div>
            </div>

            {showActivityDetailsModal && <ActivityDetailsModal show={showActivityDetailsModal} handleClose={handleCloseActivityDetails} activityDetailInfo={activityDetailInfo} />}

            {showRejectModal && <RejectModal show={showRejectModal} handleClose={handleCloseRejectModal} detail={detail} setShowDetail={setShowDetail} />}
        </Fragment>
    );
};
export default VendorDetails;