Source

pages/Dashboard/Sharetransferrequests/DocumentForm.jsx

import axios from "axios";
import React from "react";
import { useState } from "react";
import baseUrl from "../../../array/base/config";
import "../Sharetransferrequests/sharetransferrequest.css";
import Calendar from "@sbmdkl/nepali-datepicker-reactjs";
import "@sbmdkl/nepali-datepicker-reactjs/dist/index.css";

/**
 * A form for capturing shareholder verification document information.
 * @param {object} props - The component's props.
 * @param {function} props.prev - The function to go back to the previous step.
 * @returns {JSX.Element} The rendered component.
 */
const DocumentForm = ({ prev }) => {
  // const [email, setEmail] = useState('');
  const [document_issue_date, setDocumentIssueDate] = useState("");
  const [document_type, setDocumentType] = useState("");
  const [document_number, setDocumentNumber] = useState("");
  const [document_file, setDocument_file] = useState(null);
  const [document_issue_date_bs, setDocument_issue_date_bs] = useState("");
  const [document_expiry_date, setDocument_expiry_date] = useState("");
  const [document_expiry_date_bs, setDocument_expiry_date_bs] = useState("")
  const [document_issue_place, setDocument_issue_place] = useState("");
  const [shareholder, setShareholder] = useState(null);

  const handlePrevious = () => {
    // Go back to the previous step
    prev();
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(
      document_issue_date,
      document_type,
      document_number,
      document_file,
      document_issue_date_bs,
      document_expiry_date_bs,
      document_expiry_date,
      document_issue_place,
    );
    const formData = new FormData();
    formData.append("document_issue_date", document_issue_date);
    formData.append("document_type", document_type);
    formData.append("document_number", document_number);
    formData.append("document_file", document_file);
    formData.append("document_issue_date_bs", document_issue_date_bs);
    formData.append("document_expiry_date", document_expiry_date);
    formData.append("document_expiry_date_bs", document_expiry_date_bs);
    formData.append("document_issue_place", document_issue_place);
    // formData.append("shareholder", 1);


    const detail = localStorage.getItem("token");
    axios
      .post(`${baseUrl}/api/shareholderdocument/`, formData, {
        headers: {
          Authorization: `Token ${detail}`,
          "Content-Type": "multipart/form-data",
        },
      })
      .then((response) => {
        console.log(response);
        // handle successful response
      })
      .catch((error) => {
        console.error("The document post error is ", error);
        // handle error
      });
  };

  const handleDocumentTypeChange = (e) => {
    const type = e.target.value;
    setDocumentType(type);
  };

  const handleDocumentNumberChange = (e) => {
    const number = e.target.value;
    setDocumentNumber(number);
  };

  const handleFileChange = (e) => {
    const document = e.target.files[0];
    setDocument_file(document);
  };

  const handleIssueDateChangeBS = ({bsDate}) => {
    //this receives a date obj with bsDate and adDate by default
    //direct access by {bsDate}
    setDocument_issue_date_bs(bsDate);
  };
  const handleIssueDateChange = (e) => {
    const date = e.target.value;
    setDocumentIssueDate(date);
  };

  const handleDocumentExpiryChange = ({bsDate, adDate}) => {
    setDocument_expiry_date_bs(bsDate);
    setDocument_expiry_date(adDate)
  };

  const handleIssuePlaceChange = (e) => {
    const place = e.target.value;
    setDocument_issue_place(place);
  };

 

  return (
    <div className="document_form_container">
      <div className="sharetransfer_card">
         <div className="row">
              <div className="col-lg-4">
                  <div className="sharetransfer_form_group">
                      <label>
                        Document Type:
                        <select
                          name="document_type"
                          value={document_type}
                          onChange={handleDocumentTypeChange}
                        >
                          <option value="CITIZENSHIP_CERTIFICATE">
                            Citizenship Certificate
                          </option>
                          <option value="PASSPORT">Passport</option>
                          <option value="DRIVING_LICENSE">Driving License</option>
                          <option value="VOTER_ID">Voter ID</option>
                          <option value="NATIONAL_ID">National ID</option>
                          <option value="OTHER">Other</option>
                        </select>
                      </label>
                  </div>
              </div>
              <div className="col-lg-4">
                  <div className="sharetransfer_form_group">
                      <label>
                        Document Number:
                        <input
                          type="text"
                          name="document_number"
                          value={document_number}
                          onChange={handleDocumentNumberChange}
                          required
                          maxLength={50}
                        />
                      </label>
                  </div>
              </div>
              <div className="col-lg-4">
                  <div className="sharetransfer_form_group">
                      <label>
                        Document Issue Date:
                        <input
                          type="date"
                          name="document_issue_date"
                          value={document_issue_date}
                          onChange={handleIssueDateChange}
                          required
                        />
                      </label>
                  </div>
              </div>
              <div className="col-lg-4">
                  <div className="sharetransfer_form_group">
                    <label htmlFor="issueDate">Issue Date (BS):</label>
                    <Calendar
                      id="issueDateBS"
                      value={document_issue_date_bs}
                      onChange={handleIssueDateChangeBS}
                      dateFormat="YYYY-MM-DD"
                      language="en"
                    />
                  </div>
              </div>
              <div className="col-lg-4">
                 <div className="sharetransfer_form_group">
                      <label htmlFor="expiryDate">Document Expiry Date(B.S.):</label>
                      <Calendar
                        id="expiryDateBS"
                        value={document_expiry_date}
                        onChange={handleDocumentExpiryChange}
                        dateFormat="YYYY-MM-DD"
                        language="en"
                      />
                 </div>
              </div>
              <div className="col-lg-4">
                 <div className="sharetransfer_form_group">
                    <label htmlFor="issuePlace">Issue Place:</label>
                    <input
                      type="text"
                      id="issuePlace"
                      value={document_issue_place}
                      onChange={handleIssuePlaceChange}
                    />
                 </div>
              </div>
              <div className="col-lg-6">
                    <label htmlFor="file">Document File:</label>
                    <div className="sharetransfer_form_group_img">
                      <input type="file" id="file" onChange={handleFileChange} />
                      {document_file && (
                        <img src={URL.createObjectURL(document_file)} alt="Selected file" />
                      )}
                    </div>
              </div>
         </div>
       
       
      

       
        <div className="d-flex justify-end">
          {/* <button onClick={handlePrevious}>Back</button> */}
          <button onClick={handleSubmit} className="sharetransfer_button"> Submit</button>
        </div>
      </div>
    </div>
  );
};

export default DocumentForm;