SÁBADO
30/3/2024
// import React from 'react'
import * as React from "react";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
import Typography from "@mui/material/Typography";
import Modal from "@mui/material/Modal";
import { useState, useEffect } from "react";
import axios from "axios";


const style = {
  position: "absolute",
  top: "50%",
  left: "50%",
  transform: "translate(-50%, -50%)",
  width: 400,
  bgcolor: "background.paper",
  border: "2px solid #000",
  boxShadow: 24,
  p: 4,
};




function Show() {
const [userData, setUserData] = useState([]);


const runfun = async (id) =>{

console.log(id);


let a = id;

  try {
    const result = await axios.post(http://192.168.0.146:5000/get-single-data/${a});
    setUserData(result.data…Read more
8:45 p. m.
app.post('/get-single-data/:id', (req, res) => {
    // const id = 2225;
    const { id } = req.params;

    console.log(id);

    const query = 'SELECT * FROM app_deperment_section WHERE id = ? ';
    connection.query(query, [id], (err, results) => {
        if (err) {
            console.error(err.message);
            return res.status(500).send(err);
        }
        res.json(results);
        console.log(results)
    });
});
8:46 p. m.
1/4/2024
metoxi-bootstrap-5-admin-dashboard-template-2023-12-06-06-35-20-utc.zip
ZIP•113 MB
6:14 p. m.
VIERNES
in bootstrap if i click then run a function and close this model in react
3:02 p. m.
+918767170191
9:52 p. m.
+918767170191
9:53 p. m.
+918767170191
10:04 p. m.
SÁBADO

10:06 a. m.
TODAY
import React from "react";
import Master from "../Layout/Master";

import { Link } from "react-router-dom";

import { useState, useEffect } from "react";
import axios from "axios";

import { ToastContainer, toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";

import Loding from "../Loding/Loding";

import { server } from "..//../main";

import { confirmAlert } from "react-confirm-alert"; // Import
import "react-confirm-alert/src/react-confirm-alert.css"; // Import css

function Client() {
  // !hook for model update
  const [modalOpen, setModalOpen] = useState(false);
  // !hook for model create Button
  const [create_modalOpen, setCreate_modalOpen] = useState(false);

  const [userData, setUserData] = useState([]);
  // const [selectedUserId, setSelectedUserId] = useState(null);

  // ! loading hook
  const [isLoading, setIsLoading] = useState(true);

  const sessionStorage_user_id = sessionStorage.getItem("user_id");

  const [userField, setUserField] = useState({
    user_name: "",
    user_m_no: "",
    user_w_name: "",
    user_e_nid: "",
    user_a: "",
    user_u_id: "sessionStorage_user_id",
  });

  const changeUserFieldHandler = (e) => {
    setUserField({
      ...userField,
      [e.target.name]: e.target.value,
    });
  };

  // ! --------------------------------------------------
  // Function to open the modal
  const handleCreateButtonOpen = () => {
    console.log("handleCreateButtonOpen");
    setCreate_modalOpen(true);
  };

  // Function to close the modal
  const handleCreateButtonClose = () => {
    setCreate_modalOpen(false);
  };
  // ! --------------------------------------------------
  const onSubmitChange = async (e) => {
    e.preventDefault();
    try {
      const response = await axios.post(
        ${server}/api_v2/clients/cleint_add,
        userField
      );

      var response_data = response.data.msg;
      var response_status = response.data.status;
      if (response_status == "success") {
        fetchData();
        toast.success(response_data);
        // console.log(response_data);
        // toast.success(response_data);
        // Close the modal on success
        setCreate_modalOpen(false);
      } else {
        setCreate_modalOpen(true);
        // toast.success(response_data);
        toast.error(response_data);
        // console.log(response.data);
      }
    } catch (err) {
      console.log("Something Wrong in react ");
      toast.error(response_data);
    }
  };

  const handleDelete = async (id) => {
    // console.log(id)


    try {
      const result = await axios.post(
        "http://192.168.0.109/rpgi/craftzoneapi/api_v2/clients/delete_cleint",
        {
          client_id: id,
          tc_auth_id: sessionStorage_user_id,
        }
        // console.log(result.data.msg);
      );

      if (result.data.msg == "success") {
        toast.success(result.data.msg);
        // fetchData();
      } else {
        toast.error(result.data.msg);
      }

           fetchData();
    } catch (error) {
      // console.log(error);
      toast.error("Internal Server Error");
    }





  };

  // ! -----------------------Get data---------------------------
  const fetchData = async () => {
    //
    try {
      const result = await axios.post(
        "http://192.168.0.109/rpgi/craftzoneapi/api_v2/clients/get_cleints"
      );
      //console.log("FEATCH");

      // console.log(result);

      if (result.data.status === "success") {
        console.log("first")
        setUserData(result.data.clients);
        console.log("FEATCH");



      } else {
        toast.error(result.data.msg);
      }
    } catch (err) {
      console.log("Something went wrong");
    }
  };

  // ! -----------------------Delete data---------------------------

  const deleteData = async (id) => {
    // console.log(id);
    fetchData();
    confirmAlert({
      title: "Confirm to Delete",
      message: "Are you sure to do this.",
      buttons: [
        {
          label: "Yes",
          onClick: () => handleDelete(id),
          
          // alert("Click Yes"),
        },
        {
          label: "No",
          // onClick: () =>

          // alert("Click No"),
        },
      ],
    });
  };

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

  // ! -----------------------show single data data---------------------------

  // const [single_cleint_data, setSingle_cleint_data] = useState({});

  // ! -----------------------Update data---------------------------

  // const [data, setData] = useState([]);
  const [selectedData, setSelectedData] = useState(null);

  const handleCloseModal = () => {
    setModalOpen(false);
  };

  const fetchDataFromServer = async (id) => {
    try {
      const response = await axios.post(
        http://192.168.0.109/rpgi/craftzoneapi/api_v2/clients/get_cleint,
        {
          user_id: id,
        }
      );
      //  console.log(update);
      return response.data;
    } catch (error) {
      toast.error("Internal Server Error");
    }
  };

  const handleEditClick = async (id) => {
    try {
      const newData = await fetchDataFromServer(id);

      if (newData.status == "success") {
        setSelectedData(newData.client[0]);
        setModalOpen(true);
      } else {
        toast.error(newData.msg);
      }
    } catch (error) {
      toast.error("Internal Server Error");
    }
  };

  const handleUpdateData = async () => {
    // Perform actions to update the data
    console.log("Updated data:", selectedData);

    try {
      const users = {
        user_id: selectedData.tc_id,
        user_name: selectedData.tc_name,

        user_m_no: selectedData.tc_m_no,
        user_w_name: selectedData.tc_w_no,
        user_e_nid: selectedData.tc_e_id,
        user_a: selectedData.tc_address,
        user_u_id: sessionStorage_user_id,
      };
      const result = await axios.post(
        "http://192.168.0.109/rpgi/craftzoneapi/api_v2/clients/update_cleint",
        users
      );
      if (result.data.status == "success") {
        // alert("User Data Updated Successfully");
        toast.success(result.data.msg);
        setModalOpen(false);
        fetchData();
      } else {
        toast.error(result.data.msg);
      }
      // Close the modal
    } catch (err) {
      toast.error("Internal Server Error");
    }
  };

  setTimeout(() => {
    // setIsLoading(false);
  }, 2000);

  return (
    <>
      <Master />

      {/* //! update modal */}
      <>
        <div
          className={modal ${modalOpen ? "show" : ""}}
          tabIndex="-1"
          role="dialog"
          style={{ display: modalOpen ? "block" : "none" }}
        >
          <div className="modal-dialog" role="document">
            <div className="modal-content">
              <div className="modal-header">
                <h5 className="modal-title">Edit Data</h5>
                <button
                  type="button"
                  className="close"
                  onClick={handleCloseModal}
                >
                  <span aria-hidden="true">&times;</span>
                </button>
              </div>
              <div className="modal-body">
                {selectedData && (
                  <form onSubmit={handleUpdateData}>
                    <div className="form-group">
                      <label htmlFor="name">Name:</label>
                      <input
                        type="text"
                        className="form-control"
                        id="name"
                        name="name"
                        value={selectedData.tc_name}
                        onChange={(e) =>
                          setSelectedData({
                            ...selectedData,
                            tc_name: e.target.value,
                          })
                        }
                      />
                    </div>
                    <div className="form-group">
                      <label htmlFor="name">Mobile Number:</label>
                      <input
                        type="text"
                        className="form-control"
                        id="name"
                        name="name"
                        value={selectedData.tc_m_no}
                        onChange={(e) =>
                          setSelectedData({
                            ...selectedData,
                            tc_m_no: e.target.value,
                          })
                        }
                      />
                    </div>
                    <div className="form-group">
                      <label htmlFor="name">Whatsapp Number:</label>
                      <input
                        type="text"
                        className="form-control"
                        id="name"
                        name="name"
                        value={selectedData.tc_w_no}
                        onChange={(e) =>
                          setSelectedData({
                            ...selectedData,
                            tc_w_no: e.target.value,
                          })
                        }
                      />
                    </div>
                    <div className="form-group">
                      <label htmlFor="name">Email:</label>
                      <input
                        type="text"
                        className="form-control"
                        id="name"
                        name="name"
                        value={selectedData.tc_e_id}
                        onChange={(e) =>
                          setSelectedData({
                            ...selectedData,
                            tc_e_id: e.target.value,
                          })
                        }
                      />
                    </div>
                    <div className="form-group">
                      <label htmlFor="name">Address:</label>
                      <input
                        type="text"
                        className="form-control"
                        id="name"
                        name="name"
                        value={selectedData.tc_address}
                        onChange={(e) =>
                          setSelectedData({
                            ...selectedData,
                            tc_address: e.target.value,
                          })
                        }
                      />
                    </div>
                  </form>
                )}
              </div>
              <div className="modal-footer">
                <button
                  type="button"
                  className="btn btn-secondary"
                  onClick={handleCloseModal}
                >
                  Close
                </button>
                <button
                  type="button"
                  className="btn btn-primary"
                  onClick={handleUpdateData}
                >
                  Update
                </button>
              </div>
            </div>
          </div>
        </div>

        {/* Modal backdrop */}
        <div
          className={modal-backdrop ${modalOpen ? "show" : ""}}
          style={{ display: modalOpen ? "block" : "none" }}
        ></div>
      </>

      {/*  */}
      {/* //! */}

      <div id="main-content">
        <div className="row clearfix">
          <div className="col-lg-12 col-md-12">
            <div className="card planned_task">
              {/*  */}
              <div className="container-fluid">
                <div className="block-header">
                  <div className="row clearfix">
                    <div className="col-md-6 col-sm-12">
                      <h1>Clients</h1>
                      <nav aria-label="breadcrumb">
                        <ol className="breadcrumb">
                          <li className="breadcrumb-item">
                            <Link to="/dashboard">
                              <i className="icon-home"> </i>
                            </Link>
                          </li>
                          <li className="breadcrumb-item">Dashboard</li>
                          <li className="breadcrumb-item active">Clients</li>
                        </ol>
                      </nav>
                    </div>

                    {/* //! Create Clients model  button  */}

                    <div
                      className="col-md-6 col-sm-12 text-right hidden-xs"
                      // onClick={handleCreateButtonOpen}
                    >
                      <div className="d-flex flex-row-reverse">
                        <button
                          onClick={handleCreateButtonOpen}
                          className="btn btn-success ml-1 mr-1"
                          data-toggle="modal"
                          // data-target=".bd-example-modal-lg"
                        >
                          <i className="icon-plus"></i> Create Clients
                        </button>
                        {/* //! Create Clients  model */}

                        {/*  */}
                        {/* //! Edit user model */}

                        {/*  */}
                      </div>
                    </div>

                    {/*  !------------------------------ */}
                  </div>
                </div>

                <>
                  <div
                    className={modal ${create_modalOpen ? "show" : ""}}
                    tabIndex="-1"
                    role="dialog"
                    style={{
                      display: create_modalOpen ? "block" : "none",
                    }}
                  >
                    <div className="modal-dialog modal-lg">
                      <div className="modal-content">
                        <div className="modal-header">
                          <h5 className="modal-title h4" id="myLargeModalLabel">
                            New Client
                          </h5>
                          <button
                            type="button"
                            className="close"
                            // data-dismiss="modal"
                            // aria-label="Close"
                            onClick={handleCreateButtonClose}
                          >
                            <span aria-hidden="true">×</span>
                          </button>
                        </div>
                        <div className="modal-body">
                          {/*  */}

                          <form onSubmit={onSubmitChange}>
                            <div className="form-group">
                              <label
                                for="exampleInputEmail1"
                                className="d-flex"
                              >
                                Client Name
                              </label>
                              <input
                                type="text"
                                className="form-control"
                                id="exampleInputEmail1"
                                aria-describedby="emailHelp"
                                placeholder="Client Name"
                                name="user_name"
                                onChange={(e) => changeUserFieldHandler(e)}
                                required
                              />
                            </div>
                            <div className="form-group">
                              <label
                                for="exampleInputPassword1"
                                className="d-flex"
                              >
                                Phone Number
                              </label>
                              <input
                                type="tel"
                                // pattern="[0-9]{10}"
                                min={10}
                                maxLength={10}
                                className="form-control"
                                // id="exampleInputPassword1"
                                placeholder=" Client Number"
                                name="user_m_no"
                                onChange={(e) => changeUserFieldHandler(e)}
                                required
                              />
                            </div>

                            {/*  */}
                            <div className="form-group">
                              <label
                                for="exampleInputPassword1"
                                className="d-flex"
                              >
                                WhatsApp Number
                              </label>
                              <input
                                type="tel"
                                // pattern="[0-9]{10}"
                                min={10}
                                maxLength={10}
                                className="form-control"
                                // id="exampleInputPassword1"
                                placeholder=" Client Number"
                                name="user_w_name"
                                onChange={(e) => changeUserFieldHandler(e)}
                                required
                              />
                            </div>
                            {/*  */}
                            <div className="form-group">
                              <label
                                for="exampleInputPassword1"
                                className="d-flex"
                              >
                                Email
                              </label>
                              <input
                                type="email"
                                className="form-control"
                                id="exampleInputPassword1"
                                placeholder=" Client Email"
                                name="user_e_nid"
                                onChange={(e) => changeUserFieldHandler(e)}
                                required
                              />
                            </div>
                            {/*  */}

                            <div className="form-group">
                              <label
                                for="exampleInputPassword1"
                                className="d-flex"
                              >
                                Client Address
                              </label>
                              <input
                                type="text"
                                className="form-control"
                                id="exampleInputPassword1"
                                placeholder=" Client Address"
                                name="user_a"
                                onChange={(e) => changeUserFieldHandler(e)}
                                required
                              />
                            </div>
                            {/*  */}
                            <div className="modal-footer">
                              <button
                                type="submit"
                                className="btn btn-primary pl-5
                                      pr-5
                                      pt-2
                                      pb-2"
                                onClick={handleCreateButtonClose}
                              >
                                Add
                              </button>
                            </div>
                          </form>

                          {/*  */}
                        </div>
                      </div>
                    </div>
                  </div>

                  <div
                    className={`modal-backdrop ${
                      create_modalOpen ? "show" : ""
                    }`}
                    style={{
                      display: create_modalOpen ? "block" : "none",
                    }}
                  ></div>
                </>

                {/*  */}
                <div className="table-responsive">
                  <table className="table table-striped">
                    <thead>
                      <tr>
                        <th>Id</th>
                        <th>NAME</th>
                        <th>Mobile Number</th>
                        <th>Whatsapp Number</th>
                        <th>Email</th>
                        <th>Address</th>
                        <th>Action</th>
                        <td></td>
                      </tr>
                    </thead>
                    <tbody>
                      {userData.length > 0 ? (
                        userData.map((item, i) => (
                          <tr key={i}>
                            <td>{item.tc_id}</td>
                            <td>{item.tc_name}</td>
                            <td>{item.tc_m_no}</td>
                            <td>{item.tc_w_no}</td>
                            <td>{item.tc_e_id}</td>
                            <th>{item.tc_address}</th>
                            <td>
                              <button
                                data-toggle="modal"
                                data-target=".bd-example-modal-lg2"
                                className="btn btn-success ml-1 mr-1"
                                data-backdrop="static"
                                data-keyboard="false"
                                onClick={() => handleEditClick(item.tc_id)}
                              >
                                Edit
                              </button>
                            </td>
                            <td>
                              <button
                                className="btn btn-danger btn-round ml-1 mr-1"
                                onClick={() => deleteData(item.tc_id)}
                              >
                                Delete
                              </button>
                            </td>
                          </tr>
                        ))
                      ) : (
                        <>
                          <tr>
                            <td colSpan={8} className="text-center">
                              No data available
                            </td>
                          </tr>
                        </>
                      )}
                    </tbody>
                  </table>
                </div>
              </div>
            </div>
          </div>
        </div>

        <ToastContainer
          position="top-right"
          autoClose={5000}
          hideProgressBar={false}
          newestOnTop={false}
          closeOnClick
          rtl={false}
          pauseOnFocusLoss
          draggable
          pauseOnHover
          theme="colored"
          // transition: Bounce,
        />
      </div>
    </>
  );
}

export default Client