diff --git a/assets/admin/pages/MySecretariesPage.tsx b/assets/admin/pages/MySecretariesPage.tsx
index 8393c4b7..2755b617 100644
--- a/assets/admin/pages/MySecretariesPage.tsx
+++ b/assets/admin/pages/MySecretariesPage.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
-import { PlusIcon, PencilIcon, TrashIcon, IdentificationIcon, PhoneIcon } from '@heroicons/react/24/outline';
+import { PlusIcon, PencilIcon, NoSymbolIcon, CheckCircleIcon, IdentificationIcon, PhoneIcon } from '@heroicons/react/24/outline';
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';
@@ -132,7 +132,8 @@ function PermissionsMatrix({
// ── Create form schema ─────────────────────────────────────────────────────
const createSchema = z.object({
- mobile_number: z.string().min(10, 'شماره موبایل معتبر نیست'),
+ name: z.string().min(2, 'نام الزامی است'),
+ mobile_number: z.string().regex(/^09[0-9]{9}$/, 'شماره موبایل معتبر نیست'),
});
type CreateForm = z.infer
;
@@ -182,6 +183,7 @@ export default function MySecretariesPage() {
const secretaries = isClinic
? (clinicSecrData?.data ?? [])
: (doctorSecrData?.data ?? []);
+ const activeSecretaryCount = secretaries.filter((s) => s.is_active).length;
const isLoading = isClinic ? clinicSecrLoading : doctorSecrLoading;
const createForm = useForm({ resolver: zodResolver(createSchema) });
@@ -211,10 +213,11 @@ export default function MySecretariesPage() {
onError: (e: any) => toast.error(e.message),
});
- const deleteMutation = useMutation({
- mutationFn: (uuid: string) => api.delete(`/api/v1/secretary/${uuid}`),
- onSuccess: () => {
- toast.success('منشی غیرفعال شد');
+ const toggleActiveMutation = useMutation({
+ mutationFn: ({ uuid, active }: { uuid: string; active: boolean }) =>
+ api.patch(`/api/v1/secretary/${uuid}`, { active }),
+ onSuccess: (_, { active }) => {
+ toast.success(active ? 'منشی فعال شد' : 'منشی غیرفعال شد');
setDeleteTarget(null);
qc.invalidateQueries({ queryKey: ['my-secretaries'] });
qc.invalidateQueries({ queryKey: ['my-secretaries-clinic'] });
@@ -298,8 +301,15 @@ export default function MySecretariesPage() {
-
),
@@ -312,7 +322,7 @@ export default function MySecretariesPage() {
title="منشیان من"
description="مدیریت منشیان و دسترسیهای آنها"
action={
- secretaries.length >= maxSecretaries ? (
+ activeSecretaryCount >= maxSecretaries ? (
ارتقاء پنل برای افزودن منشی
@@ -378,33 +388,74 @@ export default function MySecretariesPage() {
)}
{/* Modal افزودن منشی */}
-