Commit 26f803b2 by Arjun Jhukal

simplified user creations for the admin

parent f4303093
......@@ -6,7 +6,7 @@ import AdminDashboardRoot from '../../(admin)/AdminDashboard';
export default function DashboardProvider({ children }: { children: React.ReactNode }) {
const user = useAppSelector(state => state?.auth.user);
if (user?.role && user.role.toUpperCase() === "USER") {
if (user?.role && user.role.toUpperCase() === "USER" || !user) {
return (
<div>{children}</div>
)
......
......@@ -106,7 +106,7 @@ export default function Header({ open, handleDrawerOpen, handleMobileMenuToggle
<HambergerMenu className='!text-para-light' />
</IconButton>}
{
user?.role && user.role.toUpperCase() === 'USER' ? (
user?.role && user.role.toUpperCase() === 'USER' || !user ? (
<UserHeader />
) : (
<AdminHeader />
......
......@@ -125,7 +125,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
if (downLG) {
return <div className={`mobile__menu__wrapper fixed left-0 top-0 bottom-0 max-h-screen backdrop-blur-2xl bg-[#290139CF] w-full z-[9999] transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible" : "opacity-0 invisible"}`} >
<div className={`mobile__primary__menu max-w-[600px] w-full h-screen transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible translate-x-0" : "opacity-0 invisible translate-x-[-100%]"} ${user?.role && user.role.toUpperCase() === 'USER' ? "bg-[#11011E]" : "bg-white"}`} ref={ref}>
<div className={`mobile__primary__menu max-w-[600px] w-full h-screen transition-all duration-300 ${mobileMenuOpen ? "opacity-100 visible translate-x-0" : "opacity-0 invisible translate-x-[-100%]"} ${user?.role && user.role.toUpperCase() === 'USER'|| !user ? "bg-[#11011E]" : "bg-white"}`} ref={ref}>
<div className="flex justify-between items-center p-4 ">
{data?.data?.logo && <Link href="/">
<Image src={data?.data?.logo} alt="Logo" width={102} height={56} />
......@@ -168,7 +168,7 @@ export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }
<Box className={`mt-8 menu__wrapper`} >
{
user?.role && user.role.toUpperCase() === 'USER' ? (
user?.role && user.role.toUpperCase() === 'USER'|| !user ? (
<UserMenu open={open} />
) : (
<AdminMenu open={open} />
......
......@@ -50,7 +50,7 @@ const formFieldSx = {
}
};
export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string }) {
export default function AddPlayerForm({ formik, id, data, loading, buttonLabel, isAdmin = false }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string; isAdmin?: boolean }) {
const user = useAppSelector(state => state.auth.user);
return (
<form onSubmit={formik.handleSubmit}>
......@@ -120,7 +120,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
</span>
</div>
<div className="input__field">
{isAdmin ? "" : <div className="input__field">
<InputLabel htmlFor="wallet_address">Wallet Address</InputLabel>
<OutlinedInput
fullWidth
......@@ -134,55 +134,57 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">
{formik.touched.wallet_address && formik.errors.wallet_address ? formik.errors.wallet_address : ""}
</span>
</div>
</div>}
<div className="input__field col-span-1">
<InputLabel htmlFor="address">Address Line 1<span className="text-red-500">*</span></InputLabel>
<OutlinedInput
fullWidth
id="address"
name="address"
placeholder="Enter address"
value={formik.values.address}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.address && formik.errors.address ? formik.errors.address : ""}
</span>
</div>
{isAdmin? "":<>
<div className="input__field col-span-1">
<InputLabel htmlFor="address">Address Line 1<span className="text-red-500">*</span></InputLabel>
<OutlinedInput
fullWidth
id="address"
name="address"
placeholder="Enter address"
value={formik.values.address}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.address && formik.errors.address ? formik.errors.address : ""}
</span>
</div>
<div className="input__field col-span-1">
<InputLabel htmlFor="address_line_two">Address Line 2</InputLabel>
<OutlinedInput
fullWidth
id="address_line_two"
name="address_line_two"
placeholder="Enter address line 2"
value={formik.values.address_line_two}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.address_line_two && formik.errors.address_line_two ? formik.errors.address_line_two : ""}
</span>
</div>
<div className="input__field col-span-1">
<InputLabel htmlFor="address_line_two">Address Line 2</InputLabel>
<OutlinedInput
fullWidth
id="address_line_two"
name="address_line_two"
placeholder="Enter address line 2"
value={formik.values.address_line_two}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.address_line_two && formik.errors.address_line_two ? formik.errors.address_line_two : ""}
</span>
</div>
<div className="input__field">
<InputLabel htmlFor="city">City <span className="text-red-500">*</span></InputLabel>
<OutlinedInput
fullWidth
id="city"
name="city"
placeholder="Enter city"
value={formik.values.city}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.city && formik.errors.city ? formik.errors.city : ""}
</span>
</div>
<div className="input__field">
<InputLabel htmlFor="city">City <span className="text-red-500">*</span></InputLabel>
<OutlinedInput
fullWidth
id="city"
name="city"
placeholder="Enter city"
value={formik.values.city}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
/>
<span className="error">
{formik.touched.city && formik.errors.city ? formik.errors.city : ""}
</span>
</div>
</>}
<div className="lg:col-span-2">
<InputLabel htmlFor="phone">Phone <span className="text-red-500">*</span></InputLabel>
......@@ -243,7 +245,8 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">{formik.touched.state && formik.errors.state}</span>
</div>
<div className="input__field">
{isAdmin ? "" : <div className="input__field">
<InputLabel htmlFor="ssn">SSN<span className="text-red-500"> (last 4 Digit) *</span></InputLabel>
<OutlinedInput
fullWidth
......@@ -257,7 +260,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">
{formik.touched.ssn && formik.errors.ssn ? formik.errors.ssn : ""}
</span>
</div>
</div>}
<div className="input__field">
<InputLabel htmlFor="gender">Gender <span className="text-red-500">*</span></InputLabel>
<Select
......@@ -289,7 +292,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">{formik.touched.gender && formik.errors.gender}</span>
</div>
<div className="input__field">
{isAdmin ? <div className="input__field">
<InputLabel htmlFor="postal_code">Zip Code <span className="text-red-500">*</span></InputLabel>
<OutlinedInput
fullWidth
......@@ -303,7 +306,7 @@ export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }
<span className="error">
{formik.touched.postal_code && formik.errors.postal_code ? formik.errors.postal_code : ""}
</span>
</div>
</div> : ""}
{/* DOB */}
<div className="input__field">
......
......@@ -17,12 +17,12 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
.required("Email is required"),
first_name: Yup.string().required("First name is required"),
last_name: Yup.string().required("Last name is required"),
wallet_address: Yup.string().nullable(),
address: Yup.string().required("Address is required"),
city: Yup.string().required("City is required"),
// wallet_address: Yup.string().nullable(),
// address: Yup.string().required("Address is required"),
// city: Yup.string().required("City is required"),
postal_code: Yup.string().required("Zip code is required"),
state: Yup.string().required("State is required"),
ssn: Yup.string().required("SSN is required"),
// ssn: Yup.string().required("SSN is required"),
gender: Yup.string().required("Gender is required"),
phone: Yup.string()
.matches(/^\+?\d{7,15}$/, "Invalid phone number")
......@@ -30,7 +30,7 @@ export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
password: isEdit
? Yup.string().nullable()
: Yup.string().min(6, "Password must be at least 6 characters").required("Password is required"),
password_confirmation: isEdit ? Yup.string().nullable() : Yup.string().when("password", {
password_confirmation: Yup.string().when("password", {
is: (val: string) => !!val,
then: (schema) => schema.oneOf([Yup.ref("password")], "Passwords must match").required("Password confirmation is required"),
otherwise: (schema) => schema.nullable(),
......@@ -111,10 +111,10 @@ export default function AddPlayerPage({ id }: { id?: string }) {
if (id) {
try {
const response = await updatePlayer({ id: id, body: formData });
const response = await updatePlayer({ id: id, body: formData }).unwrap();
dispatch(
showToast({
message: response?.data?.message || "User Updated Successfully",
message: response?.message || "User Updated Successfully",
variant: ToastVariant.SUCCESS
})
);
......@@ -158,7 +158,7 @@ export default function AddPlayerPage({ id }: { id?: string }) {
<h2 className="text-[20px] leading-[140%] font-bold">Player Details</h2>
</div>
<AddPlayerForm formik={formik} id={id} data={data} loading={isLoading || updating} />
<AddPlayerForm formik={formik} id={id} data={data} loading={isLoading || updating} isAdmin={true} />
</div>
)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment