import moment from "jalali-moment"; import { toast } from "react-toastify"; import specialties from "@/data/specialties.json"; export const numberToArStyle = (num) => num.toLocaleString("ar-AE"); export const isActiveURL = (link, name) => link === name; export const convertToJalali = (date) => { const currentDate = date; const jalaliDate = moment(currentDate).format("jYYYY/jM/jD"); const jalaliYear = moment(jalaliDate, "jYYYY/jM/jD").jYear(); const jalaliMonth = moment(jalaliDate, "jYYYY/jM/jD").jMonth() + 1; const jalaliDay = moment(jalaliDate, "jYYYY/jM/jD").jDate(); return `${jalaliYear}/${jalaliMonth}/${jalaliDay}`; }; export const handleTwoLength = (value) => String(value).length === 1 ? `0${value}` : value; export const checkAllValues = (data) => { for (let key in data) { if (typeof data[key] === "object" && data[key] !== null) { if ("value" in data[key]) { if (!data[key].value) { return false; } } else { if (!checkAllValues(data[key])) { return false; } } } } return true; }; export const checkTimes = (arr) => { return arr.map((day) => { const hasMorningTime = day.morning_time.some((time) => time !== ""); const hasEveningTime = day.evening_time.some((time) => time !== ""); return hasMorningTime && hasEveningTime; }); }; export const uploadImage = async (event) => { let obj = { file: "", blob: "", }; const file = event.target.files[0]; if (file) { obj.file = file; const readFileAsDataURL = (file) => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); reader.readAsDataURL(file); }); }; try { obj.blob = await readFileAsDataURL(file); return obj; } catch (error) { console.error("Error reading file: ", error); throw error; } } else { throw new Error("No file selected"); } }; export const alert = (type, text, prop) => { toast[type](

پیغام{" "} {type === "error" ? "خطا" : type === "warning" ? "هشدار" : type === "info" ? "اعلام" : "موفقیت"}

{text}

, { prop }, ); }; export const addLabelToList = (list) => list.map((item) => { return { ...item, label: item.name, }; }); export const formatPhoneNumber = (input) => { const digits = input.replace(/\D/g, ""); const trimmed = digits.substring(0, 9); const match = trimmed.match(/^(\d{0,2})(\d{0,3})(\d{0,4})$/); if (!match) return trimmed; return [match[1], match[2], match[3]].filter(Boolean).join(" "); }; export function validatePhoneNumber(input) { const digits = input.replace(/\D/g, ""); if (!digits) { return { valid: false, text: "شماره موبایل نمی‌تواند خالی باشد." }; } if (digits.length !== 9) { return { valid: false, text: "شماره موبایل باید دقیقا 11 رقم باشد." }; } const isValid = /^[1-9]\d{8}$/.test(digits); if (!isValid) { return { valid: false, text: "شماره موبایل نامعتبر است." }; } return { valid: true, text: null }; } export const searchOnList = (list, value, name) => { let newList = list; newList = list.filter((item) => item[name].toLowerCase().includes(value)); return newList; }; export const addKeyToList = (list, nameKey, nameValue) => { const newList = list.map((item) => { return { ...item, [nameKey]: item[nameValue], }; }); return newList; }; export function clearFilterParams(router, listRemove) { const currentParams = new URLSearchParams(window.location.search); const keysToRemove = listRemove; keysToRemove.forEach((key) => currentParams.delete(key)); const queryString = currentParams.toString(); const newUrl = queryString ? `/doctors?${queryString}` : "/doctors"; router.push(newUrl); } export const filterList = (data) => { const parentList = specialties.filter((item) => !item.parent); const childrenList = specialties.filter((item) => item.parent); const changedParentList = addKeyToList(parentList, "label", "name") || []; const changedChildrenList = addKeyToList(childrenList, "label", "name") || []; const filteredChildrenList = data && data.category ? changedChildrenList.filter((item) => item.parent === data.category.id) : []; return { parentList: changedParentList, childrenList: filteredChildrenList, }; };