ui-nyla/src/pages/Register/RegisterSummary.tsx
idittrich-valueon 1366982db0 deployment2
2025-05-07 12:08:11 +02:00

117 lines
No EOL
3.7 KiB
TypeScript

import { useEffect, useState } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
import api from '../../api';
import { useAuthToken } from '../../auth/Hooks/use-auth-token';
function RegisterSummary() {
const navigate = useNavigate();
const location = useLocation();
const user = location.state?.user;
const organisation = location.state?.organisation;
const pricing = location.state?.price;
const [isSubmitting, setIsSubmitting] = useState(false);
const [submitSuccess, setSubmitSuccess] = useState(false);
const [submitError, setSubmitError] = useState<string | null>(null);
const [responseMessageUser, setResponseMessageUser] = useState<string | null>(null);
const [responseMessageOrganisation, setResponseMessageOrganisation] = useState<string | null>(null);
const { getToken } = useAuthToken();
const handleSubmit = async () => {
setIsSubmitting(true);
setSubmitError(null);
setResponseMessageUser(null);
setResponseMessageOrganisation(null);
const payload = {
organisation: {
name: organisation.organisationName,
size: organisation.organisationSize,
country: organisation.country,
tenant_id: organisation.tenantID
},
user: {
name: user.userName,
email: user.userEmail,
azure_id: user.userAzureID,
position: user.userPosition,
phone: user.phoneNumber,
role: "admin"
}
};
try {
const token = await getToken();
const response = await api.post(
'http://localhost:8000/api/organisation/register',
payload,
{
headers: {
Authorization: `Bearer ${token}`,
},
}
);
const message = response.data[0]?.message;
setResponseMessageOrganisation(message);
setSubmitSuccess(true);
} catch (error: any) {
const detailMessage = error?.response?.data?.detail;
setSubmitError(detailMessage || 'Something went wrong');
} finally {
setIsSubmitting(false);
};
};
useEffect(() => {
if (submitSuccess) {
setTimeout(() => {
navigate('/');
}, 2000); // 2-second delay
}
}, [submitSuccess]);
return (
<div>
<h1>Summary of Your Registration</h1>
<h2>Your Information</h2>
<ul>
<li>Name: {user.userName}</li>
<li>Email: {user.userEmail}</li>
<li>Your Position: {user.userPosition}</li>
<li>Phone Number: {user.phoneNumber}</li>
</ul>
{/* Display Organisation Data */}
<h2>Organisation Information</h2>
<ul>
<li>Tenant ID: {organisation.tenantID}</li>
<li>Organisation Name: {organisation.organisationName}</li>
<li>Organisation Size: {organisation.organisationSize}</li>
<li>Country: {organisation.country}</li>
</ul>
{/* Display Pricing Data */}
<h2>Pricing Information</h2>
<ul>
<li>Price: {pricing}</li>
</ul>
<button onClick={handleSubmit} disabled={isSubmitting}>
{isSubmitting ? 'Submitting...' : 'Submit Registration'}
</button>
{submitSuccess && <div><p style={{ color: 'green' }}>{responseMessageUser}</p><p style={{ color: 'green' }}>{responseMessageOrganisation}</p></div>}
{submitError && <p style={{ color: 'red' }}>Error: {submitError}</p>}
</div>
);
}
export default RegisterSummary;