All files / pages/UCSBOrganization UCSBOrganizationEditPage.jsx

100% Statements 60/60
100% Branches 7/7
100% Functions 4/4
100% Lines 60/60

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 781x 1x 1x 1x 1x 1x   1x 11x 11x   11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x     11x 11x 3x 3x 3x 3x 3x 3x 3x 3x 3x   11x 11x 3x 3x   11x 11x 11x 11x       11x   11x 3x 3x   11x 3x 3x   8x 8x 8x 8x 8x 11x 11x 11x 11x           11x  
import BasicLayout from "main/layouts/BasicLayout/BasicLayout";
import { useParams } from "react-router";
import UCSBOrganizationForm from "main/components/UCSBOrganization/UCSBOrganizationForm";
import { Navigate } from "react-router";
import { useBackend, useBackendMutation } from "main/utils/useBackend";
import { toast } from "react-toastify";
 
export default function UCSBOrganizationEditPage({ storybook = false }) {
  // The key is orgCode, not id
  let { orgCode } = useParams();
 
  // GET the existing organization by orgCode
  const {
    data: ucsborganization,
    _error,
    _status,
  } = useBackend(
    // React Query key (must be unique per orgCode)
    [`/api/UCSBOrganization?orgCode=${orgCode}`],
    //[`/api/UCSBOrganization`, { params: { orgCode } }],
    {
      method: "GET",
      url: "/api/UCSBOrganization",
      //params: { orgCode: orgCode }, // send as query parameter
      params: { orgCode,},
    },
  );
 
  // PUT request to update an organization
  const objectToAxiosPutParams = (ucsborganization) => ({
    url: "/api/UCSBOrganization",
    method: "PUT",
    params: { orgCode: ucsborganization.orgCode },
    data: {
      orgTranslationShort: ucsborganization.orgTranslationShort,
      orgTranslation: ucsborganization.orgTranslation,
      inactive: ucsborganization.inactive,
    },
  });
 
  // Toast after successful update
  const onSuccess = (ucsborganization) => {
    toast(`UCSBOrganization Updated - orgCode: ${ucsborganization.orgCode}`);
  };
 
  const mutation = useBackendMutation(
    objectToAxiosPutParams,
    { onSuccess },
    [`/api/UCSBOrganization?orgCode=${orgCode}`],
    //[`/api/UCSBOrganization`, { params: { orgCode } }],
  );
 
  const { isSuccess } = mutation;
 
  const onSubmit = async (data) => {
    mutation.mutate(data);
  };
 
  if (isSuccess && !storybook) {
    return <Navigate to="/ucsborganization" />;
  }
 
  return (
    <BasicLayout>
      <div className="pt-2">
        <h1>Edit UCSBOrganization</h1>
        {ucsborganization && (
          <UCSBOrganizationForm
            submitAction={onSubmit}
            buttonLabel={"Update"}
            initialContents={ucsborganization}
          />
        )}
      </div>
    </BasicLayout>
  );
}