Quiz_dashboard/src/Pages/Admin/Reseller/Form/formUtils.ts
2024-09-24 15:23:09 +03:00

89 lines
2.8 KiB
TypeScript

import * as Yup from "yup";
import { objectToKeyValueArray } from "../../../../utils/objectToKeyValueArray";
interface Location {
lat: number;
lng: number;
}
interface User {
username: string;
phone_number?: number;
type?:string
}
interface PersonalDetailsForm {
id: number;
first_name: string | null;
last_name: string | null;
location: Location[];
contact_number1: string | null;
contact_number2: string | null;
card_number: string | null;
username: string | null;
password: string | null;
area_id: number | null;
}
interface PersonalDetailsEditForm {
id: number;
first_name: string | null;
last_name: string | null;
location: Location[];
contact_number1: string | null;
contact_number2: string | null;
card_number: string | null;
user: User;
area_id: number | null;
}
export const getInitialValues = (objectToEdit: Partial<PersonalDetailsForm>) => {
const location = objectToEdit?.location?.[0] || { lat: 0, lng: 0 };
return {
id: objectToEdit?.id ?? 0,
first_name: objectToEdit?.first_name ?? null,
last_name: objectToEdit?.last_name ?? null,
location_lat: location.lat,
location_lng: location.lng,
contact_number1: objectToEdit?.contact_number1 ?? null,
contact_number2: objectToEdit?.contact_number2 ?? null,
card_number: objectToEdit?.card_number ?? null,
username: objectToEdit?.username ?? null,
password: objectToEdit?.password ?? null,
area_id: objectToEdit?.area_id ?? null,
};
};
export const getValidationSchema = () => {
// validate input
return Yup.object().shape({
id: Yup.number().required(),
first_name: Yup.string().required('first_name is required'),
last_name: Yup.string().required('last_name is required'),
location_lat: Yup.string().required('lat is required'),
location_lng: Yup.string().required('lng is required'),
contact_number1: Yup.string().required('contact_number1 is required'),
contact_number2: Yup.string().required('contact_number2 is required'),
username: Yup.string().required('username is required'),
area_id: Yup.number().required('area_id is required'),
});
};
export const getInitialValuesEdit = (objectToEdit: Partial<PersonalDetailsEditForm>) => {
const location = objectToEdit?.location || { lat: 0, lng: 0 };
console.log(objectToEdit);
return {
id: objectToEdit?.id ?? 0,
first_name: objectToEdit?.first_name ?? null,
last_name: objectToEdit?.last_name ?? null,
location_lat: location.lat,
location_lng: location.lng,
contact_number1: objectToEdit?.contact_number1 ?? null,
contact_number2: objectToEdit?.contact_number2 ?? null,
card_number: objectToEdit?.card_number ?? null,
username: objectToEdit?.user?.username ?? null,
area_id: objectToEdit?.area_id ?? null,
};
};