From 6ec8b08618fa49e065287743e56a741a6f68d3ee Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 9 Apr 2025 11:12:02 +0330 Subject: [PATCH 001/124] fix duplicate npm i --- dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index abbe1f5..75a0fb3 100644 --- a/dockerfile +++ b/dockerfile @@ -10,7 +10,7 @@ RUN apk add --no-cache python3 make g++ COPY package*.json ./ # Install dependencies -RUN npm npm i --force +RUN npm i --force # Copy source code COPY . . From aaecf79c828c9a43df70427c244abc659ce631f4 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 9 Apr 2025 11:48:48 +0330 Subject: [PATCH 002/124] aset Dockerfile --- .dockerignore | 50 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 11 --------- docker/nginx/nginx.conf | 15 ------------- dockerfile | 33 +++++++++++++++++---------- next.config.js | 9 ++++++++ 5 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 .dockerignore delete mode 100644 docker-compose.yaml delete mode 100644 docker/nginx/nginx.conf create mode 100644 next.config.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2419855 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,50 @@ +# Default Docker ignore +**/.dockerignore +**/Dockerfile +**/docker-compose* + +# Node.js specific +**/node_modules +**/npm-debug.log +**/yarn-debug.log +**/yarn-error.log +**/package-lock.json +**/yarn.lock + +# Next.js specific +**/.next +**/build +**/out +**/.cache + +# Testing +**/__tests__ +**/coverage +**/jest.config.js + +# Environment files +**/.env +**/.env.local +**/.env.development +**/.env.test + +# Version control +**/.git +**/.gitignore +**/.gitmodules + +# IDE specific +**/.vscode +**/.idea +**/*.iml + +# Miscellaneous +**/README.md +**/LICENSE +**/CHANGELOG.md +**/docs +**/notes +**/.DS_Store +**/Thumbs.db +**/tmp +**/dist \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index f5a7eed..0000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# docker-compose.yml -version: '3.8' - -services: - react-app: - build: . - ports: - - "3000:80" # Changed host port - environment: - - NODE_ENV=production - restart: unless-stopped \ No newline at end of file diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf deleted file mode 100644 index 2a58950..0000000 --- a/docker/nginx/nginx.conf +++ /dev/null @@ -1,15 +0,0 @@ -server { - listen 80; - server_name localhost; - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - try_files $uri $uri/ /index.html; - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } -} \ No newline at end of file diff --git a/dockerfile b/dockerfile index 75a0fb3..fca153a 100644 --- a/dockerfile +++ b/dockerfile @@ -3,30 +3,39 @@ FROM node:22-alpine AS builder WORKDIR /app -# Install system dependencies (if needed) -RUN apk add --no-cache python3 make g++ +# Install system dependencies for native modules +RUN apk add --no-cache python3 make g++ git # Copy package files COPY package*.json ./ # Install dependencies -RUN npm i --force +RUN npm install --force # Copy source code COPY . . -# Build React app +# Build Next.js application RUN npm run build # Production stage -FROM nginx:1.25-alpine +FROM node:22-alpine AS production -# Copy nginx config -COPY docker/nginx/nginx.conf /etc/nginx/conf.d/default.conf +WORKDIR /app -# Copy build artifacts -COPY --from=builder /app/build /usr/share/nginx/html +# Enable production mode +ENV NODE_ENV production -# Expose and run -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file +# Install dependencies for production (curl for health checks) +RUN apk add --no-cache curl + +# Copy built assets from builder +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static +COPY --from=builder /app/public ./public + +# Expose the Next.js port +EXPOSE 3000 + +# Start the server +CMD ["node", "server.js"] \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..b60cc32 --- /dev/null +++ b/next.config.js @@ -0,0 +1,9 @@ +// next.config.js +const nextConfig = { + output: 'standalone', + // Add other configurations below + reactStrictMode: true, + swcMinify: true, + } + + module.exports = nextConfig \ No newline at end of file From 62620b6fb5bbf94229523f071099eb39b6414a39 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 9 Apr 2025 11:55:30 +0330 Subject: [PATCH 003/124] fix dockerfile --- dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/dockerfile b/dockerfile index fca153a..b2b2b63 100644 --- a/dockerfile +++ b/dockerfile @@ -1,4 +1,3 @@ -# Build stage FROM node:22-alpine AS builder WORKDIR /app From 5e1a0aa648e1f05038b67052284464e5cf1ff891 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 9 Apr 2025 11:59:27 +0330 Subject: [PATCH 004/124] add nix --- .dockerignore | 50 -------------------------------------------------- dockerfile | 40 ---------------------------------------- nixpacks.toml | 5 +++++ 3 files changed, 5 insertions(+), 90 deletions(-) delete mode 100644 .dockerignore delete mode 100644 dockerfile create mode 100644 nixpacks.toml diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2419855..0000000 --- a/.dockerignore +++ /dev/null @@ -1,50 +0,0 @@ -# Default Docker ignore -**/.dockerignore -**/Dockerfile -**/docker-compose* - -# Node.js specific -**/node_modules -**/npm-debug.log -**/yarn-debug.log -**/yarn-error.log -**/package-lock.json -**/yarn.lock - -# Next.js specific -**/.next -**/build -**/out -**/.cache - -# Testing -**/__tests__ -**/coverage -**/jest.config.js - -# Environment files -**/.env -**/.env.local -**/.env.development -**/.env.test - -# Version control -**/.git -**/.gitignore -**/.gitmodules - -# IDE specific -**/.vscode -**/.idea -**/*.iml - -# Miscellaneous -**/README.md -**/LICENSE -**/CHANGELOG.md -**/docs -**/notes -**/.DS_Store -**/Thumbs.db -**/tmp -**/dist \ No newline at end of file diff --git a/dockerfile b/dockerfile deleted file mode 100644 index b2b2b63..0000000 --- a/dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM node:22-alpine AS builder - -WORKDIR /app - -# Install system dependencies for native modules -RUN apk add --no-cache python3 make g++ git - -# Copy package files -COPY package*.json ./ - -# Install dependencies -RUN npm install --force - -# Copy source code -COPY . . - -# Build Next.js application -RUN npm run build - -# Production stage -FROM node:22-alpine AS production - -WORKDIR /app - -# Enable production mode -ENV NODE_ENV production - -# Install dependencies for production (curl for health checks) -RUN apk add --no-cache curl - -# Copy built assets from builder -COPY --from=builder /app/.next/standalone ./ -COPY --from=builder /app/.next/static ./.next/static -COPY --from=builder /app/public ./public - -# Expose the Next.js port -EXPOSE 3000 - -# Start the server -CMD ["node", "server.js"] \ No newline at end of file diff --git a/nixpacks.toml b/nixpacks.toml new file mode 100644 index 0000000..dc109f0 --- /dev/null +++ b/nixpacks.toml @@ -0,0 +1,5 @@ +[phases.setup] +nixPkgs = ["nodejs_22"] + +[start] +cmd = "pnpm run start" From 0c9a15153dbcd7a7d6211fa8940d3d913d6a4ffc Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 9 Apr 2025 16:17:57 +0330 Subject: [PATCH 005/124] Add correct dockerfile --- Dockerfile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e003570 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,48 @@ +# Dockerfile for Next.js 14 - Optimized for Production + +# Use the official Node.js image with Alpine Linux for a smaller footprint +FROM node:20-alpine AS base + +# Set the working directory in the container +WORKDIR /app + +# Copy package.json and package-lock.json (or yarn.lock) +COPY package*.json ./ + +# Install dependencies - leveraging Docker cache +RUN npm install --production --frozen-lockfile || yarn install --production --frozen-lockfile + +# Copy the rest of the application code +COPY . . + +# Build the Next.js application +RUN npm run build || yarn build + +# Stage 2: Production image - smaller and leaner +FROM node:20-alpine AS runner + +# Set the working directory +WORKDIR /app + +# Set environment variables +ENV NODE_ENV production +ENV NEXT_TELEMETRY_DISABLED 1 # Opt-out of Next.js telemetry + +# Add a non-root user for security +RUN addgroup -g 1001 -S nodejs +RUN adduser -S nextjs -u 1001 + +# Copy only the necessary files from the builder stage +COPY --from=base /app/next.config.js ./ +COPY --from=base /app/public ./public +COPY --from=base --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=base --chown=nextjs:nodejs /app/.next/static ./.next/static + +# Change ownership of all copied files to the non-root user +USER nextjs + +# Expose the port Next.js listens on +EXPOSE 3000 + +# Command to start the Next.js server in production mode +CMD ["node", "server.js"] \ No newline at end of file From 574f7bf00581213205f107a0391e00f8672c9937 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Fri, 25 Apr 2025 17:11:24 +0330 Subject: [PATCH 006/124] feat: Implement dynamic state and city selection - Load states and cities from JSON data files - Filter cities based on selected state - Update UI to disable city dropdown until state is selected - Fix AutoCompleteSelect component to properly handle selection - Reset city selection when state changes - Display selected state and city in button --- app/component/element/AutoCompleteSelect.js | 10 +- components/home/search/modal/index.js | 68 ++- data/city.json | 219 +++++++++ data/state.json | 33 ++ package-lock.json | 481 +++++++++++++++++++- package.json | 1 + 6 files changed, 789 insertions(+), 23 deletions(-) create mode 100644 data/city.json create mode 100644 data/state.json diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 15fae5e..c2301e1 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -2,14 +2,15 @@ import BottomSelect from "@/components/icons/BottomSelect"; import { Autocomplete, Button, TextField } from "@mui/material"; import { styleTextSelectRight } from "@/mui"; -function AutoCompleteSelect({ list, isError, updateData, name, label }) { +function AutoCompleteSelect({ list, isError, updateData, name, label, disabled = false }) { return ( { - updateData && updateData(event.target.innerText, "value", name); + onChange={(event, newValue) => { + updateData && updateData(newValue ? newValue.label : "", name); }} sx={{ ...styleTextSelectRight, @@ -51,8 +52,7 @@ function AutoCompleteSelect({ list, isError, updateData, name, label }) { + {/* Content Modal */} + + +
+
+ +
+
+
+

+ شهر یا استان مورد نظر را انتخاب نمایید: +

+
+ + +
+
+ +
+
+
+
+ + ); +} + +export default ModalSearchCity; From 709f5a40f0d594058fc86018d492b32addd8226a Mon Sep 17 00:00:00 2001 From: ehsan Date: Fri, 2 May 2025 10:16:02 +0330 Subject: [PATCH 012/124] handle component modal in home page --- app/component/modalSearchCity/ButtonFilter.js | 35 +++++++++++++++++++ .../index.js} | 3 +- components/home/search/index.js | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 app/component/modalSearchCity/ButtonFilter.js rename app/component/{ModalSearchCity.js => modalSearchCity/index.js} (99%) diff --git a/app/component/modalSearchCity/ButtonFilter.js b/app/component/modalSearchCity/ButtonFilter.js new file mode 100644 index 0000000..6fb9038 --- /dev/null +++ b/app/component/modalSearchCity/ButtonFilter.js @@ -0,0 +1,35 @@ +// Icons +import ArrowBottomH from "@/components/icons/ArrowBottomH"; +import Location from "@/components/icons/Location"; +import { Button } from "@mui/material"; + +function ButtonFilter({ selected }) { + return ( +
+ +
+ ); +} + +export default ButtonFilter; diff --git a/app/component/ModalSearchCity.js b/app/component/modalSearchCity/index.js similarity index 99% rename from app/component/ModalSearchCity.js rename to app/component/modalSearchCity/index.js index 70b40fd..8cc7a95 100644 --- a/app/component/ModalSearchCity.js +++ b/app/component/modalSearchCity/index.js @@ -15,7 +15,7 @@ import ArrowLeftM from "@/components/icons/ArrowLeftM"; import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; -function ModalSearchCity() { +function ModalSearchCity({ children }) { const [states, setStates] = useState([]); const [cities, setCities] = useState([]); const [filteredCities, setFilteredCities] = useState([]); @@ -101,6 +101,7 @@ function ModalSearchCity() { + {/* Content Modal */} diff --git a/components/home/search/index.js b/components/home/search/index.js index 4f9933d..9c79d87 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -1,7 +1,7 @@ import Search from "@/components/icons/Search"; import { Button, ButtonGroup, TextField } from "@mui/material"; -import ModalSearchCity from "./modal"; import SearchD from "@/components/icons/SearchD"; +import ModalSearchCity from "@/app/component/modalSearchCity"; function SearchBar() { return ( From 8e87b7a3467e6aee7bef77fd3c1461bfaefdcdf4 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Fri, 2 May 2025 11:07:45 +0330 Subject: [PATCH 013/124] Add data and edite readme... --- README.md | 12 +- data/city.json | 64 ++++---- data/specialties.json | 348 +++++++++++++++++++++++++++++++++++++++++- data/state.json | 157 +++++++++++++++---- 4 files changed, 511 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 1c52fe9..1312870 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,6 @@ npm install ## 🛠 Available Scripts -In the project directory, you can run: - ```bash npm run dev ``` @@ -55,6 +53,16 @@ npm run lint Checks the code for linting issues. +## ⚙️ Environment Variables + +Create a `.env` file in the root directory with the following variables: + +``` +REACT_APP_API_URL=https://back-dev.clinic-pro.ir +REACT_APP_CLIENT_ID=NWuujdYHjtAtrhrk_zoWB3w0kyf56wRCOaY36MIqvbs +REACT_APP_CLIENT_SECRET=trhrk_zoWB3w0kyf +``` + ## 🌐 Features - ✅ Responsive design using MUI and Tailwind diff --git a/data/city.json b/data/city.json index 93b367d..1ee1fd1 100644 --- a/data/city.json +++ b/data/city.json @@ -1,6 +1,6 @@ [ { - "id": "1", + "id": "32", "type": "2", "province_id": "1", "name": "تبریز", @@ -10,7 +10,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "2", + "id": "33", "type": "2", "province_id": "2", "name": "ارومیه", @@ -20,7 +20,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "3", + "id": "34", "type": "2", "province_id": "3", "name": "اردبیل", @@ -30,7 +30,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "4", + "id": "35", "type": "2", "province_id": "4", "name": "اصفهان", @@ -40,7 +40,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "5", + "id": "36", "type": "2", "province_id": "5", "name": "کرج", @@ -50,7 +50,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "6", + "id": "37", "type": "2", "province_id": "6", "name": "ایلام", @@ -60,7 +60,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "7", + "id": "38", "type": "2", "province_id": "7", "name": "بوشهر", @@ -70,7 +70,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "8", + "id": "39", "type": "2", "province_id": "8", "name": "تهران", @@ -80,7 +80,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "9", + "id": "40", "type": "2", "province_id": "9", "name": "شهرکرد", @@ -90,7 +90,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "10", + "id": "41", "type": "2", "province_id": "10", "name": "بیرجند", @@ -100,7 +100,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "11", + "id": "42", "type": "2", "province_id": "11", "name": "مشهد", @@ -110,7 +110,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "12", + "id": "43", "type": "2", "province_id": "12", "name": "بجنورد", @@ -120,7 +120,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "13", + "id": "44", "type": "2", "province_id": "13", "name": "اهواز", @@ -130,7 +130,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "14", + "id": "45", "type": "2", "province_id": "14", "name": "زنجان", @@ -140,7 +140,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "15", + "id": "46", "type": "2", "province_id": "15", "name": "سمنان", @@ -150,7 +150,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "16", + "id": "47", "type": "2", "province_id": "16", "name": "زاهدان", @@ -160,7 +160,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "17", + "id": "48", "type": "2", "province_id": "17", "name": "شیراز", @@ -170,7 +170,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "18", + "id": "49", "type": "2", "province_id": "18", "name": "قزوین", @@ -180,7 +180,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "19", + "id": "50", "type": "2", "province_id": "19", "name": "قم", @@ -190,7 +190,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "20", + "id": "51", "type": "2", "province_id": "20", "name": "سنندج", @@ -200,7 +200,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "21", + "id": "52", "type": "2", "province_id": "21", "name": "کرمان", @@ -210,7 +210,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "22", + "id": "53", "type": "2", "province_id": "22", "name": "کرمانشاه", @@ -220,7 +220,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "23", + "id": "54", "type": "2", "province_id": "23", "name": "یاسوج", @@ -230,7 +230,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "24", + "id": "55", "type": "2", "province_id": "24", "name": "گرگان", @@ -240,7 +240,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "25", + "id": "56", "type": "2", "province_id": "25", "name": "رشت", @@ -250,7 +250,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "26", + "id": "57", "type": "2", "province_id": "26", "name": "خرم‌آباد", @@ -260,7 +260,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "27", + "id": "58", "type": "2", "province_id": "27", "name": "ساری", @@ -270,7 +270,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "28", + "id": "59", "type": "2", "province_id": "28", "name": "اراک", @@ -280,7 +280,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "29", + "id": "60", "type": "2", "province_id": "29", "name": "بندرعباس", @@ -290,7 +290,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "30", + "id": "61", "type": "2", "province_id": "30", "name": "همدان", @@ -300,7 +300,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "31", + "id": "62", "type": "2", "province_id": "31", "name": "یزد", @@ -310,7 +310,7 @@ "keywords": "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان" }, { - "id": "32", + "id": "63", "type": "2", "province_id": "32", "name": "All", diff --git a/data/specialties.json b/data/specialties.json index a1aa207..5cb1fef 100644 --- a/data/specialties.json +++ b/data/specialties.json @@ -1,7 +1,347 @@ [ { - "id": 1, - "name": "مغز و اعصاب", - "number_of_doctors": "۱۷۴" + "id": "500", + "name": "پزشکی عمومی", + "parent": null + }, + { + "id": "501", + "name": "داخلی", + "parent": null + }, + { + "id": "502", + "name": "داخلی عمومی", + "parent": "501" + }, + { + "id": "503", + "name": "قلب و عروق", + "parent": "501" + }, + { + "id": "504", + "name": "گوارش و کبد", + "parent": "501" + }, + { + "id": "505", + "name": "غدد و متابولیسم", + "parent": "501" + }, + { + "id": "506", + "name": "خون و انکولوژی", + "parent": "501" + }, + { + "id": "507", + "name": "ریه (پولمونولوژی)", + "parent": "501" + }, + { + "id": "508", + "name": "کلیه و مجاری ادراری (نفرولوژی)", + "parent": "501" + }, + { + "id": "509", + "name": "روماتولوژی (بیماری‌های مفاصل)", + "parent": "501" + }, + { + "id": "510", + "name": "نورولوژی (عصبی)", + "parent": "501" + }, + { + "id": "511", + "name": "جراحی", + "parent": null + }, + { + "id": "512", + "name": "جراحی عمومی", + "parent": "511" + }, + { + "id": "513", + "name": "جراحی مغز و اعصاب", + "parent": "511" + }, + { + "id": "514", + "name": "جراحی قلب و عروق", + "parent": "511" + }, + { + "id": "515", + "name": "جراحی عروق", + "parent": "511" + }, + { + "id": "516", + "name": "جراحی ارتوپدی (استخوان و مفاصل)", + "parent": "511" + }, + { + "id": "517", + "name": "جراحی پلاستیک و ترمیمی", + "parent": "511" + }, + { + "id": "518", + "name": "جراحی چشم", + "parent": "511" + }, + { + "id": "519", + "name": "جراحی گوش، حلق و بینی (ENT)", + "parent": "511" + }, + { + "id": "520", + "name": "جراحی کودکان", + "parent": "511" + }, + { + "id": "521", + "name": "جراحی دستگاه گوارش", + "parent": "511" + }, + { + "id": "522", + "name": "جراحی توراکس (قفسه سینه)", + "parent": "511" + }, + { + "id": "523", + "name": "جراحی دست", + "parent": "511" + }, + { + "id": "524", + "name": "جراحی فک و صورت", + "parent": "511" + }, + { + "id": "525", + "name": "زنان و زایمان", + "parent": null + }, + { + "id": "526", + "name": "اطفال (کودکان)", + "parent": null + }, + { + "id": "527", + "name": "روانپزشکی", + "parent": null + }, + { + "id": "528", + "name": "روانپزشکی عمومی", + "parent": "527" + }, + { + "id": "529", + "name": "روانپزشکی کودکان و نوجوانان", + "parent": "527" + }, + { + "id": "530", + "name": "روانپزشکی سالمندان", + "parent": "527" + }, + { + "id": "531", + "name": "پوست و مو (درماتولوژی)", + "parent": null + }, + { + "id": "532", + "name": "چشم‌ پزشکی", + "parent": null + }, + { + "id": "533", + "name": "گوش، حلق و بینی", + "parent": null + }, + { + "id": "534", + "name": "اورولوژی (مجاری ادراری و تناسلی)", + "parent": null + }, + { + "id": "535", + "name": "رادیولوژی", + "parent": null + }, + { + "id": "536", + "name": "رادیولوژی تشخیصی", + "parent": "535" + }, + { + "id": "537", + "name": "رادیولوژی مداخله‌ای", + "parent": "535" + }, + { + "id": "538", + "name": "نوار قلب و الکتروفیزیولوژی", + "parent": "535" + }, + { + "id": "539", + "name": "پاتولوژی (آسیب‌شناسی)", + "parent": null + }, + { + "id": "540", + "name": "انکولوژی (سرطان‌شناسی)", + "parent": null + }, + { + "id": "541", + "name": "انکولوژی پزشکی", + "parent": "540" + }, + { + "id": "542", + "name": "انکولوژی رادیوتراپی", + "parent": "540" + }, + { + "id": "543", + "name": "طب فیزیکی و توانبخشی", + "parent": null + }, + { + "id": "544", + "name": "دندانپزشکی", + "parent": null + }, + { + "id": "545", + "name": "عمومی", + "parent": "544" + }, + { + "id": "546", + "name": "ارتودنسی", + "parent": "544" + }, + { + "id": "547", + "name": "جراحی فک و صورت", + "parent": "544" + }, + { + "id": "548", + "name": "پریودنتولوژی (بیماری‌های لثه)", + "parent": "544" + }, + { + "id": "549", + "name": "اندودنتولوژی (درمان ریشه)", + "parent": "544" + }, + { + "id": "550", + "name": "پروتز دندان", + "parent": "544" + }, + { + "id": "551", + "name": "دندانپزشکی کودکان", + "parent": "544" + }, + { + "id": "552", + "name": "طب اورژانس", + "parent": null + }, + { + "id": "553", + "name": "پزشکی خانواده", + "parent": null + }, + { + "id": "554", + "name": "طب ورزشی", + "parent": null + }, + { + "id": "555", + "name": "پزشکی هسته‌ای", + "parent": null + }, + { + "id": "556", + "name": "پزشکی قانونی", + "parent": null + }, + { + "id": "557", + "name": "پزشکی اجتماعی", + "parent": null + }, + { + "id": "558", + "name": "طب سالمندان", + "parent": null + }, + { + "id": "559", + "name": "نوروسرجری (جراحی مغز و اعصاب)", + "parent": null + }, + { + "id": "560", + "name": "پزشکی شغلی", + "parent": null + }, + { + "id": "561", + "name": "اندوکرینولوژی (غدد درون‌ریز)", + "parent": null + }, + { + "id": "562", + "name": "میکروبیولوژی و ویروس‌شناسی پزشکی", + "parent": null + }, + { + "id": "563", + "name": "ایمونولوژی (سیستم ایمنی)", + "parent": null + }, + { + "id": "564", + "name": "بیماری‌های عفونی", + "parent": null + }, + { + "id": "565", + "name": "گوش، حلق و بینی", + "parent": null + }, + { + "id": "566", + "name": "نورولوژی (عصبی)", + "parent": null + }, + { + "id": "567", + "name": "پزشکی خواب", + "parent": null + }, + { + "id": "568", + "name": "سکته مغزی", + "parent": null } -] +] \ No newline at end of file diff --git a/data/state.json b/data/state.json index 4fde4e2..1c4db31 100644 --- a/data/state.json +++ b/data/state.json @@ -1,33 +1,126 @@ [ - { "id": "1", "name": "آذربایجان شرقی" }, - { "id": "2", "name": "آذربایجان غربی" }, - { "id": "3", "name": "اردبیل" }, - { "id": "4", "name": "اصفهان" }, - { "id": "5", "name": "البرز" }, - { "id": "6", "name": "ایلام" }, - { "id": "7", "name": "بوشهر" }, - { "id": "8", "name": "تهران" }, - { "id": "9", "name": "چهارمحال و بختیاری" }, - { "id": "10", "name": "خراسان جنوبی" }, - { "id": "11", "name": "خراسان رضوی" }, - { "id": "12", "name": "خراسان شمالی" }, - { "id": "13", "name": "خوزستان" }, - { "id": "14", "name": "زنجان" }, - { "id": "15", "name": "سمنان" }, - { "id": "16", "name": "سیستان و بلوچستان" }, - { "id": "17", "name": "فارس" }, - { "id": "18", "name": "قزوین" }, - { "id": "19", "name": "قم" }, - { "id": "20", "name": "کردستان" }, - { "id": "21", "name": "کرمان" }, - { "id": "22", "name": "کرمانشاه" }, - { "id": "23", "name": "کهگیلویه و بویراحمد" }, - { "id": "24", "name": "گلستان" }, - { "id": "25", "name": "گیلان" }, - { "id": "26", "name": "لرستان" }, - { "id": "27", "name": "مازندران" }, - { "id": "28", "name": "مرکزی" }, - { "id": "29", "name": "هرمزگان" }, - { "id": "30", "name": "همدان" }, - { "id": "31", "name": "یزد" } -] + { + "id": "1", + "name": "آذربایجان شرقی" + }, + { + "id": "2", + "name": "آذربایجان غربی" + }, + { + "id": "3", + "name": "اردبیل" + }, + { + "id": "4", + "name": "اصفهان" + }, + { + "id": "5", + "name": "البرز" + }, + { + "id": "6", + "name": "ایلام" + }, + { + "id": "7", + "name": "بوشهر" + }, + { + "id": "8", + "name": "تهران" + }, + { + "id": "9", + "name": "چهارمحال و بختیاری" + }, + { + "id": "10", + "name": "خراسان جنوبی" + }, + { + "id": "11", + "name": "خراسان رضوی" + }, + { + "id": "12", + "name": "خراسان شمالی" + }, + { + "id": "13", + "name": "خوزستان" + }, + { + "id": "14", + "name": "زنجان" + }, + { + "id": "15", + "name": "سمنان" + }, + { + "id": "16", + "name": "سیستان و بلوچستان" + }, + { + "id": "17", + "name": "فارس" + }, + { + "id": "18", + "name": "قزوین" + }, + { + "id": "19", + "name": "قم" + }, + { + "id": "20", + "name": "کردستان" + }, + { + "id": "21", + "name": "کرمان" + }, + { + "id": "22", + "name": "کرمانشاه" + }, + { + "id": "23", + "name": "کهگیلویه و بویراحمد" + }, + { + "id": "24", + "name": "گلستان" + }, + { + "id": "25", + "name": "گیلان" + }, + { + "id": "26", + "name": "لرستان" + }, + { + "id": "27", + "name": "مازندران" + }, + { + "id": "28", + "name": "مرکزی" + }, + { + "id": "29", + "name": "هرمزگان" + }, + { + "id": "30", + "name": "همدان" + }, + { + "id": "31", + "name": "یزد" + } +] \ No newline at end of file From ee4731465845444317d738624ea4a3fa802239ed Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Fri, 2 May 2025 14:14:10 +0330 Subject: [PATCH 014/124] feat: Add search by name and specialty card navigation - Implemented search functionality to filter specialties by name - Added navigation to /doctors page with specialty ID as query parameter when clicking on a specialty card - Enhanced user experience by providing real-time search results and clear navigation path --- components/searchHead/SmSearch.js | 9 ++++- components/specialties/index.js | 24 +++++++++++- .../specialties/list/ItemSpecialties.js | 8 ++++ components/specialties/list/index.js | 37 +++++++++++-------- 4 files changed, 59 insertions(+), 19 deletions(-) diff --git a/components/searchHead/SmSearch.js b/components/searchHead/SmSearch.js index e9c1001..fd5048e 100644 --- a/components/searchHead/SmSearch.js +++ b/components/searchHead/SmSearch.js @@ -1,7 +1,13 @@ import SearchD from "@/components/icons/SearchD"; import { Button, ButtonGroup, TextField } from "@mui/material"; -function SmSearch({ placeholder }) { +function SmSearch({ placeholder, onSearch }) { + const handleSearchChange = (event) => { + if (onSearch) { + onSearch(event.target.value); + } + }; + return ( + {children} {/* Content Modal */} @@ -117,16 +89,25 @@ function ModalSearchCity({ children }) {
item.label === secondSelected + ) && + secondSelected + } list={filteredCities} name="second" label="شهر" - disabled={!selected.first || filteredCities.length === 0} + disabled={!firstSelected || filteredCities.length === 0} />
@@ -135,7 +116,7 @@ function ModalSearchCity({ children }) { onClick={handleClose} variant="contained" color="primary" - disabled={!selected.first || !selected.second} + disabled={!firstSelected || !secondSelected} > تایید و ادامه diff --git a/components/home/search/index.js b/components/home/search/index.js index 9c79d87..6f5e718 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -1,9 +1,19 @@ +"use client"; + import Search from "@/components/icons/Search"; import { Button, ButtonGroup, TextField } from "@mui/material"; import SearchD from "@/components/icons/SearchD"; import ModalSearchCity from "@/app/component/modalSearchCity"; +import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; +import { useState } from "react"; function SearchBar() { + const [selected, setSelected] = useState({ + first: "", + second: "", + }); + const [open, setOpen] = useState(false); + return ( - + + + Date: Sat, 3 May 2025 06:24:28 +0330 Subject: [PATCH 016/124] change function redirect url in specialties page --- components/home/search/index.js | 1 + .../specialties/list/ItemSpecialties.js | 40 +++++++++---------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/components/home/search/index.js b/components/home/search/index.js index 6f5e718..a5c88ce 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -13,6 +13,7 @@ function SearchBar() { second: "", }); const [open, setOpen] = useState(false); + console.log(selected); return ( { - router.push(`/doctors?specialties=${data.id}`); - }; - return ( -
  • - -

    {data.name}

    -
    - -

    - {data.number_of_doctors} پزشک -

    -
    + > + +

    {data.name}

    +
    + +

    + {data.number_of_doctors} پزشک +

    +
    +
  • ); } From 5df5ffc1f9c72437664c52f6fa33346aba1d9833 Mon Sep 17 00:00:00 2001 From: ehsan Date: Sat, 3 May 2025 06:50:02 +0330 Subject: [PATCH 017/124] send data location with url to doctors and get it and show in page doctors --- app/component/modalSearchCity/ButtonFilter.js | 8 +++-- app/component/modalSearchCity/index.js | 34 +++++++++--------- components/doctors/index.js | 12 +++++-- components/home/search/index.js | 36 ++++++++++++------- 4 files changed, 54 insertions(+), 36 deletions(-) diff --git a/app/component/modalSearchCity/ButtonFilter.js b/app/component/modalSearchCity/ButtonFilter.js index c209c25..f7bbd7d 100644 --- a/app/component/modalSearchCity/ButtonFilter.js +++ b/app/component/modalSearchCity/ButtonFilter.js @@ -20,10 +20,12 @@ function ButtonFilter({ selected, setOpen }) {

    - {selected && selected.first && selected.second - ? `${selected.first} | ${selected.second}` + {selected && selected.province && selected.city + ? `${selected.province} | ${selected.city}` : "انتخاب شهر"}

    diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index e894101..81cf7ad 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -14,8 +14,8 @@ import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { - const secondSelected = selected.second; - const firstSelected = selected.first; + const provinceSelected = selected.province; + const citySelected = selected.city; const [states, setStates] = useState([]); const [cities, setCities] = useState([]); const [filteredCities, setFilteredCities] = useState([]); @@ -43,9 +43,9 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { // Filter cities when state is selected useEffect(() => { - if (firstSelected) { + if (provinceSelected) { const selectedState = states.find( - (state) => state.label === firstSelected + (state) => state.label === provinceSelected ); if (selectedState) { const stateId = selectedState.id; @@ -56,14 +56,14 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { } } else { setFilteredCities([]); - setSelected({ ...selected, second: "" }); + setSelected({ ...selected, city: "" }); } - }, [firstSelected, cities, states]); + }, [provinceSelected, cities, states]); const updateData = (event, name) => { - if (name === "first" && event !== firstSelected) { + if (name === "province" && event !== provinceSelected) { // If state changes, reset city selection - setSelected({ first: event, second: "" }); + setSelected({ province: event, city: "" }); } else { setSelected({ ...selected, [name]: event }); } @@ -89,25 +89,23 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) {
    item.label === secondSelected - ) && - secondSelected + citySelected && + filteredCities.find((item) => item.label === citySelected) && + citySelected } list={filteredCities} - name="second" + name="city" label="شهر" - disabled={!firstSelected || filteredCities.length === 0} + disabled={!provinceSelected || filteredCities.length === 0} />
    @@ -116,7 +114,7 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { onClick={handleClose} variant="contained" color="primary" - disabled={!firstSelected || !secondSelected} + disabled={!provinceSelected || !citySelected} > تایید و ادامه diff --git a/components/doctors/index.js b/components/doctors/index.js index 17b4387..82469fc 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -5,9 +5,15 @@ import SearchBar from "./search"; import SortList from "./sortlist"; import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; +import { useSearchParams } from "next/navigation"; function DoctorsPage() { const [loading, setLoading] = useState(true); + const searchParams = useSearchParams(); + const locationSelected = { + province: searchParams.get("province"), + city: searchParams.get("city"), + }; const [data, setData] = useState({ expertise: "", gender: 0, @@ -27,14 +33,16 @@ function DoctorsPage() {

    - خوزستان / اهواز + {" "} + {locationSelected.province || "استان"} /{" "} + {locationSelected.city || "شهر"}

    -
    +
    ); diff --git a/components/home/search/index.js b/components/home/search/index.js index a5c88ce..aee9cee 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -6,23 +6,23 @@ import SearchD from "@/components/icons/SearchD"; import ModalSearchCity from "@/app/component/modalSearchCity"; import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; import { useState } from "react"; +import Link from "next/link"; function SearchBar() { const [selected, setSelected] = useState({ - first: "", - second: "", + province: "", + city: "", }); const [open, setOpen] = useState(false); - console.log(selected); return ( - + + + + + + + ); +} + +export default Content; diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 81cf7ad..0e298dc 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -1,21 +1,21 @@ "use client"; import { useState, useEffect } from "react"; -import { Box, Button, Modal } from "@mui/material"; - -// Icon +import { Modal, Box } from "@mui/material"; import { styleDefault } from "@/mui"; -import CloseModalD from "@/components/icons/CloseModalD"; -import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; -import ArrowLeftM from "@/components/icons/ArrowLeftM"; // Data import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; +import Content from "./Content"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; - const citySelected = selected.city; + // const hostName = window.location.host; + const hostName = "urmia-nobat.ir"; + const isProvinceInclude = citiesData.find( + (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) + ); const [states, setStates] = useState([]); const [cities, setCities] = useState([]); const [filteredCities, setFilteredCities] = useState([]); @@ -54,6 +54,13 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { ); setFilteredCities(filteredCities); } + } else if (isProvinceInclude) { + setSelected({ + ...selected, + province: statesData.find( + (state) => state.id === isProvinceInclude.province_id + )?.name, + }); } else { setFilteredCities([]); setSelected({ ...selected, city: "" }); @@ -77,50 +84,15 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { {/* Content Modal */} -
    -
    - -
    -
    -
    -

    - شهر یا استان مورد نظر را انتخاب نمایید: -

    -
    - - item.label === citySelected) && - citySelected - } - list={filteredCities} - name="city" - label="شهر" - disabled={!provinceSelected || filteredCities.length === 0} - /> -
    -
    - -
    -
    +
    diff --git a/package-lock.json b/package-lock.json index 85a9086..471dbbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "universal-cookie": "^7.2.1" }, "devDependencies": { + "cross-env": "^7.0.3", "postcss": "^8", "tailwindcss": "^3.4.1" } diff --git a/package.json b/package.json index cef3e17..ba19c4d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "cross-env HOST=nobat724.localhost PORT=3000 next dev", "build": "next build", "start": "next start", "lint": "next lint" @@ -43,6 +43,7 @@ "universal-cookie": "^7.2.1" }, "devDependencies": { + "cross-env": "^7.0.3", "postcss": "^8", "tailwindcss": "^3.4.1" } From 003d5532027660c7c94b2af8c2d65c22b982d1f2 Mon Sep 17 00:00:00 2001 From: ehsan Date: Sat, 3 May 2025 16:15:33 +0330 Subject: [PATCH 020/124] remove default value for handle filter list city by data in url --- app/component/modalSearchCity/Content.js | 8 +++++--- app/component/modalSearchCity/index.js | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/component/modalSearchCity/Content.js b/app/component/modalSearchCity/Content.js index 3edf6a1..fc069ab 100644 --- a/app/component/modalSearchCity/Content.js +++ b/app/component/modalSearchCity/Content.js @@ -48,9 +48,11 @@ function Content({ name="city" label="شهر" disabled={ - !isProvinceInclude || - !provinceSelected || - filteredCities.length === 0 + isProvinceInclude + ? !isProvinceInclude || + !provinceSelected || + filteredCities.length === 0 + : !provinceSelected || filteredCities.length === 0 } /> diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 0e298dc..caa0d0f 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -11,8 +11,7 @@ import Content from "./Content"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; - // const hostName = window.location.host; - const hostName = "urmia-nobat.ir"; + const hostName = window.location.host; const isProvinceInclude = citiesData.find( (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) ); From ca5583deabd80ca439c147088ad3064410e42024 Mon Sep 17 00:00:00 2001 From: ehsan Date: Sat, 3 May 2025 16:58:13 +0330 Subject: [PATCH 021/124] fix bug build app --- app/component/modalSearchCity/index.js | 4 +++- components/doctors/index.js | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index caa0d0f..490c1ed 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -11,7 +11,7 @@ import Content from "./Content"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; - const hostName = window.location.host; + const [hostName, setHostName] = useState(""); const isProvinceInclude = citiesData.find( (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) ); @@ -36,6 +36,8 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { province_id: city.province_id, })); + setHostName(window.location.hostname); + setStates(formattedStates); setCities(formattedCities); }, []); diff --git a/components/doctors/index.js b/components/doctors/index.js index 53bb233..82469fc 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -6,7 +6,6 @@ import SortList from "./sortlist"; import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; import { useSearchParams } from "next/navigation"; -import { Suspense } from "react"; function DoctorsPage() { const [loading, setLoading] = useState(true); From 9a79ad77ccab942ed73aec482d7d08749624fff4 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Sat, 3 May 2025 17:44:29 +0330 Subject: [PATCH 022/124] add slogan and site_name --- data/city.json | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/data/city.json b/data/city.json index 1ee1fd1..d7f553a 100644 --- a/data/city.json +++ b/data/city.json @@ -4,6 +4,8 @@ "type": "2", "province_id": "1", "name": "تبریز", + "site_name": "تبریز نوبت", + "slogan": "سریع‌ترین سیستم نوبت‌دهی پزشکی تبریز", "domain": "tabriz-nobat.ir", "title": "رزرو نوبت پزشکی در تبریز | نوبت‌دهی آنلاین تبریز | تبریز نوبت", "description": "نوبت‌دهی پزشکی در تبریز با سریع‌ترین روش ممکن. تبریز نوبت سامانه‌ای برای نوبت‌دهی آنلاین پزشکان، نوبت‌دهی کلینیک‌ها و نوبت‌دهی تخصصی در تبریز. همین حالا نوبت بگیرید.", @@ -14,6 +16,8 @@ "type": "2", "province_id": "2", "name": "ارومیه", + "site_name": "ارومیه نوبت", + "slogan": "نوبت پزشک در ارومیه، در سریع‌ترین زمان ممکن", "domain": "urmia-nobat.ir", "title": "رزرو نوبت پزشکی در ارومیه | نوبت‌دهی آنلاین ارومیه | ارومیه نوبت", "description": "نوبت‌دهی پزشکی در ارومیه با سریع‌ترین روش ممکن. ارومیه نوبت سامانه‌ای برای نوبت‌دهی آنلاین پزشکان، نوبت‌دهی کلینیک‌ها و نوبت‌دهی تخصصی در ارومیه. همین حالا نوبت بگیرید.", @@ -24,6 +28,8 @@ "type": "2", "province_id": "3", "name": "اردبیل", + "site_name": "اردبیل نوبت", + "slogan": "نوبت‌دهی آنلاین پزشکی در اردبیل، بدون اتلاف وقت", "domain": "ardabil-nobat.ir", "title": "رزرو نوبت پزشکی در اردبیل | نوبت‌دهی آنلاین اردبیل | اردبیل نوبت", "description": "نوبت‌دهی پزشکی در اردبیل با سریع‌ترین روش ممکن. اردبیل نوبت سامانه‌ای برای نوبت‌دهی آنلاین پزشکان، نوبت‌دهی کلینیک‌ها و نوبت‌دهی تخصصی در اردبیل. همین حالا نوبت بگیرید.", @@ -34,6 +40,8 @@ "type": "2", "province_id": "4", "name": "اصفهان", + "site_name": "اصفهان نوبت", + "slogan": "دریافت نوبت از بهترین پزشکان اصفهان، تنها با چند کلیک", "domain": "esf-nobat.ir", "title": "رزرو نوبت پزشکی در اصفهان | نوبت‌دهی آنلاین اصفهان | اصفهان نوبت", "description": "سامانه نوبت‌دهی پزشکی اصفهان با پیشرفته‌ترین سیستم رزرو آنلاین. در اصفهان نوبت می‌توانید بدون اتلاف وقت و به راحتی از بهترین پزشکان و متخصصان اصفهان نوبت بگیرید. دسترسی سریع و ۲۴ ساعته به خدمات درمانی اصفهان.", @@ -44,6 +52,8 @@ "type": "2", "province_id": "5", "name": "کرج", + "site_name": "کرج نوبت", + "slogan": "نوبت‌دهی پزشکی کرج، سریع و آسان", "domain": "karaj-nobat.ir", "title": "رزرو نوبت پزشکی در کرج | نوبت‌دهی آنلاین کرج | کرج نوبت", "description": "سیستم جامع نوبت‌دهی پزشکی در کرج برای صرفه‌جویی در وقت شما. کرج نوبت با ارائه سرویس آنلاین رزرو نوبت پزشکان، کلینیک‌ها و مراکز درمانی کرج، تجربه دریافت خدمات پزشکی را برای شما آسان می‌کند. همین امروز نوبت خود را رزرو کنید.", @@ -54,6 +64,8 @@ "type": "2", "province_id": "6", "name": "ایلام", + "site_name": "ایلام نوبت", + "slogan": "رزرو آنلاین نوبت پزشکان ایلام، بدون مراجعه حضوری", "domain": "ilam-nobat.ir", "title": "رزرو نوبت پزشکی در ایلام | نوبت‌دهی آنلاین ایلام | ایلام نوبت", "description": "خدمات نوبت‌دهی آنلاین پزشکی در ایلام با پوشش گسترده پزشکان متخصص. ایلام نوبت امکان جستجو، مقایسه و رزرو نوبت از بهترین پزشکان ایلام را فراهم می‌کند. با استفاده از این سامانه، دیگر نیازی به حضور فیزیکی و انتظار طولانی نخواهید داشت.", @@ -64,6 +76,8 @@ "type": "2", "province_id": "7", "name": "بوشهر", + "site_name": "بوشهر نوبت", + "slogan": "نوبت‌دهی هوشمند پزشکی بوشهر، در هر ساعت از شبانه‌روز", "domain": "bushehr-nobat.ir", "title": "رزرو نوبت پزشکی در بوشهر | نوبت‌دهی آنلاین بوشهر | بوشهر نوبت", "description": "سامانه نوبت‌دهی پزشکی بوشهر با هدف تسهیل دسترسی شهروندان به خدمات درمانی. بوشهر نوبت با ارائه فهرست کامل پزشکان و مراکز درمانی بوشهر، امکان رزرو آنلاین نوبت را در کوتاه‌ترین زمان ممکن فراهم کرده است. بهترین پزشکان بوشهر در دسترس شماست.", @@ -74,6 +88,8 @@ "type": "2", "province_id": "8", "name": "تهران", + "site_name": "تهران نوبت", + "slogan": "دسترسی به هزاران پزشک تهران، با یک سامانه هوشمند", "domain": "tehran-nobat.ir", "title": "رزرو نوبت پزشکی در تهران | نوبت‌دهی آنلاین تهران | تهران نوبت", "description": "پیشرفته‌ترین سامانه نوبت‌دهی پزشکی در تهران با پوشش هزاران پزشک و مرکز درمانی. تهران نوبت با بهره‌گیری از فناوری روز، امکان جستجوی پزشک براساس تخصص، منطقه، بیمه و رزرو آنلاین نوبت را فراهم کرده است. بهترین متخصصان تهران تنها با چند کلیک در دسترس شماست.", @@ -84,6 +100,8 @@ "type": "2", "province_id": "9", "name": "شهرکرد", + "site_name": "شهرکرد نوبت", + "slogan": "صف‌های طولانی نوبت در شهرکرد را فراموش کنید", "domain": "shkord-nobat.ir", "title": "رزرو نوبت پزشکی در شهرکرد | نوبت‌دهی آنلاین شهرکرد | شهرکرد نوبت", "description": "سیستم نوبت‌دهی پزشکی شهرکرد برای دسترسی سریع و آسان به خدمات درمانی. شهرکرد نوبت با پوشش گسترده پزشکان عمومی و متخصص، کلینیک‌ها و مراکز درمانی شهرکرد، تجربه رزرو نوبت پزشکی را برای شما لذت‌بخش می‌کند. در کمترین زمان ممکن نوبت خود را ثبت کنید.", @@ -94,6 +112,8 @@ "type": "2", "province_id": "10", "name": "بیرجند", + "site_name": "بیرجند نوبت", + "slogan": "نوبت‌دهی پزشکی بیرجند، در کمترین زمان ممکن", "domain": "birjand-nobat.ir", "title": "رزرو نوبت پزشکی در بیرجند | نوبت‌دهی آنلاین بیرجند | بیرجند نوبت", "description": "سامانه هوشمند نوبت‌دهی پزشکی در بیرجند با ارائه خدمات ۲۴ ساعته. بیرجند نوبت با هدف کاهش اتلاف وقت و هزینه‌های رفت و آمد، امکان رزرو آنلاین نوبت از پزشکان و مراکز درمانی بیرجند را به راحتی فراهم کرده است. نوبت‌دهی سریع، دقیق و مطمئن در خدمت سلامت شماست.", @@ -104,6 +124,8 @@ "type": "2", "province_id": "11", "name": "مشهد", + "site_name": "مشهد نوبت", + "slogan": "خداحافظی با صف‌های نوبت پزشکی در مشهد", "domain": "mashhad-nobat.ir", "title": "رزرو نوبت پزشکی در مشهد | نوبت‌دهی آنلاین مشهد | مشهد نوبت", "description": "سامانه جامع نوبت‌دهی پزشکی مشهد با پوشش کامل‌ترین شبکه پزشکان و مراکز درمانی. مشهد نوبت با ارائه خدمات نوبت‌دهی آنلاین، امکان دسترسی سریع به پزشکان متخصص، فوق تخصص و کلینیک‌های مشهد را فراهم می‌کند. بدون نیاز به تماس تلفنی یا مراجعه حضوری، نوبت خود را در هر ساعت از شبانه‌روز رزرو کنید.", @@ -114,6 +136,8 @@ "type": "2", "province_id": "12", "name": "بجنورد", + "site_name": "بجنورد نوبت", + "slogan": "نوبت پزشک در بجنورد، تنها با چند کلیک", "domain": "bojnord-nobat.ir", "title": "رزرو نوبت پزشکی در بجنورد | نوبت‌دهی آنلاین بجنورد | بجنورد نوبت", "description": "سیستم نوبت‌دهی آنلاین پزشکی بجنورد با هدف ارتقای سطح دسترسی به خدمات درمانی. بجنورد نوبت با ایجاد پل ارتباطی میان بیماران و پزشکان بجنورد، امکان رزرو سریع و بدون واسطه نوبت را فراهم کرده است. با استفاده از این سامانه، می‌توانید وقت پزشک مورد نظر خود را در کمترین زمان ممکن رزرو کنید.", @@ -124,6 +148,8 @@ "type": "2", "province_id": "13", "name": "اهواز", + "site_name": "اهواز نوبت", + "slogan": "سامانه هوشمند نوبت‌دهی پزشکان اهواز", "domain": "ahvaz-nobat.ir", "title": "رزرو نوبت پزشکی در اهواز | نوبت‌دهی آنلاین اهواز | اهواز نوبت", "description": "سامانه هوشمند نوبت‌دهی پزشکی اهواز با ارائه گسترده‌ترین شبکه پزشکان و مراکز درمانی. اهواز نوبت با بهره‌گیری از فناوری پیشرفته، امکان جستجو، فیلتر و رزرو نوبت از بهترین پزشکان اهواز را به راحتی فراهم می‌کند. صرفه‌جویی در وقت و هزینه با استفاده از سیستم نوبت‌دهی آنلاین اهواز نوبت.", @@ -134,6 +160,8 @@ "type": "2", "province_id": "14", "name": "زنجان", + "site_name": "زنجان نوبت", + "slogan": "نوبت‌گیری آنلاین از پزشکان زنجان، در هر ساعتی از روز", "domain": "zanjan-nobat.ir", "title": "رزرو نوبت پزشکی در زنجان | نوبت‌دهی آنلاین زنجان | زنجان نوبت", "description": "خدمات نوبت‌دهی پزشکی در زنجان با سرعت و دقت بالا. زنجان نوبت سامانه‌ای جامع برای دسترسی آسان به پزشکان عمومی و متخصص، کلینیک‌ها و مراکز درمانی زنجان است. با استفاده از این سیستم، می‌توانید از هر مکان و در هر زمان، نوبت پزشک مورد نظر خود را رزرو کنید.", @@ -144,6 +172,8 @@ "type": "2", "province_id": "15", "name": "سمنان", + "site_name": "سمنان نوبت", + "slogan": "رزرو آنلاین پزشکان سمنان، بدون محدودیت زمانی", "domain": "semnan-nobat.ir", "title": "رزرو نوبت پزشکی در سمنان | نوبت‌دهی آنلاین سمنان | سمنان نوبت", "description": "سیستم نوبت‌دهی پزشکی سمنان با رابط کاربری آسان و کاربرپسند. سمنان نوبت با گردآوری اطلاعات جامع پزشکان و مراکز درمانی سمنان، امکان انتخاب آگاهانه و رزرو سریع نوبت را برای شما فراهم کرده است. با حذف فرآیندهای زمان‌بر، تجربه‌ای متفاوت از نوبت‌دهی پزشکی را با سمنان نوبت تجربه کنید.", @@ -154,6 +184,8 @@ "type": "2", "province_id": "16", "name": "زاهدان", + "site_name": "زاهدان نوبت", + "slogan": "نوبت‌دهی پزشکی زاهدان، سریع و مطمئن", "domain": "zahedan-nobat.ir", "title": "رزرو نوبت پزشکی در زاهدان | نوبت‌دهی آنلاین زاهدان | زاهدان نوبت", "description": "سامانه تخصصی نوبت‌دهی پزشکی زاهدان برای ارتقای کیفیت خدمات درمانی. زاهدان نوبت با پوشش گسترده پزشکان متخصص و فوق تخصص، امکان دسترسی سریع و آسان به خدمات پزشکی در زاهدان را فراهم می‌کند. مدیریت زمان بهتر با استفاده از سیستم آنلاین رزرو نوبت زاهدان نوبت.", @@ -164,6 +196,8 @@ "type": "2", "province_id": "17", "name": "شیراز", + "site_name": "شیراز نوبت", + "slogan": "نوبت‌دهی آنلاین پزشکان شیراز، در کمترین زمان", "domain": "shiraz-nobat.ir", "title": "رزرو نوبت پزشکی در شیراز | نوبت‌دهی آنلاین شیراز | شیراز نوبت", "description": "پیشرفته‌ترین سامانه نوبت‌دهی پزشکی در شیراز با ارائه خدمات متنوع. شیراز نوبت با پوشش کامل پزشکان، کلینیک‌ها و بیمارستان‌های شیراز، امکان مقایسه، انتخاب و رزرو نوبت را به سریع‌ترین شکل ممکن فراهم کرده است. با شیراز نوبت، دیگر نگران یافتن بهترین پزشک و رزرو نوبت نباشید.", @@ -174,6 +208,8 @@ "type": "2", "province_id": "18", "name": "قزوین", + "site_name": "قزوین نوبت", + "slogan": "نوبت‌گیری از پزشکان قزوین، بدون نیاز به حضور فیزیکی", "domain": "qazvin-nobat.ir", "title": "رزرو نوبت پزشکی در قزوین | نوبت‌دهی آنلاین قزوین | قزوین نوبت", "description": "سیستم نوبت‌دهی پزشکی قزوین با کاربری آسان برای همه گروه‌های سنی. قزوین نوبت با ایجاد بستری مناسب برای ارتباط بیماران با پزشکان، کلینیک‌ها و مراکز درمانی قزوین، دسترسی به خدمات پزشکی را تسهیل کرده است. در هر ساعت از شبانه‌روز می‌توانید نوبت پزشک مورد نظر خود را رزرو کنید.", @@ -184,6 +220,8 @@ "type": "2", "province_id": "19", "name": "قم", + "site_name": "قم نوبت", + "slogan": "سامانه جامع نوبت‌دهی پزشکی قم، در خدمت سلامت شما", "domain": "qom-nobat.ir", "title": "رزرو نوبت پزشکی در قم | نوبت‌دهی آنلاین قم | قم نوبت", "description": "سامانه جامع نوبت‌دهی پزشکی قم با هدف بهبود دسترسی به خدمات درمانی. قم نوبت با فراهم کردن اطلاعات کامل پزشکان، تخصص‌ها، آدرس و ساعات کاری، امکان انتخاب آگاهانه و رزرو آنلاین نوبت را برای شهروندان قم فراهم کرده است. تجربه رزرو نوبت سریع و بدون دردسر با قم نوبت.", @@ -194,6 +232,8 @@ "type": "2", "province_id": "20", "name": "سنندج", + "site_name": "سنندج نوبت", + "slogan": "نوبت‌دهی آنلاین پزشکان سنندج، ساده و کاربردی", "domain": "sanandaj-nobat.ir", "title": "رزرو نوبت پزشکی در سنندج | نوبت‌دهی آنلاین سنندج | سنندج نوبت", "description": "سیستم هوشمند نوبت‌دهی پزشکی سنندج با پشتیبانی ۲۴ ساعته. سنندج نوبت با معرفی بهترین پزشکان و مراکز درمانی سنندج، امکان جستجو براساس نام، تخصص و محل و رزرو آنلاین نوبت را فراهم کرده است. با استفاده از این سامانه، دیگر نیازی به انتظار طولانی برای گرفتن نوبت نخواهید داشت.", @@ -204,6 +244,8 @@ "type": "2", "province_id": "21", "name": "کرمان", + "site_name": "کرمان نوبت", + "slogan": "نوبت‌دهی پزشکی کرمان، در خدمت سلامت شما", "domain": "kerman-nobat.ir", "title": "رزرو نوبت پزشکی در کرمان | نوبت‌دهی آنلاین کرمان | کرمان نوبت", "description": "سامانه هوشمند نوبت‌دهی پزشکی کرمان با امکانات پیشرفته. کرمان نوبت با هدف تسهیل فرآیند نوبت‌گیری از پزشکان و مراکز درمانی کرمان، سیستمی کارآمد و قابل اطمینان برای رزرو آنلاین نوبت ارائه کرده است. در کرمان نوبت، اطلاعات جامع پزشکان و مراکز درمانی در اختیار شماست.", @@ -214,6 +256,8 @@ "type": "2", "province_id": "22", "name": "کرمانشاه", + "site_name": "کرمانشاه نوبت", + "slogan": "رزرو آنلاین نوبت پزشکان کرمانشاه، ۲۴ ساعته", "domain": "kermanshah-nobat.ir", "title": "رزرو نوبت پزشکی در کرمانشاه | نوبت‌دهی آنلاین کرمانشاه | کرمانشاه نوبت", "description": "سامانه تخصصی نوبت‌دهی پزشکی کرمانشاه برای دسترسی سریع به خدمات درمانی. کرمانشاه نوبت با پوشش گسترده پزشکان و کلینیک‌های کرمانشاه، امکان رزرو آنلاین نوبت را به راحتی فراهم کرده است. با استفاده از این سیستم، هم در وقت صرفه‌جویی می‌کنید و هم از بهترین خدمات درمانی بهره‌مند می‌شوید.", @@ -224,6 +268,8 @@ "type": "2", "province_id": "23", "name": "یاسوج", + "site_name": "یاسوج نوبت", + "slogan": "نوبت‌دهی پزشکان یاسوج، بدون اتلاف وقت و هزینه", "domain": "yasuj-nobat.ir", "title": "رزرو نوبت پزشکی در یاسوج | نوبت‌دهی آنلاین یاسوج | یاسوج نوبت", "description": "سیستم جامع نوبت‌دهی پزشکی یاسوج با دسترسی آسان. یاسوج نوبت با ارائه خدمات نوبت‌دهی آنلاین پزشکان و مراکز درمانی یاسوج، تجربه جدیدی از دریافت خدمات پزشکی را برای شما فراهم کرده است. با حذف صف‌های طولانی و اتلاف وقت، می‌توانید به سادگی نوبت خود را رزرو کنید.", @@ -234,6 +280,8 @@ "type": "2", "province_id": "24", "name": "گرگان", + "site_name": "گرگان نوبت", + "slogan": "نوبت‌دهی آنلاین پزشکی گرگان، ساده و سریع", "domain": "golestan-nobat.ir", "title": "رزرو نوبت پزشکی در گرگان | نوبت‌دهی آنلاین گرگان | گرگان نوبت", "description": "سامانه پیشرفته نوبت‌دهی پزشکی گرگان برای مدیریت بهتر زمان شما. گرگان نوبت با بهره‌گیری از فناوری روز، امکان جستجو و انتخاب پزشک مناسب و رزرو آنلاین نوبت را برای شهروندان گرگان فراهم کرده است. در هر ساعت از شبانه‌روز می‌توانید نوبت پزشک مورد نظر خود را دریافت کنید.", @@ -244,6 +292,8 @@ "type": "2", "province_id": "25", "name": "رشت", + "site_name": "رشت نوبت", + "slogan": "سامانه هوشمند نوبت پزشکی در رشت", "domain": "rasht-nobat.ir", "title": "رزرو نوبت پزشکی در رشت | نوبت‌دهی آنلاین رشت | رشت نوبت", "description": "سیستم کاربرپسند نوبت‌دهی پزشکی رشت برای همه گروه‌های سنی. رشت نوبت با ارائه اطلاعات دقیق پزشکان و مراکز درمانی رشت، امکان انتخاب آگاهانه و رزرو نوبت را به سادگی فراهم کرده است. با استفاده از این سامانه، دریافت خدمات پزشکی در رشت سریع‌تر و آسان‌تر خواهد بود.", @@ -254,6 +304,8 @@ "type": "2", "province_id": "26", "name": "خرم‌آباد", + "site_name": "خرم‌آباد نوبت", + "slogan": "نوبت‌دهی آنلاین پزشکان خرم‌آباد، با چند کلیک ساده", "domain": "lorestan-nobat.ir", "title": "رزرو نوبت پزشکی در خرم‌آباد | نوبت‌دهی آنلاین خرم‌آباد | خرم‌آباد نوبت", "description": "سامانه جامع نوبت‌دهی پزشکی خرم‌آباد با هدف تسهیل دسترسی به خدمات درمانی. خرم‌آباد نوبت با پوشش گسترده پزشکان عمومی، متخصص و فوق تخصص، امکان رزرو آنلاین نوبت را در کوتاه‌ترین زمان ممکن فراهم کرده است. مدیریت زمان بهتر با استفاده از سیستم نوبت‌دهی خرم‌آباد نوبت.", @@ -264,6 +316,8 @@ "type": "2", "province_id": "27", "name": "ساری", + "site_name": "ساری نوبت", + "slogan": "نوبت پزشکی در ساری، بدون اتلاف وقت", "domain": "sari-nobat.ir", "title": "رزرو نوبت پزشکی در ساری | نوبت‌دهی آنلاین ساری | ساری نوبت", "description": "سیستم هوشمند نوبت‌دهی پزشکی ساری برای دسترسی آسان به خدمات درمانی. ساری نوبت با معرفی پزشکان و مراکز درمانی ساری همراه با اطلاعات تکمیلی، امکان انتخاب آگاهانه و رزرو نوبت را به راحتی فراهم می‌کند. با استفاده از این سامانه، تجربه متفاوتی از نوبت‌گیری پزشکی خواهید داشت.", @@ -274,6 +328,8 @@ "type": "2", "province_id": "28", "name": "اراک", + "site_name": "اراک نوبت", + "slogan": "رزرو آنلاین نوبت پزشکان اراک، ۲۴ ساعته", "domain": "arak-nobat.ir", "title": "رزرو نوبت پزشکی در اراک | نوبت‌دهی آنلاین اراک | اراک نوبت", "description": "سامانه تخصصی نوبت‌دهی پزشکی اراک با امکانات متنوع. اراک نوبت با ارائه فهرست جامعی از پزشکان و مراکز درمانی اراک، امکان جستجو، مقایسه و رزرو آنلاین نوبت را فراهم کرده است. با حذف محدودیت‌های زمانی و مکانی، در هر ساعت از شبانه‌روز می‌توانید نوبت خود را دریافت کنید.", @@ -284,6 +340,8 @@ "type": "2", "province_id": "29", "name": "بندرعباس", + "site_name": "بندرعباس نوبت", + "slogan": "سیستم جامع نوبت‌گیری پزشکی بندرعباس", "domain": "bandar-nobat.ir", "title": "رزرو نوبت پزشکی در بندرعباس | نوبت‌دهی آنلاین بندرعباس | بندرعباس نوبت", "description": "سیستم پیشرفته نوبت‌دهی پزشکی بندرعباس با هدف بهبود کیفیت خدمات درمانی. بندرعباس نوبت با ایجاد بستری مناسب برای ارتباط بیماران با پزشکان، کلینیک‌ها و مراکز درمانی بندرعباس، دسترسی به خدمات پزشکی را تسهیل کرده است. رزرو آنلاین نوبت بدون نیاز به مراجعه حضوری یا تماس تلفنی.", @@ -294,6 +352,8 @@ "type": "2", "province_id": "30", "name": "همدان", + "site_name": "همدان نوبت", + "slogan": "نوبت‌دهی پزشکی همدان، آسان و سریع", "domain": "hamadan-nobat.ir", "title": "رزرو نوبت پزشکی در همدان | نوبت‌دهی آنلاین همدان | همدان نوبت", "description": "سامانه جامع نوبت‌دهی پزشکی همدان با ارائه خدمات ۲۴ ساعته. همدان نوبت با فراهم کردن اطلاعات کامل پزشکان و مراکز درمانی همدان، امکان انتخاب و رزرو آنلاین نوبت را برای همه افراد آسان کرده است. با همدان نوبت، دیگر نیازی به اتلاف وقت برای گرفتن نوبت نخواهید داشت.", @@ -304,6 +364,8 @@ "type": "2", "province_id": "31", "name": "یزد", + "site_name": "یزد نوبت", + "slogan": "نوبت‌گیری آنلاین پزشکان یزد، در هر ساعت از روز", "domain": "yazd-nobat.ir", "title": "رزرو نوبت پزشکی در یزد | نوبت‌دهی آنلاین یزد | یزد نوبت", "description": "سیستم هوشمند نوبت‌دهی پزشکی یزد با رابط کاربری ساده و کاربردی. یزد نوبت با پوشش گسترده پزشکان و مراکز درمانی یزد، امکان جستجو، انتخاب و رزرو آنلاین نوبت را به راحتی فراهم کرده است. صرفه‌جویی در وقت و هزینه با استفاده از سامانه نوبت‌دهی آنلاین یزد نوبت.", @@ -314,6 +376,8 @@ "type": "2", "province_id": "32", "name": "All", + "site_name": "نوبت 724", + "slogan": "دیگه نوبت گرفتن کار سختی نیست !", "domain": "nobat724.com", "title": "رزرو نوبت پزشکی | نوبت‌دهی آنلاین | نوبت 724", "description": "نوبت 724 - سیستم آنلاین نوبت‌دهی برای پزشکان و کلینیک‌ها. با استفاده از نوبت 724، به راحتی نوبت پزشکی خود را به صورت آنلاین رزرو کنید و از خدمات سریع و کارآمد ما بهره‌مند شوید", From 1ca1af52b1ac578fa16d1fd503de2bf4406a7b3a Mon Sep 17 00:00:00 2001 From: ehsan Date: Sat, 3 May 2025 17:58:43 +0330 Subject: [PATCH 023/124] move function handle change city to context --- app/component/modalSearchCity/index.js | 9 +++------ app/layout.js | 5 ++++- context/ProvinceProvider.js | 27 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 context/ProvinceProvider.js diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 490c1ed..1198a29 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -8,13 +8,12 @@ import { styleDefault } from "@/mui"; import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; import Content from "./Content"; +import { useProvince } from "@/context/ProvinceProvider"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; - const [hostName, setHostName] = useState(""); - const isProvinceInclude = citiesData.find( - (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) - ); + const { isProvinceInclude } = useProvince(); + const [states, setStates] = useState([]); const [cities, setCities] = useState([]); const [filteredCities, setFilteredCities] = useState([]); @@ -36,8 +35,6 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { province_id: city.province_id, })); - setHostName(window.location.hostname); - setStates(formattedStates); setCities(formattedCities); }, []); diff --git a/app/layout.js b/app/layout.js index 2e3bd3a..3640579 100644 --- a/app/layout.js +++ b/app/layout.js @@ -8,6 +8,7 @@ import { GoogleTagManager } from "@next/third-parties/google"; // Toastify import "react-toastify/dist/ReactToastify.css"; import CustomToastify from "./CustomToastify"; +import { ProvinceProvider } from "@/context/ProvinceProvider"; export const metadata = { title: "نوبت724", @@ -28,7 +29,9 @@ export default function RootLayout({ children }) { - {children} + + {children} + diff --git a/context/ProvinceProvider.js b/context/ProvinceProvider.js new file mode 100644 index 0000000..726b46a --- /dev/null +++ b/context/ProvinceProvider.js @@ -0,0 +1,27 @@ +"use client"; + +import { createContext, useContext, useState, useEffect } from "react"; +import citiesData from "@/data/city.json"; + +const ProvinceContext = createContext(); + +export const ProvinceProvider = ({ children }) => { + const [hostName, setHostName] = useState(""); + const isProvinceInclude = citiesData.find( + (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) + ); + + useEffect(() => { + if (typeof window !== "undefined") { + setHostName(window.location.hostname); + } + }, []); + + return ( + + {children} + + ); +}; + +export const useProvince = () => useContext(ProvinceContext); From fa87d5e020bcbf742bc0e81f6a8056f47f4cb768 Mon Sep 17 00:00:00 2001 From: ehsan Date: Sat, 3 May 2025 19:06:59 +0330 Subject: [PATCH 024/124] change text location all page --- app/component/modalSearchCity/ButtonFilter.js | 4 ++++ app/component/modalSearchCity/index.js | 3 ++- components/clinics/head/SearchBar.js | 21 +++++++++++++++++-- components/clinics/list/index.js | 4 +++- components/doctors/index.js | 6 +++++- components/home/index.js | 9 ++++++-- context/ProvinceProvider.js | 4 ++-- data/city.json | 2 +- 8 files changed, 43 insertions(+), 10 deletions(-) diff --git a/app/component/modalSearchCity/ButtonFilter.js b/app/component/modalSearchCity/ButtonFilter.js index f7bbd7d..9d488cf 100644 --- a/app/component/modalSearchCity/ButtonFilter.js +++ b/app/component/modalSearchCity/ButtonFilter.js @@ -1,10 +1,12 @@ // Icons import ArrowBottomH from "@/components/icons/ArrowBottomH"; import Location from "@/components/icons/Location"; +import { useProvince } from "@/context/ProvinceProvider"; import { Button } from "@mui/material"; function ButtonFilter({ selected, setOpen }) { const handleOpen = () => setOpen(true); + const { isProvinceInclude } = useProvince(); return (
    @@ -26,6 +28,8 @@ function ButtonFilter({ selected, setOpen }) { > {selected && selected.province && selected.city ? `${selected.province} | ${selected.city}` + : isProvinceInclude?.name + ? isProvinceInclude.name : "انتخاب شهر"}

    diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 1198a29..434bffc 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -13,6 +13,7 @@ import { useProvince } from "@/context/ProvinceProvider"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; const { isProvinceInclude } = useProvince(); + const newProvinceData = isProvinceInclude?.id === 63; const [states, setStates] = useState([]); const [cities, setCities] = useState([]); @@ -89,7 +90,7 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { handleClose={handleClose} filteredCities={filteredCities} provinceSelected={provinceSelected} - isProvinceInclude={isProvinceInclude} + isProvinceInclude={newProvinceData} /> diff --git a/components/clinics/head/SearchBar.js b/components/clinics/head/SearchBar.js index 5cb479d..bda6b51 100644 --- a/components/clinics/head/SearchBar.js +++ b/components/clinics/head/SearchBar.js @@ -1,8 +1,18 @@ +"use client"; + import { Button, ButtonGroup, TextField } from "@mui/material"; import SearchD from "@/components/icons/SearchD"; -import ModalSearchCity from "./modal"; +import ModalSearchCity from "@/app/component/modalSearchCity"; +import { useState } from "react"; +import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; function SearchBar() { + const [selected, setSelected] = useState({ + province: "", + city: "", + }); + const [open, setOpen] = useState(false); + return ( - + + + diff --git a/components/doctors/index.js b/components/doctors/index.js index 82469fc..e833d3f 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -6,10 +6,12 @@ import SortList from "./sortlist"; import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; import { useSearchParams } from "next/navigation"; +import { useProvince } from "@/context/ProvinceProvider"; function DoctorsPage() { const [loading, setLoading] = useState(true); const searchParams = useSearchParams(); + const { isProvinceInclude } = useProvince(); const locationSelected = { province: searchParams.get("province"), city: searchParams.get("city"), @@ -34,7 +36,9 @@ function DoctorsPage() {

    {" "} - {locationSelected.province || "استان"} /{" "} + {isProvinceInclude?.name || locationSelected.province || "استان"} + {/* {isProvinceInclude?.name ? "" : " / "} */} + {" / "} {locationSelected.city || "شهر"}

    diff --git a/components/home/index.js b/components/home/index.js index e58246a..b1e8503 100644 --- a/components/home/index.js +++ b/components/home/index.js @@ -1,24 +1,29 @@ +"use client"; + import AText from "../icons/AText"; import BText from "../icons/BText"; // Components import SearchBar from "./search"; import FrequentSearches from "./FrequentSearches"; +import { useProvince } from "@/context/ProvinceProvider"; function HomePage() { + const { isProvinceInclude } = useProvince(); + return (

    - با نوبت724 + با {isProvinceInclude?.site_name}

    - دیگه نوبت گرفتن کار سختی نیست ! + {isProvinceInclude?.slogan}

    diff --git a/context/ProvinceProvider.js b/context/ProvinceProvider.js index 726b46a..7b5636e 100644 --- a/context/ProvinceProvider.js +++ b/context/ProvinceProvider.js @@ -7,8 +7,8 @@ const ProvinceContext = createContext(); export const ProvinceProvider = ({ children }) => { const [hostName, setHostName] = useState(""); - const isProvinceInclude = citiesData.find( - (city) => city.domain !== "nobat724.com" && hostName.includes(city.domain) + const isProvinceInclude = citiesData.find((city) => + hostName.includes(city.domain.split(".")[0]) ); useEffect(() => { diff --git a/data/city.json b/data/city.json index d7f553a..86b07d3 100644 --- a/data/city.json +++ b/data/city.json @@ -375,7 +375,7 @@ "id": "63", "type": "2", "province_id": "32", - "name": "All", + "name": "", "site_name": "نوبت 724", "slogan": "دیگه نوبت گرفتن کار سختی نیست !", "domain": "nobat724.com", From 8ee3defdc07104d7b4acd497cc024d3dea82c413 Mon Sep 17 00:00:00 2001 From: ehsan Date: Sun, 4 May 2025 12:31:53 +0330 Subject: [PATCH 025/124] change design text home page and dynamic metadata beased on hostname --- app/layout.js | 41 ++-- components/home/index.js | 2 +- components/icons/BText.js | 1 + data/specialties.json | 416 +++++++++++++++++++------------------- package.json | 2 +- 5 files changed, 238 insertions(+), 224 deletions(-) diff --git a/app/layout.js b/app/layout.js index 3640579..4db1611 100644 --- a/app/layout.js +++ b/app/layout.js @@ -4,28 +4,41 @@ import "jalaali-react-date-picker/lib/styles/index.css"; import { Providers } from "./Providers"; import { GoogleAnalytics } from "@next/third-parties/google"; import { GoogleTagManager } from "@next/third-parties/google"; - -// Toastify import "react-toastify/dist/ReactToastify.css"; import CustomToastify from "./CustomToastify"; import { ProvinceProvider } from "@/context/ProvinceProvider"; +import { headers } from "next/headers"; +import citiesData from "@/data/city.json"; -export const metadata = { - title: "نوبت724", - description: - "نوبت 724 - سیستم آنلاین نوبت‌دهی برای پزشکان و کلینیک‌ها. با استفاده از نوبت 724، به راحتی نوبت پزشکی خود را به صورت آنلاین رزرو کنید و از خدمات سریع و کارآمد ما بهره‌مند شوید", - keywords: - "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان", - image: "https://www.nobat724.com/assets/images/logo.png", -}; +export async function generateMetadata() { + const hostname = headers().get("host") || ""; + const cityMatch = citiesData.find((city) => + hostname.includes(city.domain.split(".")[0]) + ); + + return { + title: cityMatch ? cityMatch.title : "نوبت724", + description: cityMatch + ? cityMatch.description + : "نوبت 724 - سیستم آنلاین نوبت‌دهی برای پزشکان و کلینیک‌ها. با استفاده از نوبت 724، به راحتی نوبت پزشکی خود را به صورت آنلاین رزرو کنید و از خدمات سریع و کارآمد ما بهره‌مند شوید", + keywords: cityMatch + ? cityMatch.keywords + : "نوبت 724, نوبت دهی, رزرو نوبت, پزشک, پزشکی, کلینیک, بیمارستان, نوبت آنلاین, سیستم نوبت دهی, سیستم نوبت دهی آنلاین, سیستم نوبت دهی پزشکی, سیستم نوبت دهی کلینیک, سیستم نوبت دهی بیمارستان, سیستم نوبت دهی آنلاین پزشکی, سیستم نوبت دهی آنلاین کلینیک, سیستم نوبت دهی آنلاین بیمارستان", + openGraph: { + images: ["https://www.nobat724.com/assets/images/logo.png"], + }, + }; +} export default function RootLayout({ children }) { return ( - + + + diff --git a/components/home/index.js b/components/home/index.js index b1e8503..71987aa 100644 --- a/components/home/index.js +++ b/components/home/index.js @@ -20,7 +20,7 @@ function HomePage() {

    {isProvinceInclude?.slogan} diff --git a/components/icons/BText.js b/components/icons/BText.js index 0aba7b9..244a4c1 100644 --- a/components/icons/BText.js +++ b/components/icons/BText.js @@ -6,6 +6,7 @@ function BText() { height="25" viewBox="0 0 24 25" fill="none" + className="rotate-180" > Date: Fri, 9 May 2025 22:04:56 +0330 Subject: [PATCH 026/124] update modals & text & design --- app/component/element/AutoCompleteSelect.js | 22 +++++---- app/component/element/Field.js | 15 +++--- app/component/modalSearchCity/Content.js | 14 ++++-- app/component/modalSearchCity/index.js | 14 +++--- components/doctors/index.js | 55 ++++++++++++++++----- components/home/search/index.js | 25 +++++++++- components/register/LogInPage.js | 14 +++++- 7 files changed, 115 insertions(+), 44 deletions(-) diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 26142b0..11a77ed 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -10,13 +10,15 @@ function AutoCompleteSelect({ name, label, disabled = false, + listboxProps }) { return ( { updateData && updateData(newValue ? newValue.label : "", name); @@ -25,9 +27,9 @@ function AutoCompleteSelect({ ...styleTextSelectRight, // Hide Icon Number "& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button": - { - display: "none", - }, + { + display: "none", + }, "& input[type=number]": { MozAppearance: "textfield", }, @@ -46,13 +48,13 @@ function AutoCompleteSelect({ border: "1px solid #D7D7D7", }, "& .MuiInput-underline:hover:not(.Mui-disabled):before, .MuiOutlinedInput-notchedOutline": - { - borderColor: "#D7D7D7 !important", - }, + { + borderColor: "#D7D7D7 !important", + }, "& .muirtl-1kiro5a-MuiInputBase-root-MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": - { - border: "1px solid #5559CE !important", - }, + { + border: "1px solid #5559CE !important", + }, "& .MuiOutlinedInput-notchedOutline": { border: isError ? "1px solid red !important" : "", }, diff --git a/app/component/element/Field.js b/app/component/element/Field.js index 271bac3..522cc57 100644 --- a/app/component/element/Field.js +++ b/app/component/element/Field.js @@ -1,25 +1,22 @@ import { TextField } from "@mui/material"; import { styleTextSelectRight } from "@/mui"; -function Field({ - title, - type, - dir, - // isPlaceHolder -}) { +function Field({ title, type, dir, value, updateState }) { return ( updateState(e.target.value)} className="!w-full !mx-auto !bg-[#FFF]" sx={{ ...styleTextSelectRight, // Hide Icon Number "& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button": - { - display: "none", - }, + { + display: "none", + }, "& input[type=number]": { MozAppearance: "textfield", }, diff --git a/app/component/modalSearchCity/Content.js b/app/component/modalSearchCity/Content.js index fc069ab..dcb7c68 100644 --- a/app/component/modalSearchCity/Content.js +++ b/app/component/modalSearchCity/Content.js @@ -15,6 +15,12 @@ function Content({ isProvinceInclude, }) { const citySelected = selected.city; + const listboxProps = { + style: { + maxHeight: 200, + overflow: "auto", + }, + }; return (

    @@ -29,15 +35,17 @@ function Content({

    diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 434bffc..dac8e7f 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -13,7 +13,10 @@ import { useProvince } from "@/context/ProvinceProvider"; function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const provinceSelected = selected.province; const { isProvinceInclude } = useProvince(); - const newProvinceData = isProvinceInclude?.id === 63; + const newProvinceData = + isProvinceInclude && isProvinceInclude.id === "63" + ? false + : isProvinceInclude; const [states, setStates] = useState([]); const [cities, setCities] = useState([]); @@ -21,15 +24,12 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const handleClose = () => setOpen(false); - // Load states and cities from JSON files useEffect(() => { - // Format states data to match the structure expected by AutoCompleteSelect const formattedStates = statesData.map((state) => ({ label: state.name, id: state.id, })); - // Format cities data const formattedCities = citiesData.map((city) => ({ label: city.name, id: city.id, @@ -40,7 +40,6 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { setCities(formattedCities); }, []); - // Filter cities when state is selected useEffect(() => { if (provinceSelected) { const selectedState = states.find( @@ -53,11 +52,11 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { ); setFilteredCities(filteredCities); } - } else if (isProvinceInclude) { + } else if (newProvinceData) { setSelected({ ...selected, province: statesData.find( - (state) => state.id === isProvinceInclude.province_id + (state) => state.id === newProvinceData.province_id )?.name, }); } else { @@ -68,7 +67,6 @@ function ModalSearchCity({ children, selected, setSelected, open, setOpen }) { const updateData = (event, name) => { if (name === "province" && event !== provinceSelected) { - // If state changes, reset city selection setSelected({ province: event, city: "" }); } else { setSelected({ ...selected, [name]: event }); diff --git a/components/doctors/index.js b/components/doctors/index.js index e833d3f..5ceda62 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -6,22 +6,46 @@ import SortList from "./sortlist"; import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; import { useSearchParams } from "next/navigation"; +import ModalSearchCity from "@/app/component/modalSearchCity"; import { useProvince } from "@/context/ProvinceProvider"; +import { Button } from "@mui/material"; + +// Data +import citiesData from "@/data/city.json"; +import statesData from "@/data/state.json"; function DoctorsPage() { const [loading, setLoading] = useState(true); - const searchParams = useSearchParams(); + const [open, setOpen] = useState(false); const { isProvinceInclude } = useProvince(); + const [selected, setSelected] = useState({ + // province: isProvinceInclude?.name || locationSelected.province, + // city: locationSelected.city || newCity, + province: isProvinceInclude?.name, + city: null, + }); + const searchParams = useSearchParams(); const locationSelected = { province: searchParams.get("province"), city: searchParams.get("city"), }; + const provinceId = statesData.find( + (state) => state.name === locationSelected?.province + ); + + const newCity = + locationSelected.city || + (provinceId && + citiesData.find((city) => city.province_id === provinceId.id)?.name); + const [data, setData] = useState({ expertise: "", gender: 0, degree: 0, turn: true, }); + console.log(newCity); + useEffect(() => { setTimeout(() => { @@ -32,16 +56,25 @@ function DoctorsPage() { return (
    -
    - -

    - {" "} - {isProvinceInclude?.name || locationSelected.province || "استان"} - {/* {isProvinceInclude?.name ? "" : " / "} */} - {" / "} - {locationSelected.city || "شهر"} -

    -
    + + +
    diff --git a/components/home/search/index.js b/components/home/search/index.js index aee9cee..9e3e8ae 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -5,15 +5,36 @@ import { Button, ButtonGroup, TextField } from "@mui/material"; import SearchD from "@/components/icons/SearchD"; import ModalSearchCity from "@/app/component/modalSearchCity"; import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; -import { useState } from "react"; +import { useState, useCallback } from "react"; import Link from "next/link"; +import statesData from "@/data/state.json"; +import citiesData from "@/data/city.json"; + +const provinceIdMap = Object.fromEntries( + statesData.map((state) => [state.name, state.id]) +); +const citiesByProvinceId = citiesData.reduce((acc, city) => { + if (!acc[city.province_id]) acc[city.province_id] = []; + acc[city.province_id].push(city); + return acc; +}, {}); + function SearchBar() { const [selected, setSelected] = useState({ province: "", city: "", }); const [open, setOpen] = useState(false); + const getDefaultCityForProvince = useCallback((provinceName) => { + if (!provinceName) return undefined; + const provinceId = provinceIdMap[provinceName]; + return citiesByProvinceId[provinceId]?.[0]?.name; + }, []); + console.log(getDefaultCityForProvince(selected.province)); + console.log(selected.province); + + return ( diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 69179c1..938b70d 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -1,8 +1,14 @@ import Field from "@/app/component/element/Field"; import { Button } from "@mui/material"; import Link from "next/link"; +import { useState } from "react"; function LogInPage({ setIsSendMsg, setStep }) { + const [num, setNum] = useState("09"); + const updateNum = (value) => { + setNum(value === "0" || !value ? "09" : value); + }; + return (
    - +
    + + + ) +} + +export default Fields \ No newline at end of file diff --git a/components/home/search/index.js b/components/home/search/index.js index 9e3e8ae..c3ff72a 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -1,40 +1,29 @@ -"use client"; - -import Search from "@/components/icons/Search"; import { Button, ButtonGroup, TextField } from "@mui/material"; import SearchD from "@/components/icons/SearchD"; -import ModalSearchCity from "@/app/component/modalSearchCity"; -import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; -import { useState, useCallback } from "react"; import Link from "next/link"; import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; +import Fields from "./Fields"; +import { getStateInfo } from "@/lib/getStateInfo"; -const provinceIdMap = Object.fromEntries( - statesData.map((state) => [state.name, state.id]) -); -const citiesByProvinceId = citiesData.reduce((acc, city) => { - if (!acc[city.province_id]) acc[city.province_id] = []; - acc[city.province_id].push(city); - return acc; -}, {}); +// const provinceIdMap = Object.fromEntries( +// statesData.map((state) => [state.name, state.id]) +// ); +// const citiesByProvinceId = citiesData.reduce((acc, city) => { +// if (!acc[city.province_id]) acc[city.province_id] = []; +// acc[city.province_id].push(city); +// return acc; +// }, {}); function SearchBar() { - const [selected, setSelected] = useState({ - province: "", - city: "", - }); - const [open, setOpen] = useState(false); - const getDefaultCityForProvince = useCallback((provinceName) => { - if (!provinceName) return undefined; - const provinceId = provinceIdMap[provinceName]; - return citiesByProvinceId[provinceId]?.[0]?.name; - }, []); - console.log(getDefaultCityForProvince(selected.province)); - console.log(selected.province); - + const { matchedCity, matchedState } = getStateInfo() + // const getDefaultCityForProvince = useCallback((provinceName) => { + // if (!provinceName) return undefined; + // const provinceId = provinceIdMap[provinceName]; + // return citiesByProvinceId[provinceId]?.[0]?.name; + // }, []); return ( - - - - - - - - +
    , { prop } ); }; + +export const addLabelToList = (list) => + list.map(item => { + return { + ...item, + label: item.name + } + }) \ No newline at end of file diff --git a/lib/getStateInfo.js b/lib/getStateInfo.js new file mode 100644 index 0000000..6245119 --- /dev/null +++ b/lib/getStateInfo.js @@ -0,0 +1,16 @@ +import { headers } from "next/headers"; + +// Data +import citiesData from "@/data/city.json"; +import statesData from "@/data/state.json"; + +export function getStateInfo() { + const headersList = headers(); + const host = headersList.get("host") || ""; + const subdomain = host.split(".")[0]; + + const matchedCity = citiesData.find((city) => city.domain.includes(subdomain)); + const matchedState = matchedCity && statesData.find(state => state.id === matchedCity.province_id) + + return { matchedCity, matchedState }; +} From e4771c4e2f16c2cba0928bf708d1e69e2f5717c6 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Sun, 11 May 2025 12:13:23 +0330 Subject: [PATCH 028/124] last update --- app/component/AnimationTextHead.js | 3 +- app/component/Logo.js | 4 +- app/page.js | 1 + components/aboutUs/Services.js | 2 +- components/blog/detail/commentUser/index.js | 2 +- components/blog/relatedContent/index.js | 2 +- components/contactUs/Call.js | 3 -- components/contactUs/Connect.js | 2 +- components/layout/header/Content.js | 58 +++++++++++++++++++++ components/layout/header/index.js | 55 +++---------------- components/layout/index.js | 18 ++----- components/layout/sidebar/List.js | 2 + components/layoutPanel/index.js | 11 ---- 13 files changed, 79 insertions(+), 84 deletions(-) create mode 100644 components/layout/header/Content.js diff --git a/app/component/AnimationTextHead.js b/app/component/AnimationTextHead.js index 83c9917..d86f897 100644 --- a/app/component/AnimationTextHead.js +++ b/app/component/AnimationTextHead.js @@ -1,9 +1,8 @@ -function AnimationTextHead({ name, text, children }) { +function AnimationTextHead({ text, children }) { return (

    {text} diff --git a/app/component/Logo.js b/app/component/Logo.js index 1324643..d80c909 100644 --- a/app/component/Logo.js +++ b/app/component/Logo.js @@ -2,7 +2,7 @@ import Image from "next/image"; import Link from "next/link"; import React from "react"; -function Logo({ isAbsolute }) { +function Logo({ isAbsolute, matchedCity }) { return (

    @@ -14,7 +14,7 @@ function Logo({ isAbsolute }) { alt="logo" />

    - نوبت ۷۲۴ + {matchedCity?.site_name || 'نوبت ۷۲۴'}

    diff --git a/app/page.js b/app/page.js index 31fb904..cd12451 100644 --- a/app/page.js +++ b/app/page.js @@ -2,6 +2,7 @@ import HomePage from "@/components/home"; import Layout from "@/components/layout"; export default function Home() { + return ( diff --git a/components/aboutUs/Services.js b/components/aboutUs/Services.js index efbd615..90dc5f3 100644 --- a/components/aboutUs/Services.js +++ b/components/aboutUs/Services.js @@ -15,7 +15,7 @@ function Services() { return (
    - +
    diff --git a/components/blog/detail/commentUser/index.js b/components/blog/detail/commentUser/index.js index a1005ff..9deb083 100644 --- a/components/blog/detail/commentUser/index.js +++ b/components/blog/detail/commentUser/index.js @@ -7,7 +7,7 @@ import AddComment from "./AddComment"; function CommentUser({ data, loading }) { return (
    - + diff --git a/components/blog/relatedContent/index.js b/components/blog/relatedContent/index.js index 10ca613..fe9af35 100644 --- a/components/blog/relatedContent/index.js +++ b/components/blog/relatedContent/index.js @@ -6,7 +6,7 @@ import Item from "./Item"; function RelatedContent({ data, loading }) { return (
    - + )}
    - +
    ); From feba3c4a6488ef1b83cb85b132eb3edc42c4ccf5 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Wed, 14 May 2025 15:57:40 +0330 Subject: [PATCH 044/124] change list sort doctors page & change function search list specialties & remove pagination from page specialties & fix zoom page & change design all fields & change regex validation phone number for nobat724 and clinic-pro --- app/component/modalSearchCity/ButtonFilter.js | 2 -- app/globals.css | 4 +-- components/doctors/index.js | 26 ++--------------- components/doctors/sortlist/SelectSort.js | 29 ++++++++++++++----- components/home/search/modal/index.js | 4 +-- components/register/LogInPage.js | 1 - components/searchHead/SmSearch.js | 10 ++----- components/specialties/index.js | 26 ++++++----------- components/specialties/list/index.js | 19 +----------- helper/index.js | 3 +- 10 files changed, 42 insertions(+), 82 deletions(-) diff --git a/app/component/modalSearchCity/ButtonFilter.js b/app/component/modalSearchCity/ButtonFilter.js index 57160c0..4cda88c 100644 --- a/app/component/modalSearchCity/ButtonFilter.js +++ b/app/component/modalSearchCity/ButtonFilter.js @@ -21,8 +21,6 @@ function ButtonFilter({ selected, setOpen }) { className='text-[#616161] text-[11px] md:text-[14px] leading-[17px] sm:leading-[19px] md:leading-[22px] lg:leading-[24px] font-medium ml-1 md:mx-1' > - {selected.province || 'استان'} - {' | '} {selected.city || 'شهر'}

    diff --git a/app/globals.css b/app/globals.css index 864a2f4..1caaab4 100644 --- a/app/globals.css +++ b/app/globals.css @@ -235,7 +235,7 @@ html { } .MuiFormControl-root .MuiInputBase-root .MuiInputBase-input { - font-size: 10px !important; + font-size: 16px !important; } @keyframes openx { @@ -384,7 +384,7 @@ html { } .MuiFormControl-root .MuiInputBase-root .MuiInputBase-input { - font-size: 13px !important; + font-size: 16px !important; } .MuiModal-root .MuiBox-root { diff --git a/components/doctors/index.js b/components/doctors/index.js index 8e81805..5dd3f99 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -3,38 +3,18 @@ import { useEffect, useState } from "react"; import SearchBar from "./search"; import SortList from "./sortlist"; +import { Button } from "@mui/material"; import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; -import { useSearchParams } from "next/navigation"; import ModalSearchCity from "@/app/component/modalSearchCity"; -import { useProvince } from "@/context/ProvinceProvider"; -import { Button } from "@mui/material"; - -// Data -import citiesData from "@/data/city.json"; -import statesData from "@/data/state.json"; function DoctorsPage({ params, matchedCity, matchedState }) { const [loading, setLoading] = useState(true); const [open, setOpen] = useState(false); - const { isProvinceInclude } = useProvince(); const [selected, setSelected] = useState({ - province: matchedState?.name, - city: matchedCity?.name, + province: matchedState?.name || params?.province, + city: matchedCity?.name || params?.city, }); - const searchParams = useSearchParams(); - const locationSelected = { - province: searchParams.get("province"), - city: searchParams.get("city"), - }; - const provinceId = statesData.find( - (state) => state.name === locationSelected?.province - ); - - const newCity = - locationSelected.city || - (provinceId && - citiesData.find((city) => city.province_id === provinceId.id)?.name); const [data, setData] = useState({ expertise: "", diff --git a/components/doctors/sortlist/SelectSort.js b/components/doctors/sortlist/SelectSort.js index 1dc9f5a..4a0fea6 100644 --- a/components/doctors/sortlist/SelectSort.js +++ b/components/doctors/sortlist/SelectSort.js @@ -2,17 +2,20 @@ import { MenuItem, Select, SvgIcon } from "@mui/material"; import { useState } from "react"; import ArrowBottomD from "../../icons/ArrowBottomD"; import SortD from "../../icons/SortD"; +import StarDI from "@/components/icons/StarDI"; const listSort = [ - { label: "براساس امتیاز 1", id: 10 }, - { label: "براساس امتیاز 2", id: 20 }, - { label: "براساس امتیاز 3", id: 30 }, + { label: 3, id: 30 }, + { label: 4, id: 40 }, + { label: 5, id: 50 }, ]; function SelectSort() { - const [sort, setSort] = useState(""); + const [sort, setSort] = useState(3); + + const handleChange = (event) => setSort(event.target.value); + console.log(sort); - const handleChange = (event) => setSort(event.target.name); return ( { @@ -29,14 +27,15 @@ function SelectSort() { -
      - {Array(sort).fill({}).map((_, idx) => ( -
    • - -
    • - ))} -
    - {/* {value || "مرتب سازی"} */} + {value ? ( +
      + {Array(sort).fill({}).map((_, idx) => ( +
    • + +
    • + ))} +
    + ) : "مرتب سازی"}
    ); }} @@ -62,14 +61,10 @@ function SelectSort() { className="!flex !flex-col !items-start !w-full hover:!bg-transparent" >
    - {/* {item.label} */} {Array(item.label).fill({}).map((_, idx) => ( ))}
    - {/* {listSort.length > idx + 1 && ( - - )} */} ))} diff --git a/components/searchHead/SmSearch.js b/components/searchHead/SmSearch.js index 6cb5753..2c60b16 100644 --- a/components/searchHead/SmSearch.js +++ b/components/searchHead/SmSearch.js @@ -1,7 +1,7 @@ import SearchD from "@/components/icons/SearchD"; import { Button, ButtonGroup, TextField } from "@mui/material"; -function SmSearch({ placeholder, searchHandler }) { +function SmSearch({ placeholder, changeSearch, handleSearch, search }) { return ( changeSearch(e.target.value)} InputProps={{ disableUnderline: true, }} @@ -26,17 +28,17 @@ function SmSearch({ placeholder, searchHandler }) { }} placeholder={placeholder} dir="rtl" - onChange={e => searchHandler(e)} className={`!shadow-none !w-full !px-5 !h-full bg-[#FAFAFA] !text-[14px] md:!text-[16px] !min-w-[50%] !rounded-0 !font-normal !text-[#6C757D]`} /> diff --git a/components/specialties/index.js b/components/specialties/index.js index a2718c6..4602fbb 100644 --- a/components/specialties/index.js +++ b/components/specialties/index.js @@ -8,13 +8,13 @@ import specialtiesData from "@/data/specialties.json"; import { searchOnList } from "@/helper"; function SpecialtiesPage() { + const [search, setSearch] = useState(""); const [filteredSpecialties, setFilteredSpecialties] = useState(specialtiesData); - const searchHandler = (e) => { - setFilteredSpecialties( - searchOnList(specialtiesData, e.target.value, 'name') - ); - }; + const changeSearch = text => setSearch(text); + + const handleSearch = () => + setFilteredSpecialties(searchOnList(specialtiesData, search, 'name')); return (
    @@ -22,7 +22,12 @@ function SpecialtiesPage() { title="تخصص مورد نظر شما چیست؟" detail="تخصص مورد نظرتان را جستجو کرده و یا از لیست زیر انتخاب نمایید:" > - +
    diff --git a/data/clinics.json b/data/clinics.json index 4404b53..63b21f8 100644 --- a/data/clinics.json +++ b/data/clinics.json @@ -61,7 +61,8 @@ "اطفال" ], "doctors": "۵۰", + "city": "اهواز", "location": "اهواز، کیان آباد، خیابان ۱۶ غربی، پلاک ۱۰", "hours_of_work": "شنبه تا سه شنبه ساعت ۱۶ تا ۲۲" } -] +] \ No newline at end of file From a016d3319a71e60b404139440af6e6007119707c Mon Sep 17 00:00:00 2001 From: Ehsan Date: Fri, 16 May 2025 13:52:47 +0330 Subject: [PATCH 047/124] save data modal & change list selectors & handle redirect in modal page doctors --- app/component/element/AutoCompleteSelect.js | 6 +- components/doctors/index.js | 5 +- components/doctors/modal/Content.js | 66 ++++++++++++++++----- components/doctors/modal/RadioContent.js | 9 ++- components/doctors/modal/Radios.js | 6 +- data/specialties.json | 2 +- helper/index.js | 13 +++- 7 files changed, 79 insertions(+), 28 deletions(-) diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 11a77ed..ecfb3a4 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -17,11 +17,11 @@ function AutoCompleteSelect({ disablePortal options={list} disabled={disabled} - value={value || null} ListboxProps={listboxProps} + value={value || null} className="!w-full !rounded-lg auto-complete-selector" - onChange={(event, newValue) => { - updateData && updateData(newValue ? newValue.label : "", name); + onChange={(e, newValue) => { + updateData && updateData(newValue || "", name); }} sx={{ ...styleTextSelectRight, diff --git a/components/doctors/index.js b/components/doctors/index.js index 252e669..e8d1127 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -17,10 +17,11 @@ function DoctorsPage({ params, matchedCity, matchedState }) { }); const [data, setData] = useState({ + category: "", expertise: "", turn: true, - gender: 0, - degree: 0, + gender: "خانم", + degree: "فوق تخصص", }); useEffect(() => { diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index 894ea4a..e607ef1 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -1,58 +1,92 @@ import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; import RadioContent from "./RadioContent"; -import { Switch } from "@mui/material"; -import { category, expertise } from "./listSelector"; +import { FormControlLabel, Switch } from "@mui/material"; import specialties from "@/data/specialties.json"; +import { addKeyToList } from "@/helper"; const group1 = ["خانم", "آقا", "هر دو"]; const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; -const label = { inputProps: { "aria-label": "Switch demo" } }; function Content({ data, setData }) { + 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 = changedChildrenList.filter(item => item.parent === data.category.id); + + console.log(data); const changeData = (value, name) => { - setData({ ...data, [name]: value }); + console.log(value); + console.log(name); + + setData({ ...data, [name]: value }) }; - const parentList = specialties.map(item => !item.parent); - const childrenList = specialties.map(item => item.parent); return (
    changeData(+value, "gender")} + changeData={changeData} value={data.gender} text="جنسیت پزشک" group={group1} + name='gender' /> changeData(+value, "degree")} + changeData={changeData} value={data.degree} text="درجه علمی" group={group2} + name='degree' />
    -

    + {/*

    فقط پزشکان دارای نوبت -

    - changeData(event.target.checked, "turn")} +

    */} + {/* + changeData(event.target.checked, "turn") + } + /> */} + changeData(event.target.checked, "turn")} + /> + } + sx={{ + ".MuiFormControlLabel-label": { + color: "#3B3B3B", + fontSize: "16px", + fontWeight: 500, + }, + ".MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementStart": { + marginRight: '0 !important' + } + }} + label="فقط پزشکان دارای نوبت" + labelPlacement="start" // متن را سمت راست یا چپ قرار می‌دهد />
    diff --git a/components/doctors/modal/RadioContent.js b/components/doctors/modal/RadioContent.js index 18811f2..c0f8366 100644 --- a/components/doctors/modal/RadioContent.js +++ b/components/doctors/modal/RadioContent.js @@ -1,11 +1,16 @@ import Radios from "./Radios"; -function RadioContent({ group, text, value, changeData }) { +function RadioContent({ group, text, value, changeData, name }) { return (

    {text}

    - +
    ); diff --git a/components/doctors/modal/Radios.js b/components/doctors/modal/Radios.js index 976ad47..bec8123 100644 --- a/components/doctors/modal/Radios.js +++ b/components/doctors/modal/Radios.js @@ -1,11 +1,11 @@ import { FormControlLabel, Radio, RadioGroup } from "@mui/material"; -function Radios({ group, value, changeData }) { +function Radios({ group, value, changeData, name }) { return ( changeData(e.target.value)} + onChange={(e) => changeData(e.target.value, name)} sx={{ "& .MuiFormControlLabel-root": { marginRight: "0 !important", @@ -18,7 +18,7 @@ function Radios({ group, value, changeData }) { control={} className="!text-[#525252]" label={item} - value={idx} + value={item} key={idx} /> ))} diff --git a/data/specialties.json b/data/specialties.json index 6720455..86bebd7 100644 --- a/data/specialties.json +++ b/data/specialties.json @@ -344,4 +344,4 @@ "name": "سکته مغزی", "parent": null } -] +] \ No newline at end of file diff --git a/helper/index.js b/helper/index.js index 93be8ec..969f186 100644 --- a/helper/index.js +++ b/helper/index.js @@ -137,4 +137,15 @@ export const searchOnList = (list, value, name) => { item[name].toLowerCase().includes(value) ) return newList; -} \ No newline at end of file +} + +export const addKeyToList = (list, nameKey, nameValue) => { + const newList = list.map(item => { + return { + ...item, + [nameKey]: item[nameValue] + } + }); + + return newList; +} \ No newline at end of file From 7fddf65026a6c7140648bf31473c5a3b9f01ff0e Mon Sep 17 00:00:00 2001 From: Ehsan Date: Fri, 16 May 2025 17:19:38 +0330 Subject: [PATCH 048/124] change component file & set data in url & handle remove all variable --- app/component/element/AutoCompleteSelect.js | 5 +- components/doctors/index.js | 18 ++++--- components/doctors/modal/Content.js | 54 ++++++++++----------- components/doctors/modal/FilterModal.js | 23 ++++++++- components/doctors/search/index.js | 4 +- 5 files changed, 62 insertions(+), 42 deletions(-) diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index ecfb3a4..3630664 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -10,7 +10,8 @@ function AutoCompleteSelect({ name, label, disabled = false, - listboxProps + listboxProps, + sendAll }) { return ( { - updateData && updateData(newValue || "", name); + updateData && updateData((newValue && sendAll) ? newValue : (newValue && !sendAll) && newValue.label || "", name); }} sx={{ ...styleTextSelectRight, diff --git a/components/doctors/index.js b/components/doctors/index.js index e8d1127..4200226 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -8,6 +8,14 @@ import ListDoctors from "./listDoctors"; import LocationD from "../icons/LocationD"; import ModalSearchCity from "@/app/component/modalSearchCity"; +const defaultData = { + category: "", + expertise: "", + turn: true, + gender: "هر دو", + degree: "متخصص", +} + function DoctorsPage({ params, matchedCity, matchedState }) { const [loading, setLoading] = useState(true); const [open, setOpen] = useState(false); @@ -16,13 +24,7 @@ function DoctorsPage({ params, matchedCity, matchedState }) { city: matchedCity?.name || params?.city, }); - const [data, setData] = useState({ - category: "", - expertise: "", - turn: true, - gender: "خانم", - degree: "فوق تخصص", - }); + const [data, setData] = useState(defaultData); useEffect(() => { setTimeout(() => { @@ -53,7 +55,7 @@ function DoctorsPage({ params, matchedCity, matchedState }) {
    - +
    diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index e607ef1..6a7be6f 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -3,11 +3,14 @@ import RadioContent from "./RadioContent"; import { FormControlLabel, Switch } from "@mui/material"; import specialties from "@/data/specialties.json"; import { addKeyToList } from "@/helper"; +import { useEffect } from "react"; +import { useRouter } from "next/navigation"; const group1 = ["خانم", "آقا", "هر دو"]; const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; function Content({ data, setData }) { + const router = useRouter(); const parentList = specialties.filter(item => !item.parent); const childrenList = specialties.filter(item => item.parent); @@ -16,33 +19,36 @@ function Content({ data, setData }) { const filteredChildrenList = changedChildrenList.filter(item => item.parent === data.category.id); - console.log(data); const changeData = (value, name) => { - console.log(value); - console.log(name); - - setData({ ...data, [name]: value }) - }; + const current = new URLSearchParams(window.location.search); + current.set(name, value.id || value); + const queryString = current.toString(); + router.push(`/doctors?${queryString}`) + setData({ ...data, [name]: value }); + } return (
    -
    - -
    + {!!filteredChildrenList.length && ( +
    + +
    + )}
    - {/*

    - فقط پزشکان دارای نوبت -

    */} - {/* - changeData(event.target.checked, "turn") - } - /> */} changeData(event.target.checked, "turn")} /> } @@ -81,12 +81,10 @@ function Content({ data, setData }) { fontSize: "16px", fontWeight: 500, }, - ".MuiFormControlLabel-root.MuiFormControlLabel-labelPlacementStart": { - marginRight: '0 !important' - } + marginLeft: '0 !important', }} label="فقط پزشکان دارای نوبت" - labelPlacement="start" // متن را سمت راست یا چپ قرار می‌دهد + labelPlacement="start" />
    diff --git a/components/doctors/modal/FilterModal.js b/components/doctors/modal/FilterModal.js index 0d825ba..a85beb8 100644 --- a/components/doctors/modal/FilterModal.js +++ b/components/doctors/modal/FilterModal.js @@ -5,12 +5,31 @@ import { styleDefault } from "@/mui"; import { Button, Modal } from "@mui/material"; import { useState } from "react"; import Content from "./Content"; +import { useRouter } from "next/navigation"; -function FilterModal({ data, setData, children }) { +function FilterModal({ data, setData, children, defaultData }) { + const router = useRouter(); const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + function clearFilterParams() { + const currentParams = new URLSearchParams(window.location.search); + const keysToRemove = ['turn', 'expertise', 'degree', 'category', 'gender']; + keysToRemove.forEach((key) => currentParams.delete(key)); + const queryString = currentParams.toString(); + const newUrl = queryString ? `/doctors?${queryString}` : '/doctors'; + + router.push(newUrl); + } + + const deleteData = () => { + setData(defaultData); + clearFilterParams() + handleClose(); + } + return ( <> {/* Button Modal */} @@ -28,7 +47,7 @@ function FilterModal({ data, setData, children }) {

    فیلترها

    - +
    diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index 6a7be6f..905851d 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -1,46 +1,50 @@ import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; import RadioContent from "./RadioContent"; import { FormControlLabel, Switch } from "@mui/material"; -import specialties from "@/data/specialties.json"; -import { addKeyToList } from "@/helper"; -import { useEffect } from "react"; import { useRouter } from "next/navigation"; +import { filterList } from "@/helper"; const group1 = ["خانم", "آقا", "هر دو"]; const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; function Content({ data, setData }) { const router = useRouter(); - const parentList = specialties.filter(item => !item.parent); - const childrenList = specialties.filter(item => item.parent); + const { parentList, childrenList } = filterList(data); - const changedParentList = addKeyToList(parentList, 'label', 'name') || []; - const changedChildrenList = addKeyToList(childrenList, 'label', 'name') || []; - - const filteredChildrenList = changedChildrenList.filter(item => item.parent === data.category.id); - - const changeData = (value, name) => { + const changeUrl = (value, name, removeExpertise) => { const current = new URLSearchParams(window.location.search); current.set(name, value.id || value); + if (removeExpertise) { + current.delete('expertise') + }; const queryString = current.toString(); router.push(`/doctors?${queryString}`) - setData({ ...data, [name]: value }); + } + + const changeData = (value, name, removeExpertise) => { + changeUrl(value, name, removeExpertise); + const newData = data; + newData[name] = value; + if (removeExpertise) { + newData.expertise = '' + }; + setData(newData); } return (
    changeData(value, name, true)} sendAll={true} value={data.category.name} label="دسته بندی" name="category" /> - {!!filteredChildrenList.length && ( + {!!childrenList.length && (
    changeData(event.target.checked, "turn")} + onChange={(event) => { + changeData(event.target.checked ? 1 : 0, "turn") + }} /> } sx={{ diff --git a/components/doctors/modal/FilterModal.js b/components/doctors/modal/FilterModal.js index a85beb8..2ca74f4 100644 --- a/components/doctors/modal/FilterModal.js +++ b/components/doctors/modal/FilterModal.js @@ -6,27 +6,24 @@ import { Button, Modal } from "@mui/material"; import { useState } from "react"; import Content from "./Content"; import { useRouter } from "next/navigation"; +import { clearFilterParams } from "@/helper"; -function FilterModal({ data, setData, children, defaultData }) { +function FilterModal({ data, setData, children }) { const router = useRouter(); const [open, setOpen] = useState(false); const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); - function clearFilterParams() { - const currentParams = new URLSearchParams(window.location.search); - const keysToRemove = ['turn', 'expertise', 'degree', 'category', 'gender']; - keysToRemove.forEach((key) => currentParams.delete(key)); - const queryString = currentParams.toString(); - const newUrl = queryString ? `/doctors?${queryString}` : '/doctors'; - - router.push(newUrl); - } - const deleteData = () => { - setData(defaultData); - clearFilterParams() + clearFilterParams(router, ['turn', 'expertise', 'degree', 'category', 'gender']) + setData({ + category: "", + expertise: "", + turn: true, + gender: "هر دو", + degree: "متخصص", + }); handleClose(); } diff --git a/components/doctors/search/index.js b/components/doctors/search/index.js index 9e20fa1..9302732 100644 --- a/components/doctors/search/index.js +++ b/components/doctors/search/index.js @@ -4,7 +4,7 @@ import ArrowBottomD from "@/components/icons/ArrowBottomD"; import SearchD from "@/components/icons/SearchD"; import FilterModal from "../modal/FilterModal"; -function SearchBar({ data, setData, params, defaultData }) { +function SearchBar({ data, setData, params }) { return ( - +
      {doctor.progress_detail.map((item, idx) => ( - - + + ))}
    diff --git a/components/doctor/detailDoctor/cards/locations/index.js b/components/doctor/detailDoctor/cards/locations/index.js index 125b57a..dc55f4f 100644 --- a/components/doctor/detailDoctor/cards/locations/index.js +++ b/components/doctor/detailDoctor/cards/locations/index.js @@ -9,9 +9,9 @@ function Locations({ doctor, loading }) {

      {doctor.locations.map((item, idx) => ( - +
    • - + {doctor.locations.length > idx + 1 && ( )} diff --git a/components/doctors/index.js b/components/doctors/index.js index 4c5c903..b9b278e 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -20,11 +20,11 @@ function DoctorsPage({ params, matchedCity, matchedState }) { }); const findItem = (name, value) => specialties.find(item => item[name] === value) const itemCategory = findItem('id', params.category); - const itemExpertise = findItem('id', params.expertise); + const itemSpecialties = findItem('id', params.specialties); const [data, setData] = useState({ category: itemCategory || "", - expertise: itemExpertise ? { ...itemExpertise, label: itemExpertise.name } : "", + specialties: itemSpecialties ? { ...itemSpecialties, label: itemSpecialties.name } : "", turn: params && params.hasOwnProperty('turn') ? JSON.parse(params.turn) : 1, gender: params.gender || "هر دو", degree: params.degree || "متخصص", diff --git a/components/doctors/listDoctors/index.js b/components/doctors/listDoctors/index.js index 144fd66..6e016b6 100644 --- a/components/doctors/listDoctors/index.js +++ b/components/doctors/listDoctors/index.js @@ -11,7 +11,7 @@ function ListDoctors({ loading }) { ))}
    - +
    ); diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index 905851d..3884c84 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -11,22 +11,22 @@ function Content({ data, setData }) { const router = useRouter(); const { parentList, childrenList } = filterList(data); - const changeUrl = (value, name, removeExpertise) => { + const changeUrl = (value, name, removeSpecialties) => { const current = new URLSearchParams(window.location.search); current.set(name, value.id || value); - if (removeExpertise) { - current.delete('expertise') + if (removeSpecialties) { + current.delete('specialties') }; const queryString = current.toString(); router.push(`/doctors?${queryString}`) } - const changeData = (value, name, removeExpertise) => { - changeUrl(value, name, removeExpertise); + const changeData = (value, name, removeSpecialties) => { + changeUrl(value, name, removeSpecialties); const newData = data; newData[name] = value; - if (removeExpertise) { - newData.expertise = '' + if (removeSpecialties) { + newData.specialties = '' }; setData(newData); } @@ -47,8 +47,8 @@ function Content({ data, setData }) { list={childrenList} updateData={changeData} sendAll={true} - value={data.expertise} - name="expertise" + value={data.specialties} + name="specialties" label="تخصص" />
    diff --git a/components/doctors/modal/FilterModal.js b/components/doctors/modal/FilterModal.js index 2ca74f4..5341eb4 100644 --- a/components/doctors/modal/FilterModal.js +++ b/components/doctors/modal/FilterModal.js @@ -16,10 +16,10 @@ function FilterModal({ data, setData, children }) { const handleClose = () => setOpen(false); const deleteData = () => { - clearFilterParams(router, ['turn', 'expertise', 'degree', 'category', 'gender']) + clearFilterParams(router, ['turn', 'specialties', 'degree', 'category', 'gender']) setData({ category: "", - expertise: "", + specialties: "", turn: true, gender: "هر دو", degree: "متخصص", diff --git a/components/doctors/modal/listSelector.js b/components/doctors/modal/listSelector.js deleted file mode 100644 index d576ea4..0000000 --- a/components/doctors/modal/listSelector.js +++ /dev/null @@ -1,17 +0,0 @@ -const category = [ - { label: "چشم پزشکی 1", id: 10 }, - { label: "چشم پزشکی 2", id: 20 }, - { label: "چشم پزشکی 3", id: 30 }, - { label: "چشم پزشکی 4", id: 40 }, - { label: "چشم پزشکی 5", id: 40 }, -]; - -const expertise = [ - { label: "تخصص 1", id: 10 }, - { label: "تخصص 2", id: 20 }, - { label: "تخصص 3", id: 30 }, - { label: "تخصص 4", id: 40 }, - { label: "تخصص 5", id: 40 }, -]; - -export { category, expertise }; diff --git a/components/home/FrequentSearches.js b/components/home/FrequentSearches.js index dcb0e7d..ef5087e 100644 --- a/components/home/FrequentSearches.js +++ b/components/home/FrequentSearches.js @@ -1,20 +1,27 @@ import { frequentSearches } from "@/constans"; +import { filterList } from "@/helper"; import { Button } from "@mui/material"; +import specialties from "@/data/specialties.json"; import Link from "next/link"; function FrequentSearches() { + const childrenList = specialties.filter(item => item.parent); + console.log(childrenList); + + return ( -
    +

    جستجوهای پر تکرار:

    -
    +
      - {frequentSearches.map((item, idx) => ( + {childrenList.map((item, idx) => (
    • @@ -24,7 +31,7 @@ function FrequentSearches() { className="!py-[6px] md:!py-[7px] lg:!py-[8px] !px-[12px] sm:!px-[14px] md:!px-[15px] lg:!px-[16px] !text-[12px] lg:!text-[14px] !rounded-[4px] !shadow-none !font-normal !border !border-solid !border-[#D7D7D7] hover:!bg-[#EFEFEF]" > - {item} + {item.name}
    • diff --git a/components/home/search/Fields.js b/components/home/search/Fields.js index f7cd5b5..0ff24ac 100644 --- a/components/home/search/Fields.js +++ b/components/home/search/Fields.js @@ -11,7 +11,7 @@ import SearchD from "@/components/icons/SearchD"; function Fields({ city, state }) { const [open, setOpen] = useState(false); - const [selected, setSelected] = useState({ + const [data, setData] = useState({ province: state?.name || '', city: city?.name || '', }); @@ -21,15 +21,16 @@ function Fields({ city, state }) { - + setData({ ...data, search: e.target.value })} InputProps={{ disableUnderline: true, }} @@ -62,8 +63,9 @@ function Fields({ city, state }) { href={{ pathname: "/doctors", query: { - province: selected.province, - city: selected.city, + province: data.province, + city: data.city, + search: data.search }, }} > diff --git a/components/register/LayoutRegister.js b/components/register/LayoutRegister.js index 8e24525..96bd584 100644 --- a/components/register/LayoutRegister.js +++ b/components/register/LayoutRegister.js @@ -8,7 +8,7 @@ function LayoutRegister({ children, matchedCity }) {
      @@ -22,9 +22,9 @@ function LayoutRegister({ children, matchedCity }) {
      {children} -
      +
      -
      +
      {about.map((item, idx) => (

      ورود یا ثبت نام در {matchedCity?.site_name || "نوبت 724"} @@ -73,7 +73,7 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { > ورود -

      +

      قوانین استفاده {" "} diff --git a/helper/index.js b/helper/index.js index 48ac182..0fea6fe 100644 --- a/helper/index.js +++ b/helper/index.js @@ -168,7 +168,10 @@ export const filterList = (data) => { const changedParentList = addKeyToList(parentList, 'label', 'name') || []; const changedChildrenList = addKeyToList(childrenList, 'label', 'name') || []; - const filteredChildrenList = changedChildrenList.filter(item => item.parent === data.category.id); + const filteredChildrenList = + data && data.category ? + changedChildrenList.filter(item => item.parent === data.category.id) : + []; return { parentList: changedParentList, From 254d5d4ebd12bcee48ae56d4475f8d1aeb38bbd1 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Sun, 18 May 2025 01:18:35 +0330 Subject: [PATCH 051/124] change format all file --- app/about-us/page.js | 2 +- app/blogs/page.js | 2 +- app/booking/[slug]/page.js | 4 +- app/clinics/page.js | 2 +- app/component/AnimationTextHead.js | 4 +- app/component/Logo.js | 2 +- app/component/Pageguide.js | 9 +- app/component/Pagination.js | 11 +- app/component/TimePickerField.js | 2 +- app/component/TimePickerInput.js | 2 +- app/component/comment/ItemUser.js | 4 +- app/component/element/AutoCompleteSelect.js | 28 ++-- app/component/element/Field.js | 28 +++- app/component/loading/Multiline.js | 20 +-- app/component/modalSearchCity/ButtonFilter.js | 6 +- app/component/modalSearchCity/Content.js | 4 +- app/component/modalSearchCity/index.js | 14 +- app/component/uploadFile/cropImg.js | 4 +- app/dashboard/page.js | 4 +- app/globals.css | 23 +-- app/login-verify/page.js | 4 +- app/login/page.js | 4 +- app/page.js | 2 +- app/panel/(layout)/layout.js | 4 +- app/panel/(layout)/user-account/page.js | 2 +- components/blog/detail/SocialMedia.js | 4 +- components/booking/Content.js | 43 +++-- components/booking/information/index.js | 4 +- .../clinic/components/about/images/Slider.js | 2 +- components/clinics/head/SearchBar.js | 3 +- components/clinics/index.js | 7 +- components/clinics/list/ItemClinic.js | 4 +- components/contactUs/ContentContact.js | 3 +- components/contactUs/call/Call.js | 6 +- components/contactUs/call/Links.js | 48 +++--- components/contactUs/index.js | 4 +- components/dashboard/Content.js | 50 +++--- components/dashboard/index.js | 2 +- .../userAccount/tabs/transactions/Card.js | 8 +- .../userAccount/tabs/transactions/List.js | 8 +- .../doctor/detailDoctor/cards/AboutDcotor.js | 9 +- .../cards/comments/chart/ProgressAll.js | 4 +- .../cards/comments/chart/index.js | 5 +- components/doctors/index.js | 13 +- components/doctors/modal/Content.js | 23 ++- components/doctors/modal/FilterModal.js | 10 +- components/doctors/search/index.js | 2 +- components/doctors/sortlist/SelectSort.js | 29 ++-- components/home/FrequentSearches.js | 19 +-- components/home/TextHeader.js | 38 ++--- components/home/search/Fields.js | 152 +++++++++--------- components/home/search/index.js | 2 +- components/home/search/modal/index.js | 16 +- components/icons/UserEdit.js | 4 +- components/layout/StLayout.js | 44 +++-- components/layout/footer/index.js | 29 ++-- components/layout/header/Content.js | 70 ++++---- components/layout/header/index.js | 6 +- components/layout/header/list/Row.js | 5 +- components/layout/header/list/col/index.js | 2 +- components/layout/index.js | 9 +- components/layout/sidebar/List.js | 2 +- components/layout/sidebar/ModalLogout.js | 2 +- components/panel/Content.js | 87 +++++----- components/panel/dashboard/list/Table.js | 5 +- components/register/ContentLogin.js | 6 +- components/register/ContentVerify.js | 26 +-- components/register/LayoutRegister.js | 68 ++++---- components/register/LogInPage.js | 31 ++-- components/register/index.js | 6 +- components/searchHead/SmSearch.js | 2 +- components/specialties/index.js | 10 +- .../specialties/list/ItemSpecialties.js | 4 +- context/ProvinceProvider.js | 2 +- data/city.json | 2 +- data/clinics.json | 2 +- data/specialties.json | 2 +- data/state.json | 126 +++++++-------- data/turns.json | 14 +- helper/index.js | 59 ++++--- lib/getStateInfo.js | 16 +- package-lock.json | 17 ++ package.json | 1 + services/api.js | 4 +- 84 files changed, 721 insertions(+), 651 deletions(-) diff --git a/app/about-us/page.js b/app/about-us/page.js index 6250812..12cb522 100644 --- a/app/about-us/page.js +++ b/app/about-us/page.js @@ -3,7 +3,7 @@ import Layout from "@/components/layout/StLayout"; function AboutUs() { return ( - + ); diff --git a/app/blogs/page.js b/app/blogs/page.js index 8afea25..ed9764b 100644 --- a/app/blogs/page.js +++ b/app/blogs/page.js @@ -3,7 +3,7 @@ import Layout from "@/components/layout/StLayout"; function Blogs() { return ( - + ); diff --git a/app/booking/[slug]/page.js b/app/booking/[slug]/page.js index 814ce01..a46998b 100644 --- a/app/booking/[slug]/page.js +++ b/app/booking/[slug]/page.js @@ -4,9 +4,7 @@ import { getStateInfo } from "@/lib/getStateInfo"; function Booking({ params: { slug } }) { const { matchedCity } = getStateInfo(); - return ( - - ); + return ; } export default Booking; diff --git a/app/clinics/page.js b/app/clinics/page.js index 94902b3..588d600 100644 --- a/app/clinics/page.js +++ b/app/clinics/page.js @@ -6,7 +6,7 @@ function Clinics() { const { matchedCity, matchedState } = getStateInfo(); return ( - + ); diff --git a/app/component/AnimationTextHead.js b/app/component/AnimationTextHead.js index d86f897..62216f2 100644 --- a/app/component/AnimationTextHead.js +++ b/app/component/AnimationTextHead.js @@ -2,9 +2,7 @@ function AnimationTextHead({ text, children }) { return (

      -

      +

      {text}

      diff --git a/app/component/Logo.js b/app/component/Logo.js index d80c909..d1fac10 100644 --- a/app/component/Logo.js +++ b/app/component/Logo.js @@ -14,7 +14,7 @@ function Logo({ isAbsolute, matchedCity }) { alt="logo" />

      - {matchedCity?.site_name || 'نوبت ۷۲۴'} + {matchedCity?.site_name || "نوبت ۷۲۴"}

      diff --git a/app/component/Pageguide.js b/app/component/Pageguide.js index c7a4ce5..e75878d 100644 --- a/app/component/Pageguide.js +++ b/app/component/Pageguide.js @@ -5,10 +5,11 @@ function Pageguide({ list }) {
    • idx + 1 - ? "text-[#9B9B9B]" - : "text-[#525252]" - } + ${ + list.length > idx + 1 + ? "text-[#9B9B9B]" + : "text-[#525252]" + } `} > {item} diff --git a/app/component/Pagination.js b/app/component/Pagination.js index cf19340..d99dd39 100644 --- a/app/component/Pagination.js +++ b/app/component/Pagination.js @@ -2,7 +2,8 @@ import { Pagination as PaginationMUI } from "@mui/material"; function Pagination({ page, setPage, list, itemsPerPage }) { const handleChange = (_, value) => setPage(value); - const count = list && itemsPerPage ? Math.ceil(list.length / itemsPerPage) : 20; + const count = + list && itemsPerPage ? Math.ceil(list.length / itemsPerPage) : 20; return ( @@ -105,7 +105,7 @@ function ItemUser({ data.is_dislike ? data.dislike - 1 : data.dislike + 1, data, "dislike", - "is_dislike" + "is_dislike", ) } > diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 3630664..20134ab 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -11,7 +11,7 @@ function AutoCompleteSelect({ label, disabled = false, listboxProps, - sendAll + sendAll, }) { return ( { - updateData && updateData((newValue && sendAll) ? newValue : (newValue && !sendAll) && newValue.label || "", name); + updateData && + updateData( + newValue && sendAll + ? newValue + : (newValue && !sendAll && newValue.label) || "", + name, + ); }} sx={{ ...styleTextSelectRight, // Hide Icon Number "& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button": - { - display: "none", - }, + { + display: "none", + }, "& input[type=number]": { MozAppearance: "textfield", }, @@ -49,13 +55,13 @@ function AutoCompleteSelect({ border: "1px solid #D7D7D7", }, "& .MuiInput-underline:hover:not(.Mui-disabled):before, .MuiOutlinedInput-notchedOutline": - { - borderColor: "#D7D7D7 !important", - }, + { + borderColor: "#D7D7D7 !important", + }, "& .muirtl-1kiro5a-MuiInputBase-root-MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": - { - border: "1px solid #5559CE !important", - }, + { + border: "1px solid #5559CE !important", + }, "& .MuiOutlinedInput-notchedOutline": { border: isError ? "1px solid red !important" : "", }, diff --git a/app/component/element/Field.js b/app/component/element/Field.js index 54075a4..0257412 100644 --- a/app/component/element/Field.js +++ b/app/component/element/Field.js @@ -1,7 +1,16 @@ import { TextField } from "@mui/material"; import { styleTextSelectRight } from "@/mui"; -function Field({ title, error, spaceNull, inputProps, type, dir, value, updateState }) { +function Field({ + title, + error, + spaceNull, + inputProps, + type, + dir, + value, + updateState, +}) { return ( ( - - )) + .fill({}) + .map((_, idx) => ( + + )) : children; } diff --git a/app/component/modalSearchCity/ButtonFilter.js b/app/component/modalSearchCity/ButtonFilter.js index 4cda88c..537d9ed 100644 --- a/app/component/modalSearchCity/ButtonFilter.js +++ b/app/component/modalSearchCity/ButtonFilter.js @@ -18,10 +18,10 @@ function ButtonFilter({ selected, setOpen }) {

    • - {selected.city || 'شهر'} + {selected.city || "شهر"}

      diff --git a/app/component/modalSearchCity/Content.js b/app/component/modalSearchCity/Content.js index 7110d37..4551bdb 100644 --- a/app/component/modalSearchCity/Content.js +++ b/app/component/modalSearchCity/Content.js @@ -23,9 +23,9 @@ function Content({ }; const handleFilter = () => { - handleSearch && handleSearch(''); + handleSearch && handleSearch(""); handleClose(); - } + }; return (
      diff --git a/app/component/modalSearchCity/index.js b/app/component/modalSearchCity/index.js index 31edf2f..0542be1 100644 --- a/app/component/modalSearchCity/index.js +++ b/app/component/modalSearchCity/index.js @@ -10,7 +10,15 @@ import statesData from "@/data/state.json"; import citiesData from "@/data/city.json"; import Content from "./Content"; -function ModalSearchCity({ children, selected, handleSearch, state, setSelected, open, setOpen }) { +function ModalSearchCity({ + children, + selected, + handleSearch, + state, + setSelected, + open, + setOpen, +}) { const provinceSelected = selected.province; const states = addLabelToList(statesData); @@ -22,12 +30,12 @@ function ModalSearchCity({ children, selected, handleSearch, state, setSelected, useEffect(() => { if (provinceSelected) { const selectedState = states.find( - (state) => state.label === provinceSelected + (state) => state.label === provinceSelected, ); if (selectedState) { const stateId = selectedState.id; const filteredCities = cities.filter( - (city) => city.province_id === stateId + (city) => city.province_id === stateId, ); setFilteredCities(filteredCities); } diff --git a/app/component/uploadFile/cropImg.js b/app/component/uploadFile/cropImg.js index 7686276..31655de 100644 --- a/app/component/uploadFile/cropImg.js +++ b/app/component/uploadFile/cropImg.js @@ -21,7 +21,7 @@ async function getCroppedImg(imageSrc, pixelCrop) { ctx.drawImage( image, safeArea / 2 - image.width * 0.5, - safeArea / 2 - image.height * 0.5 + safeArea / 2 - image.height * 0.5, ); const data = ctx.getImageData(0, 0, safeArea, safeArea); @@ -31,7 +31,7 @@ async function getCroppedImg(imageSrc, pixelCrop) { ctx.putImageData( data, Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x), - Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y) + Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y), ); return canvas.toDataURL("image/jpeg"); diff --git a/app/dashboard/page.js b/app/dashboard/page.js index a001ee6..fe89cd2 100644 --- a/app/dashboard/page.js +++ b/app/dashboard/page.js @@ -4,9 +4,7 @@ import { getStateInfo } from "@/lib/getStateInfo"; function UserAccount() { const { matchedCity } = getStateInfo(); - return ( - - ); + return ; } export default UserAccount; diff --git a/app/globals.css b/app/globals.css index 1caaab4..57b70da 100644 --- a/app/globals.css +++ b/app/globals.css @@ -213,11 +213,13 @@ html { } .cover-head-blogs { - background: linear-gradient(180deg, - rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0.07) 31.47%, - rgba(0, 0, 0, 0.31) 59.72%, - rgba(0, 0, 0, 0.7) 89.39%); + background: linear-gradient( + 180deg, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.07) 31.47%, + rgba(0, 0, 0, 0.31) 59.72%, + rgba(0, 0, 0, 0.7) 89.39% + ); border-radius: 16px; position: relative; overflow: hidden; @@ -585,7 +587,6 @@ html { } @media (max-width: 1024px) { - .day-label-bar-inner-rtl, .panel-jalaali, .panel-header-rtl, @@ -619,13 +620,15 @@ html { border-color: #343645 !important; } -.dark .MuiList-root.MuiList-padding.MuiMultiSectionDigitalClockSection-root::-webkit-scrollbar-track { +.dark + .MuiList-root.MuiList-padding.MuiMultiSectionDigitalClockSection-root::-webkit-scrollbar-track { background: #1f1d2b; height: 50px; border-radius: 10px; } -.dark .MuiList-root.MuiList-padding.MuiMultiSectionDigitalClockSection-root::-webkit-scrollbar-thumb { +.dark + .MuiList-root.MuiList-padding.MuiMultiSectionDigitalClockSection-root::-webkit-scrollbar-thumb { background: #222433; height: 50px; border-radius: 20px; @@ -845,5 +848,5 @@ html { /* End Of Toastify */ .text-item-head-white:hover .item-head { - color: #D7D8ED; -} \ No newline at end of file + color: #d7d8ed; +} diff --git a/app/login-verify/page.js b/app/login-verify/page.js index e1a25e1..f8c24cf 100644 --- a/app/login-verify/page.js +++ b/app/login-verify/page.js @@ -1,9 +1,7 @@ import ContentVerify from "@/components/register/ContentVerify"; function LoginVerify() { - return ( - - ); + return ; } export default LoginVerify; diff --git a/app/login/page.js b/app/login/page.js index de07643..fc3470c 100644 --- a/app/login/page.js +++ b/app/login/page.js @@ -1,9 +1,7 @@ import ContentLogin from "@/components/register/ContentLogin"; function LogIn() { - return ( - - ); + return ; } export default LogIn; diff --git a/app/page.js b/app/page.js index ed4c21c..3e22ae8 100644 --- a/app/page.js +++ b/app/page.js @@ -3,7 +3,7 @@ import Layout from "@/components/layout/StLayout"; export default function Home() { return ( - + ); diff --git a/app/panel/(layout)/layout.js b/app/panel/(layout)/layout.js index 28ccc5a..09f05e5 100644 --- a/app/panel/(layout)/layout.js +++ b/app/panel/(layout)/layout.js @@ -1,9 +1,7 @@ import Content from "@/components/panel/Content"; function LayoutPanel({ children }) { - return ( - - ); + return ; } export default LayoutPanel; diff --git a/app/panel/(layout)/user-account/page.js b/app/panel/(layout)/user-account/page.js index b4582b0..56c3b25 100644 --- a/app/panel/(layout)/user-account/page.js +++ b/app/panel/(layout)/user-account/page.js @@ -3,7 +3,7 @@ import Information from "@/data/information.json"; import Bank from "@/data/bank.json"; function UserAccount() { - return ; + return ; } export default UserAccount; diff --git a/components/blog/detail/SocialMedia.js b/components/blog/detail/SocialMedia.js index f45c231..7271ec3 100644 --- a/components/blog/detail/SocialMedia.js +++ b/components/blog/detail/SocialMedia.js @@ -10,9 +10,7 @@ function SocialMedia({ loading }) {
        {socials.map((item, idx) => ( -
      • +
      • {item}
      • diff --git a/components/booking/Content.js b/components/booking/Content.js index eb61109..a1da09f 100644 --- a/components/booking/Content.js +++ b/components/booking/Content.js @@ -1,32 +1,25 @@ import Information from "./information"; import Location from "./location"; -function Content({ - doctor, - step, - setStep, - children, - isFirst, - disableSide, -}) { - return ( -
        - {isFirst ? ( - - ) : ( - - )} - {children} -
        - ); + > + {isFirst ? ( + + ) : ( + + )} + {children} +
      + ); } export default Content; diff --git a/components/booking/information/index.js b/components/booking/information/index.js index 5d01fe0..5eb5a2e 100644 --- a/components/booking/information/index.js +++ b/components/booking/information/index.js @@ -19,7 +19,9 @@ function Information({ doctor, step, setStep, typePay, isPay, disableSide }) { } `} > -

      جزئیات نوبت

      +

      + جزئیات نوبت +

      diff --git a/components/clinic/components/about/images/Slider.js b/components/clinic/components/about/images/Slider.js index 3ee9911..d41153f 100644 --- a/components/clinic/components/about/images/Slider.js +++ b/components/clinic/components/about/images/Slider.js @@ -16,7 +16,7 @@ function Slider({ data, loading }) { className="min-w-[90px] min-h-[90px] object-cover rounded-[8px] overflow-hidden" /> - ) : undefined + ) : undefined, )}
    ); diff --git a/components/clinics/head/SearchBar.js b/components/clinics/head/SearchBar.js index 609dac9..7063f2d 100644 --- a/components/clinics/head/SearchBar.js +++ b/components/clinics/head/SearchBar.js @@ -1,4 +1,3 @@ - import { Button, ButtonGroup, TextField } from "@mui/material"; import SearchD from "@/components/icons/SearchD"; import ModalSearchCity from "@/app/component/modalSearchCity"; @@ -28,7 +27,7 @@ function SearchBar({ selected, setSelected, state, handleSearch }) { handleSearch(e.target.value)} + onChange={(e) => handleSearch(e.target.value)} InputProps={{ disableUnderline: true, }} diff --git a/components/clinics/index.js b/components/clinics/index.js index c699a07..498c7a9 100644 --- a/components/clinics/index.js +++ b/components/clinics/index.js @@ -10,7 +10,7 @@ import HeadPageList from "@/app/component/head"; function ClinicsPage({ matchedCity, matchedState }) { const [loading, setLoading] = useState(true); - const [filteredClinics, setFilteredClinics] = useState(clinics) + const [filteredClinics, setFilteredClinics] = useState(clinics); const [selected, setSelected] = useState({ province: matchedState?.name || "", @@ -23,10 +23,9 @@ function ClinicsPage({ matchedCity, matchedState }) { }, 2000); }, []); - const handleSearch = (value) => { - const searchOnName = searchOnList(clinics, value, 'title') - const searchOnLocation = searchOnList(searchOnName, selected.city, 'city') + const searchOnName = searchOnList(clinics, value, "title"); + const searchOnLocation = searchOnList(searchOnName, selected.city, "city"); setFilteredClinics(searchOnLocation); }; diff --git a/components/clinics/list/ItemClinic.js b/components/clinics/list/ItemClinic.js index d34618e..410875d 100644 --- a/components/clinics/list/ItemClinic.js +++ b/components/clinics/list/ItemClinic.js @@ -16,7 +16,9 @@ function ItemClinic({ data, loading }) {
    -

    {data.title}

    +

    + {data.title} +

    diff --git a/components/contactUs/ContentContact.js b/components/contactUs/ContentContact.js index bf67661..fc1c8ce 100644 --- a/components/contactUs/ContentContact.js +++ b/components/contactUs/ContentContact.js @@ -10,7 +10,8 @@ function ContentContact({ text, children, url, label }) { {children}

    - {label}{text} + {label} + {text}

    ); diff --git a/components/contactUs/call/Call.js b/components/contactUs/call/Call.js index 8ca0819..fa5c287 100644 --- a/components/contactUs/call/Call.js +++ b/components/contactUs/call/Call.js @@ -6,10 +6,12 @@ function Call({ matchedCity, isDefault }) { className={`lg:min-w-[calc(50%_+_70px)] bg-banner-about !bg-center !bg-no-repeat !bg-cover h-fit pt-[16px] sm:pt-[29px] md:pt-[42px] lg:pt-[55px] bg-contact rounded-[8px] pb-[30px] sm:pb-[42px] md:pb-[55px] overflow-hidden lg:pb-[171px] px-[16px] sm:px-[27px] md:px-[39px] lg:px-[48px] - ${isDefault ? 'lg:pl-[18%]' : 'w-full'}`} + ${isDefault ? "lg:pl-[18%]" : "w-full"}`} >

    تماس با ما

    -

    {matchedCity.footerDescription}

    +

    + {matchedCity.footerDescription} +

    ); diff --git a/components/contactUs/call/Links.js b/components/contactUs/call/Links.js index 04a5824..b4bf9f6 100644 --- a/components/contactUs/call/Links.js +++ b/components/contactUs/call/Links.js @@ -6,27 +6,31 @@ import WhatsappC from "../../icons/WhatsappC"; import ContentContact from "../ContentContact"; function Links({ matchedCity }) { - return ( -
      - - - - - - - - - -
    - ) + return ( +
      + + + + + + + + + +
    + ); } -export default Links \ No newline at end of file +export default Links; diff --git a/components/contactUs/index.js b/components/contactUs/index.js index 73456b6..f24d6ad 100644 --- a/components/contactUs/index.js +++ b/components/contactUs/index.js @@ -9,9 +9,7 @@ function ContactUsPage() { return (
    - {matchedCity?.id === "63" && ( - - )} + {matchedCity?.id === "63" && }
    ); } diff --git a/components/dashboard/Content.js b/components/dashboard/Content.js index 65c1377..d9ee861 100644 --- a/components/dashboard/Content.js +++ b/components/dashboard/Content.js @@ -7,32 +7,32 @@ import DashboardPage from "@/components/dashboard"; import UserAccountPage from "@/components/dashboard/userAccount/UserAccount"; function Content({ matchedCity }) { - const [value, setValue] = useState(0); - const [isOpenSide, setIsOpenSide] = useState(false); - const [isTurnsDetails, setIsTurnsDetails] = useState(false); + const [value, setValue] = useState(0); + const [isOpenSide, setIsOpenSide] = useState(false); + const [isTurnsDetails, setIsTurnsDetails] = useState(false); - return ( - - - - ); + return ( + + + + ); } export default Content; diff --git a/components/dashboard/index.js b/components/dashboard/index.js index 34603b3..b7a1aea 100644 --- a/components/dashboard/index.js +++ b/components/dashboard/index.js @@ -9,7 +9,7 @@ function DashboardPage({ setValue, isOpenSide, setIsOpenSide, - matchedCity + matchedCity, }) { return (
    diff --git a/components/dashboard/userAccount/tabs/transactions/List.js b/components/dashboard/userAccount/tabs/transactions/List.js index dc3596f..cb2dc2c 100644 --- a/components/dashboard/userAccount/tabs/transactions/List.js +++ b/components/dashboard/userAccount/tabs/transactions/List.js @@ -92,8 +92,8 @@ function List({ user, loading }) { row.status === "success" ? "bg-[#E8FADD] text-[#75E22E]" : row.status === "pending" - ? "bg-[#FFF3DD] text-[#FDBA35]" - : "bg-[#FFE3E2] text-[#FF5450]" + ? "bg-[#FFF3DD] text-[#FDBA35]" + : "bg-[#FFE3E2] text-[#FF5450]" } `} variant="text" @@ -101,8 +101,8 @@ function List({ user, loading }) { {row.status === "success" ? "پرداخت شده" : row.status === "pending" - ? "در انتظار" - : "پرداخت نشده"} + ? "در انتظار" + : "پرداخت نشده"}
    diff --git a/components/doctor/detailDoctor/cards/AboutDcotor.js b/components/doctor/detailDoctor/cards/AboutDcotor.js index 2973a9d..942177f 100644 --- a/components/doctor/detailDoctor/cards/AboutDcotor.js +++ b/components/doctor/detailDoctor/cards/AboutDcotor.js @@ -21,10 +21,11 @@ function AboutDcotor({ doctor, loading }) { text-[#616161] text-[14px] font-normal overflow-hidden relative md:max-h-fit after:absolute after:right-0 after:bottom-0 leading-[28px] sm:leading-[30px] md:leading-[32px] lg:leading-[33px] after:h-[80px] after:shadow-xl after:w-full transition-all duration-500 md:after:!bg-[linear-gradient(transparent,transparent)] - ${isMore - ? "after:bg-transparent max-h-screen" - : "after:bg-[linear-gradient(transparent,#FAFAFA)] max-h-[200px]" - } + ${ + isMore + ? "after:bg-transparent max-h-screen" + : "after:bg-[linear-gradient(transparent,#FAFAFA)] max-h-[200px]" + } `} > {doctor.detail} diff --git a/components/doctor/detailDoctor/cards/comments/chart/ProgressAll.js b/components/doctor/detailDoctor/cards/comments/chart/ProgressAll.js index 1a5e560..75c8c4f 100644 --- a/components/doctor/detailDoctor/cards/comments/chart/ProgressAll.js +++ b/components/doctor/detailDoctor/cards/comments/chart/ProgressAll.js @@ -27,7 +27,9 @@ function ProgressAll({ doctor, loading }) {
    رضایت کاربران

    -

    {numberToArStyle(doctor.total_user_satisfaction)}%

    +

    + {numberToArStyle(doctor.total_user_satisfaction)}% +

    diff --git a/components/doctor/detailDoctor/cards/comments/chart/index.js b/components/doctor/detailDoctor/cards/comments/chart/index.js index b31a7c3..601bd7a 100644 --- a/components/doctor/detailDoctor/cards/comments/chart/index.js +++ b/components/doctor/detailDoctor/cards/comments/chart/index.js @@ -54,8 +54,9 @@ function Chart({ doctor, loading }) {
      {doctor.progress_detail.map((item, idx) => ( diff --git a/components/doctors/index.js b/components/doctors/index.js index b9b278e..92bb153 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -18,14 +18,17 @@ function DoctorsPage({ params, matchedCity, matchedState }) { province: matchedState?.name || params?.province, city: matchedCity?.name || params?.city, }); - const findItem = (name, value) => specialties.find(item => item[name] === value) - const itemCategory = findItem('id', params.category); - const itemSpecialties = findItem('id', params.specialties); + const findItem = (name, value) => + specialties.find((item) => item[name] === value); + const itemCategory = findItem("id", params.category); + const itemSpecialties = findItem("id", params.specialties); const [data, setData] = useState({ category: itemCategory || "", - specialties: itemSpecialties ? { ...itemSpecialties, label: itemSpecialties.name } : "", - turn: params && params.hasOwnProperty('turn') ? JSON.parse(params.turn) : 1, + specialties: itemSpecialties + ? { ...itemSpecialties, label: itemSpecialties.name } + : "", + turn: params && params.hasOwnProperty("turn") ? JSON.parse(params.turn) : 1, gender: params.gender || "هر دو", degree: params.degree || "متخصص", }); diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index 3884c84..ecbdfcf 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -6,7 +6,6 @@ import { filterList } from "@/helper"; const group1 = ["خانم", "آقا", "هر دو"]; const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; - function Content({ data, setData }) { const router = useRouter(); const { parentList, childrenList } = filterList(data); @@ -15,21 +14,21 @@ function Content({ data, setData }) { const current = new URLSearchParams(window.location.search); current.set(name, value.id || value); if (removeSpecialties) { - current.delete('specialties') - }; + current.delete("specialties"); + } const queryString = current.toString(); - router.push(`/doctors?${queryString}`) - } + router.push(`/doctors?${queryString}`); + }; const changeData = (value, name, removeSpecialties) => { changeUrl(value, name, removeSpecialties); const newData = data; newData[name] = value; if (removeSpecialties) { - newData.specialties = '' - }; + newData.specialties = ""; + } setData(newData); - } + }; return (
      @@ -59,7 +58,7 @@ function Content({ data, setData }) { value={data.gender} text="جنسیت پزشک" group={group1} - name='gender' + name="gender" />
      @@ -76,7 +75,7 @@ function Content({ data, setData }) { { - changeData(event.target.checked ? 1 : 0, "turn") + changeData(event.target.checked ? 1 : 0, "turn"); }} /> } @@ -86,7 +85,7 @@ function Content({ data, setData }) { fontSize: "16px", fontWeight: 500, }, - marginLeft: '0 !important', + marginLeft: "0 !important", }} label="فقط پزشکان دارای نوبت" labelPlacement="start" diff --git a/components/doctors/modal/FilterModal.js b/components/doctors/modal/FilterModal.js index 5341eb4..60717ee 100644 --- a/components/doctors/modal/FilterModal.js +++ b/components/doctors/modal/FilterModal.js @@ -16,7 +16,13 @@ function FilterModal({ data, setData, children }) { const handleClose = () => setOpen(false); const deleteData = () => { - clearFilterParams(router, ['turn', 'specialties', 'degree', 'category', 'gender']) + clearFilterParams(router, [ + "turn", + "specialties", + "degree", + "category", + "gender", + ]); setData({ category: "", specialties: "", @@ -25,7 +31,7 @@ function FilterModal({ data, setData, children }) { degree: "متخصص", }); handleClose(); - } + }; return ( <> diff --git a/components/doctors/search/index.js b/components/doctors/search/index.js index 9302732..d42d9df 100644 --- a/components/doctors/search/index.js +++ b/components/doctors/search/index.js @@ -31,7 +31,7 @@ function SearchBar({ data, setData, params }) { {value ? (
        - {Array(sort).fill({}).map((_, idx) => ( -
      • - -
      • - ))} + {Array(sort) + .fill({}) + .map((_, idx) => ( +
      • + +
      • + ))}
      - ) : "مرتب سازی"} + ) : ( + "مرتب سازی" + )}
      ); }} @@ -60,10 +64,15 @@ function SelectSort() { name={item.label} className="!flex !flex-col !items-start !w-full hover:!bg-transparent" > -
      - {Array(item.label).fill({}).map((_, idx) => ( - - ))} +
      + {Array(item.label) + .fill({}) + .map((_, idx) => ( + + ))}
      ))} diff --git a/components/home/FrequentSearches.js b/components/home/FrequentSearches.js index ef5087e..5dc975c 100644 --- a/components/home/FrequentSearches.js +++ b/components/home/FrequentSearches.js @@ -5,10 +5,9 @@ import specialties from "@/data/specialties.json"; import Link from "next/link"; function FrequentSearches() { - const childrenList = specialties.filter(item => item.parent); + const childrenList = specialties.filter((item) => item.parent); console.log(childrenList); - return (

      @@ -17,13 +16,15 @@ function FrequentSearches() {

        {childrenList.map((item, idx) => ( - +
      + ); } -export default TextHeader \ No newline at end of file +export default TextHeader; diff --git a/components/home/search/Fields.js b/components/home/search/Fields.js index 0ff24ac..ac7fdee 100644 --- a/components/home/search/Fields.js +++ b/components/home/search/Fields.js @@ -1,4 +1,4 @@ -"use client" +"use client"; import { useState } from "react"; @@ -10,86 +10,86 @@ import Link from "next/link"; import SearchD from "@/components/icons/SearchD"; function Fields({ city, state }) { - const [open, setOpen] = useState(false); - const [data, setData] = useState({ - province: state?.name || '', - city: city?.name || '', - }); + const [open, setOpen] = useState(false); + const [data, setData] = useState({ + province: state?.name || "", + city: city?.name || "", + }); - return ( - <> - - - - - setData({ ...data, search: e.target.value })} - InputProps={{ - disableUnderline: true, - }} - sx={{ - display: "flex", - flexDirection: "column", - justifyContent: "center", - "& .MuiInput-root": { - padding: "0", - borderBottom: "none", - }, - "& .MuiInputBase-input": { - color: "#6C757D", - }, - "& .MuiInputBase-input": { - color: "#6C757D", - fontSize: { - xs: "10px !important", - sm: "12px !important", - md: "14px !important", - lg: "16px !important", - }, - } - }} - placeholder="جستجوی نام پزشک، تخصص، بیماری ..." - dir="rtl" - className={`!shadow-none !w-full lg:!w-[524px] bg-[#FAFAFA] !text-[14px] md:!text-[16px] !rounded-0 !font-normal !text-[#6C757D]`} - /> - - - + - - - ) + > +
      + +
      + + + + ); } -export default Fields \ No newline at end of file +export default Fields; diff --git a/components/home/search/index.js b/components/home/search/index.js index 0bc36d6..72cbc90 100644 --- a/components/home/search/index.js +++ b/components/home/search/index.js @@ -3,7 +3,7 @@ import Fields from "./Fields"; import { getStateInfo } from "@/lib/getStateInfo"; function SearchBar() { - const { matchedCity, matchedState } = getStateInfo() + const { matchedCity, matchedState } = getStateInfo(); return ( { // Format states data to match the structure expected by AutoCompleteSelect - const formattedStates = statesData.map(state => ({ + const formattedStates = statesData.map((state) => ({ label: state.name, - id: state.id + id: state.id, })); // Format cities data - const formattedCities = citiesData.map(city => ({ + const formattedCities = citiesData.map((city) => ({ label: city.name, id: city.id, - province_id: city.province_id + province_id: city.province_id, })); setStates(formattedStates); @@ -51,10 +51,14 @@ function ModalSearchCity() { // Filter cities when state is selected useEffect(() => { if (selected.first) { - const selectedState = states.find(state => state.label === selected.first); + const selectedState = states.find( + (state) => state.label === selected.first, + ); if (selectedState) { const stateId = selectedState.id; - const filteredCities = cities.filter(city => city.province_id === stateId); + const filteredCities = cities.filter( + (city) => city.province_id === stateId, + ); setFilteredCities(filteredCities); } } else { diff --git a/components/icons/UserEdit.js b/components/icons/UserEdit.js index 841fc7d..7bb4638 100644 --- a/components/icons/UserEdit.js +++ b/components/icons/UserEdit.js @@ -14,9 +14,7 @@ function UserEdit({ active }) { strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" - className={ - active ? "stroke-[#FAFAFA] delay-500" : "" - } + className={active ? "stroke-[#FAFAFA] delay-500" : ""} /> -
      -
      -
      -
      -
      -
      -
      - {children} -
      -
      -
      -
      -
      -
      -
      -
      -
      + return ( +
      +
      +
      +
      +
      +
      +
      +
      + {children} +
      +
      +
      +
      +
      +
      +
      - ); +
      +
      + ); } export default StLayout; diff --git a/components/layout/footer/index.js b/components/layout/footer/index.js index debe31e..612415e 100644 --- a/components/layout/footer/index.js +++ b/components/layout/footer/index.js @@ -24,16 +24,20 @@ const head = [ ]; function Footer({ matchedCity }) { - const socialMedias = [{ - icon: , - name: 'instagram' - }, { - icon: , - name: 'telegram' - }, { - icon: , - name: 'whatsapp' - }]; + const socialMedias = [ + { + icon: , + name: "instagram", + }, + { + icon: , + name: "telegram", + }, + { + icon: , + name: "whatsapp", + }, + ]; const [openMenu, setOpenMenu] = useState({ right: false, left: false, @@ -106,7 +110,10 @@ function Footer({ matchedCity }) { key={idx} className="p-2.5 bg-[#EAECFA] hover-rotate-icon cursor-pointer rounded-full w-fit" > - + {item.icon} diff --git a/components/layout/header/Content.js b/components/layout/header/Content.js index 6a968c3..c951ac2 100644 --- a/components/layout/header/Content.js +++ b/components/layout/header/Content.js @@ -11,48 +11,44 @@ import UserLogin from "@/components/icons/UserLogin"; import { useState } from "react"; function Content({ matchedCity, name }) { - const [isActive, setIsActive] = useState(false); + const [isActive, setIsActive] = useState(false); - return ( -
      -
      - - -
      - -
      - - -
      -
      -
      - - - - - + > +
      + + +
      + +
      + + +
      - ) +
      + + + + + +
      + ); } -export default Content \ No newline at end of file +export default Content; diff --git a/components/layout/header/index.js b/components/layout/header/index.js index 3ac434c..64b7907 100644 --- a/components/layout/header/index.js +++ b/components/layout/header/index.js @@ -1,13 +1,9 @@ import Content from "./Content"; function Header({ matchedCity, name }) { - return (
      - +
      ); } diff --git a/components/layout/header/list/Row.js b/components/layout/header/list/Row.js index 206d92a..771b0db 100644 --- a/components/layout/header/list/Row.js +++ b/components/layout/header/list/Row.js @@ -9,10 +9,7 @@ function Row({ name }) { diff --git a/components/layout/header/list/col/index.js b/components/layout/header/list/col/index.js index 430e42c..3ae2736 100644 --- a/components/layout/header/list/col/index.js +++ b/components/layout/header/list/col/index.js @@ -23,7 +23,7 @@ function Col({ isActive, name }) { ${ isActiveURL( nav.link.replace("/", ""), - name + name, ) ? "!text-[#526CAC] !bg-[rgba(199,_206,_244,_0.30)]" : "!text-[#525252]" diff --git a/components/layout/index.js b/components/layout/index.js index 6e9fb29..dedbcb9 100644 --- a/components/layout/index.js +++ b/components/layout/index.js @@ -14,7 +14,7 @@ function Layout({ user, value, setValue, - matchedCity + matchedCity, }) { return (
      @@ -30,9 +30,10 @@ function Layout({
      {isSidebar && ( diff --git a/components/layout/sidebar/List.js b/components/layout/sidebar/List.js index fa06934..56738b4 100644 --- a/components/layout/sidebar/List.js +++ b/components/layout/sidebar/List.js @@ -1,4 +1,4 @@ -"use client" +"use client"; import CardD from "@/components/icons/CardD"; import LogoutD from "@/components/icons/LogoutD"; diff --git a/components/layout/sidebar/ModalLogout.js b/components/layout/sidebar/ModalLogout.js index f4212ed..72831be 100644 --- a/components/layout/sidebar/ModalLogout.js +++ b/components/layout/sidebar/ModalLogout.js @@ -6,7 +6,7 @@ import { removeToken } from "@/utils"; function ModalLogout({ open, handleClose }) { const logout = () => { removeToken(); - window.location.pathname = '/login' + window.location.pathname = "/login"; handleClose(); }; diff --git a/components/panel/Content.js b/components/panel/Content.js index 857f697..5b785b9 100644 --- a/components/panel/Content.js +++ b/components/panel/Content.js @@ -9,53 +9,54 @@ import { usePathname } from "next/navigation"; import BgGray from "@/components/layoutPanel/sidebar/BgGray"; function Content({ children }) { - const pathname = usePathname(); - const [active, setActive] = useState(false); - const [open, setOpen] = useState(true); - const [loading, setLoading] = useState(true); + const pathname = usePathname(); + const [active, setActive] = useState(false); + const [open, setOpen] = useState(true); + const [loading, setLoading] = useState(true); - useEffect(() => { - setTimeout(() => { - setLoading(false); - }, 2000); - }, []); + useEffect(() => { + setTimeout(() => { + setLoading(false); + }, 2000); + }, []); - return ( -
      - - -
      + + +
      -
      -
      - {children} -
      -
      - {pathname.includes("dashboard") && ( - - )} -
      - ); + > +
      +
      + {children} +
      + + {pathname.includes("dashboard") && ( + + )} +
      + ); } export default Content; diff --git a/components/panel/dashboard/list/Table.js b/components/panel/dashboard/list/Table.js index 2446c38..34e5582 100644 --- a/components/panel/dashboard/list/Table.js +++ b/components/panel/dashboard/list/Table.js @@ -16,7 +16,10 @@ function Table({ data, loading }) { centerTable={centerTable} > {data.list_of_doctors_appointments.map((row, idx) => ( - + - ); + return ; } export default ContentLogin; diff --git a/components/register/ContentVerify.js b/components/register/ContentVerify.js index d89fb87..98ff167 100644 --- a/components/register/ContentVerify.js +++ b/components/register/ContentVerify.js @@ -6,20 +6,20 @@ import LogInPage from "@/components/register/LogInPage"; import { useState } from "react"; function ContentVerify() { - const [isSendMsg, setIsSendMsg] = useState(false); + const [isSendMsg, setIsSendMsg] = useState(false); - return ( - - {isSendMsg ? ( - - ) : ( - - )} - - ); + return ( + + {isSendMsg ? ( + + ) : ( + + )} + + ); } export default ContentVerify; diff --git a/components/register/LayoutRegister.js b/components/register/LayoutRegister.js index 96bd584..903dbdc 100644 --- a/components/register/LayoutRegister.js +++ b/components/register/LayoutRegister.js @@ -4,41 +4,43 @@ import Link from "next/link"; const about = ["سوالات متداول", "تماس با ما", "درباره ما"]; function LayoutRegister({ children, matchedCity }) { - return ( -
      - -
      - logo -

      {matchedCity?.site_name || "نوبت ۷۲۴"}

      -
      - - {children} -
      -
      -
      - {about.map((item, idx) => ( - -

      - {item} -

      - - ))} -
      -
      + > + +
      + logo +

      + {matchedCity?.site_name || "نوبت ۷۲۴"} +

      - ) + + {children} +
      +
      +
      + {about.map((item, idx) => ( + +

      + {item} +

      + + ))} +
      +
      +
      + ); } -export default LayoutRegister \ No newline at end of file +export default LayoutRegister; diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 7d4c212..caee821 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -6,7 +6,7 @@ import { useState } from "react"; function LogInPage({ setIsSendMsg, setStep, matchedCity }) { const [num, setNum] = useState(""); - const [error, setError] = useState({ valid: true, text: '' }); + const [error, setError] = useState({ valid: true, text: "" }); const handleChange = (val) => { const formatted = formatPhoneNumber(val); @@ -34,28 +34,35 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { error={!error.valid} spaceNull={true} inputProps={{ - startAdornment: + startAdornment: ( 09, + > + 09 + + ), }} title="شماره همراه" updateState={handleChange} /> -

      {error.text}

      + ${error.valid ? "opacity-0 -translate-y-1" : "opacity-100 translate-y-0"} + `} + > + {error.text} +

      ); diff --git a/components/register/index.js b/components/register/index.js index bf10451..163f395 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -13,7 +13,11 @@ function RegisterPage({ matchedCity }) { {isSendMsg ? ( ) : ( - + )} ); diff --git a/components/searchHead/SmSearch.js b/components/searchHead/SmSearch.js index 8c274c2..0679bf1 100644 --- a/components/searchHead/SmSearch.js +++ b/components/searchHead/SmSearch.js @@ -11,7 +11,7 @@ function SmSearch({ placeholder, handleSearch }) { > handleSearch(e.target.value)} + onChange={(e) => handleSearch(e.target.value)} InputProps={{ disableUnderline: true, }} diff --git a/components/specialties/index.js b/components/specialties/index.js index f2bc66e..a5dfd04 100644 --- a/components/specialties/index.js +++ b/components/specialties/index.js @@ -8,10 +8,11 @@ import specialtiesData from "@/data/specialties.json"; import { searchOnList } from "@/helper"; function SpecialtiesPage() { - const [filteredSpecialties, setFilteredSpecialties] = useState(specialtiesData); + const [filteredSpecialties, setFilteredSpecialties] = + useState(specialtiesData); const handleSearch = (value) => - setFilteredSpecialties(searchOnList(specialtiesData, value, 'name')); + setFilteredSpecialties(searchOnList(specialtiesData, value, "name")); return (
      @@ -19,10 +20,7 @@ function SpecialtiesPage() { title="تخصص مورد نظر شما چیست؟" detail="تخصص مورد نظرتان را جستجو کرده و یا از لیست زیر انتخاب نمایید:" > - +
      diff --git a/components/specialties/list/ItemSpecialties.js b/components/specialties/list/ItemSpecialties.js index a1f377d..c7b60ef 100644 --- a/components/specialties/list/ItemSpecialties.js +++ b/components/specialties/list/ItemSpecialties.js @@ -14,7 +14,9 @@ function ItemSpecialties({ data }) { rounded-lg bg-[#FFF] shadow-[0px_1px_24.8px_0px_rgba(204,_204,_204,_0.18)] hover:bg-[#5559CE] transition-all text-item-head-white duration-500 cursor-pointer hover-mode-item-speciality" > -

      {data.name}

      +

      + {data.name} +

      {data.number_of_doctors} پزشک

      diff --git a/context/ProvinceProvider.js b/context/ProvinceProvider.js index 7b5636e..3153ce8 100644 --- a/context/ProvinceProvider.js +++ b/context/ProvinceProvider.js @@ -8,7 +8,7 @@ const ProvinceContext = createContext(); export const ProvinceProvider = ({ children }) => { const [hostName, setHostName] = useState(""); const isProvinceInclude = citiesData.find((city) => - hostName.includes(city.domain.split(".")[0]) + hostName.includes(city.domain.split(".")[0]), ); useEffect(() => { diff --git a/data/city.json b/data/city.json index e176a7e..419baa1 100644 --- a/data/city.json +++ b/data/city.json @@ -671,4 +671,4 @@ "footerDescription": "نوبت 724، سامانه جامع نوبت‌دهی پزشکی برای تمامی شهرها. رزرو نوبت از پزشکان و مراکز درمانی معتبر بدون نیاز به مراجعه حضوری.", "footerDisclaimer": "تمامی حقوق این سایت متعلق به نوبت 724 می‌باشد." } -] \ No newline at end of file +] diff --git a/data/clinics.json b/data/clinics.json index 63b21f8..bd34842 100644 --- a/data/clinics.json +++ b/data/clinics.json @@ -65,4 +65,4 @@ "location": "اهواز، کیان آباد، خیابان ۱۶ غربی، پلاک ۱۰", "hours_of_work": "شنبه تا سه شنبه ساعت ۱۶ تا ۲۲" } -] \ No newline at end of file +] diff --git a/data/specialties.json b/data/specialties.json index 86bebd7..6720455 100644 --- a/data/specialties.json +++ b/data/specialties.json @@ -344,4 +344,4 @@ "name": "سکته مغزی", "parent": null } -] \ No newline at end of file +] diff --git a/data/state.json b/data/state.json index 1c4db31..3200021 100644 --- a/data/state.json +++ b/data/state.json @@ -1,126 +1,126 @@ [ { - "id": "1", - "name": "آذربایجان شرقی" + "id": "1", + "name": "آذربایجان شرقی" }, { - "id": "2", - "name": "آذربایجان غربی" + "id": "2", + "name": "آذربایجان غربی" }, { - "id": "3", - "name": "اردبیل" + "id": "3", + "name": "اردبیل" }, { - "id": "4", - "name": "اصفهان" + "id": "4", + "name": "اصفهان" }, { - "id": "5", - "name": "البرز" + "id": "5", + "name": "البرز" }, { - "id": "6", - "name": "ایلام" + "id": "6", + "name": "ایلام" }, { - "id": "7", - "name": "بوشهر" + "id": "7", + "name": "بوشهر" }, { - "id": "8", - "name": "تهران" + "id": "8", + "name": "تهران" }, { - "id": "9", - "name": "چهارمحال و بختیاری" + "id": "9", + "name": "چهارمحال و بختیاری" }, { - "id": "10", - "name": "خراسان جنوبی" + "id": "10", + "name": "خراسان جنوبی" }, { - "id": "11", - "name": "خراسان رضوی" + "id": "11", + "name": "خراسان رضوی" }, { - "id": "12", - "name": "خراسان شمالی" + "id": "12", + "name": "خراسان شمالی" }, { - "id": "13", - "name": "خوزستان" + "id": "13", + "name": "خوزستان" }, { - "id": "14", - "name": "زنجان" + "id": "14", + "name": "زنجان" }, { - "id": "15", - "name": "سمنان" + "id": "15", + "name": "سمنان" }, { - "id": "16", - "name": "سیستان و بلوچستان" + "id": "16", + "name": "سیستان و بلوچستان" }, { - "id": "17", - "name": "فارس" + "id": "17", + "name": "فارس" }, { - "id": "18", - "name": "قزوین" + "id": "18", + "name": "قزوین" }, { - "id": "19", - "name": "قم" + "id": "19", + "name": "قم" }, { - "id": "20", - "name": "کردستان" + "id": "20", + "name": "کردستان" }, { - "id": "21", - "name": "کرمان" + "id": "21", + "name": "کرمان" }, { - "id": "22", - "name": "کرمانشاه" + "id": "22", + "name": "کرمانشاه" }, { - "id": "23", - "name": "کهگیلویه و بویراحمد" + "id": "23", + "name": "کهگیلویه و بویراحمد" }, { - "id": "24", - "name": "گلستان" + "id": "24", + "name": "گلستان" }, { - "id": "25", - "name": "گیلان" + "id": "25", + "name": "گیلان" }, { - "id": "26", - "name": "لرستان" + "id": "26", + "name": "لرستان" }, { - "id": "27", - "name": "مازندران" + "id": "27", + "name": "مازندران" }, { - "id": "28", - "name": "مرکزی" + "id": "28", + "name": "مرکزی" }, { - "id": "29", - "name": "هرمزگان" + "id": "29", + "name": "هرمزگان" }, { - "id": "30", - "name": "همدان" + "id": "30", + "name": "همدان" }, { - "id": "31", - "name": "یزد" + "id": "31", + "name": "یزد" } -] \ No newline at end of file +] diff --git a/data/turns.json b/data/turns.json index 6e33909..db21cb7 100644 --- a/data/turns.json +++ b/data/turns.json @@ -1,8 +1,8 @@ [ - { - "id": 1, - "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد ۱۲", - "hours_of_work": "شنبه تا سه شنبه ساعت 16 تا 22", - "first_free_turn": "یکشنبه 24 اردیبهشت" - } -] \ No newline at end of file + { + "id": 1, + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد ۱۲", + "hours_of_work": "شنبه تا سه شنبه ساعت 16 تا 22", + "first_free_turn": "یکشنبه 24 اردیبهشت" + } +] diff --git a/helper/index.js b/helper/index.js index 0fea6fe..8048526 100644 --- a/helper/index.js +++ b/helper/index.js @@ -92,41 +92,40 @@ export const alert = (type, text, prop) => {

      {text}

      , - { prop } + { prop }, ); }; export const addLabelToList = (list) => - list.map(item => { + list.map((item) => { return { ...item, - label: item.name - } - }) + label: item.name, + }; + }); export const formatPhoneNumber = (input) => { - const digits = input.replace(/\D/g, ''); + 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(' '); + return [match[1], match[2], match[3]].filter(Boolean).join(" "); }; export function validatePhoneNumber(input) { - const digits = input.replace(/\D/g, ''); + const digits = input.replace(/\D/g, ""); if (!digits) { - return { valid: false, text: 'شماره موبایل نمی‌تواند خالی باشد.' }; + return { valid: false, text: "شماره موبایل نمی‌تواند خالی باشد." }; } - if (digits.length !== 9) { - return { valid: false, text: 'شماره موبایل باید دقیقا 11 رقم باشد.' }; + return { valid: false, text: "شماره موبایل باید دقیقا 11 رقم باشد." }; } const isValid = /^[1-9]\d{8}$/.test(digits); if (!isValid) { - return { valid: false, text: 'شماره موبایل نامعتبر است.' }; + return { valid: false, text: "شماره موبایل نامعتبر است." }; } return { valid: true, text: null }; @@ -134,47 +133,45 @@ export function validatePhoneNumber(input) { export const searchOnList = (list, value, name) => { let newList = list; - newList = list.filter(item => - item[name].toLowerCase().includes(value) - ) + newList = list.filter((item) => item[name].toLowerCase().includes(value)); return newList; -} +}; export const addKeyToList = (list, nameKey, nameValue) => { - const newList = list.map(item => { + const newList = list.map((item) => { return { ...item, - [nameKey]: item[nameValue] - } + [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'; + 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 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 changedParentList = addKeyToList(parentList, "label", "name") || []; + const changedChildrenList = addKeyToList(childrenList, "label", "name") || []; const filteredChildrenList = - data && data.category ? - changedChildrenList.filter(item => item.parent === data.category.id) : - []; + data && data.category + ? changedChildrenList.filter((item) => item.parent === data.category.id) + : []; return { parentList: changedParentList, - childrenList: filteredChildrenList - } -} \ No newline at end of file + childrenList: filteredChildrenList, + }; +}; diff --git a/lib/getStateInfo.js b/lib/getStateInfo.js index 6245119..5904410 100644 --- a/lib/getStateInfo.js +++ b/lib/getStateInfo.js @@ -5,12 +5,16 @@ import citiesData from "@/data/city.json"; import statesData from "@/data/state.json"; export function getStateInfo() { - const headersList = headers(); - const host = headersList.get("host") || ""; - const subdomain = host.split(".")[0]; + const headersList = headers(); + const host = headersList.get("host") || ""; + const subdomain = host.split(".")[0]; - const matchedCity = citiesData.find((city) => city.domain.includes(subdomain)); - const matchedState = matchedCity && statesData.find(state => state.id === matchedCity.province_id) + const matchedCity = citiesData.find((city) => + city.domain.includes(subdomain), + ); + const matchedState = + matchedCity && + statesData.find((state) => state.id === matchedCity.province_id); - return { matchedCity, matchedState }; + return { matchedCity, matchedState }; } diff --git a/package-lock.json b/package-lock.json index 471dbbb..6c26791 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "devDependencies": { "cross-env": "^7.0.3", "postcss": "^8", + "prettier": "^3.5.3", "tailwindcss": "^3.4.1" } }, @@ -19102,6 +19103,22 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", diff --git a/package.json b/package.json index 34f25c4..1ff5161 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "devDependencies": { "cross-env": "^7.0.3", "postcss": "^8", + "prettier": "^3.5.3", "tailwindcss": "^3.4.1" } } diff --git a/services/api.js b/services/api.js index 46d6b0f..2682e3e 100644 --- a/services/api.js +++ b/services/api.js @@ -28,7 +28,7 @@ api.interceptors.request.use( } return request; }, - (err) => Promise.reject(err) + (err) => Promise.reject(err), ); api.interceptors.response.use( @@ -41,7 +41,7 @@ api.interceptors.response.use( window.location.pathname = "/login"; } else { } - } + }, ); export default api; From c8c217e2862739451ec86e580eb4456ea09073cc Mon Sep 17 00:00:00 2001 From: Ehsan Date: Mon, 19 May 2025 02:41:31 +0330 Subject: [PATCH 052/124] fix type persian numbers && change design loading && fix warnings && handle icons size in device mobile --- components/clinics/head/SearchBar.js | 6 +++++- helper/index.js | 29 ++++++++++++++++++++++++++-- services/api.js | 4 ++-- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/components/clinics/head/SearchBar.js b/components/clinics/head/SearchBar.js index 7063f2d..20f14ba 100644 --- a/components/clinics/head/SearchBar.js +++ b/components/clinics/head/SearchBar.js @@ -44,9 +44,13 @@ function SearchBar({ selected, setSelected, state, handleSearch }) {
    , - { prop }, + { prop } ); }; @@ -105,10 +105,19 @@ export const addLabelToList = (list) => }); export const formatPhoneNumber = (input) => { - const digits = input.replace(/\D/g, ""); + if (typeof input !== 'string') input = String(input); + + const normalized = input + .replace(/[\u06F0-\u06F9]/g, d => String(d.charCodeAt(0) - 0x06F0)) + .replace(/[\u0660-\u0669]/g, d => String(d.charCodeAt(0) - 0x0660)); + + const digits = normalized.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(" "); }; @@ -175,3 +184,19 @@ export const filterList = (data) => { childrenList: filteredChildrenList, }; }; + +export function getCleanNumberValue(value, defaultValue = 0) { + if (typeof value !== 'string') value = String(value); + + // Convert Persian and Arabic digits to English digits + const persianArabicToEnglish = value + .replace(/[\u06F0-\u06F9]/g, d => String(d.charCodeAt(0) - 0x06F0)) + .replace(/[\u0660-\u0669]/g, d => String(d.charCodeAt(0) - 0x0660)); + + // Remove non-numeric characters except dots (for decimal support) + const cleaned = persianArabicToEnglish.replace(/[^0-9.]/g, ''); + + // Return number or default if invalid + const number = parseFloat(cleaned); + return isNaN(number) ? defaultValue : number; +} diff --git a/services/api.js b/services/api.js index 2682e3e..46d6b0f 100644 --- a/services/api.js +++ b/services/api.js @@ -28,7 +28,7 @@ api.interceptors.request.use( } return request; }, - (err) => Promise.reject(err), + (err) => Promise.reject(err) ); api.interceptors.response.use( @@ -41,7 +41,7 @@ api.interceptors.response.use( window.location.pathname = "/login"; } else { } - }, + } ); export default api; From 5235579df260606baa3f0b983608c5337975caa4 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Mon, 19 May 2025 10:10:41 +0330 Subject: [PATCH 053/124] set all category gender and dgree --- components/doctors/modal/Content.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index ecbdfcf..5b6946f 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -3,12 +3,23 @@ import RadioContent from "./RadioContent"; import { FormControlLabel, Switch } from "@mui/material"; import { useRouter } from "next/navigation"; import { filterList } from "@/helper"; -const group1 = ["خانم", "آقا", "هر دو"]; -const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; +const gender = [ + { id: "woman", label: "زن" }, + { id: "man", label: "مرد" }, + { id: "هر دو", label: "all" }, +] +const dgree = [ + { id: "general", label: "پزشک عمومی" }, + { id: "specialist", label: "پزشک متخصص" }, + { id: "subspecialistplus", label: "پزشک فوق تخصص" }, + { id: "all", label: "همه موارد" }, +]; function Content({ data, setData }) { const router = useRouter(); const { parentList, childrenList } = filterList(data); + console.log('parentList', parentList); + const changeUrl = (value, name, removeSpecialties) => { const current = new URLSearchParams(window.location.search); From 6c7709c342acf6b3a80bf48139f7a2765e1ca580 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Wed, 21 May 2025 16:44:34 +0330 Subject: [PATCH 054/124] change function and design page doctors & signin & signup & home & specialties & helper --- app/component/element/AutoCompleteSelect.js | 10 +++--- app/globals.css | 10 +++++- components/doctor/Poster.js | 15 +++++++++ components/doctor/detailDoctor/Share.js | 2 +- components/doctor/index.js | 2 ++ components/doctors/index.js | 15 +++++---- components/doctors/modal/Content.js | 27 +++++++---------- components/home/FrequentSearches.js | 4 --- components/register/LogInPage.js | 16 ++++++++-- helper/index.js | 32 ++++++-------------- public/assets/images/poster.png | Bin 0 -> 872640 bytes services/api.js | 30 +++--------------- services/response.js | 19 +++++++++++- 13 files changed, 96 insertions(+), 86 deletions(-) create mode 100644 components/doctor/Poster.js create mode 100644 public/assets/images/poster.png diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 20134ab..202e9fe 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -7,7 +7,6 @@ function AutoCompleteSelect({ value, isError, updateData, - name, label, disabled = false, listboxProps, @@ -20,14 +19,17 @@ function AutoCompleteSelect({ disabled={disabled} ListboxProps={listboxProps} value={value || null} + getOptionLabel={(option) => { + if (typeof option === "string") return option; + return option?.name || option?.label || ""; + }} className="!w-full !rounded-lg auto-complete-selector" onChange={(e, newValue) => { updateData && updateData( newValue && sendAll ? newValue - : (newValue && !sendAll && newValue.label) || "", - name, + : (newValue && !sendAll && newValue.label) || "" ); }} sx={{ @@ -73,7 +75,7 @@ function AutoCompleteSelect({ key={option.id || props.id} className="!flex !justify-start !p-[8px] !text-start !text-[#A1A1A1] hover:dark:!bg-[#35343D] !bg-[#FFF] dark:!bg-[#1F1D2B]" > - {option.label} + {option.name || option.label} )} renderInput={(params) => ( diff --git a/app/globals.css b/app/globals.css index 57b70da..d8d1928 100644 --- a/app/globals.css +++ b/app/globals.css @@ -295,7 +295,7 @@ html { } .MuiModal-root div:nth-child(3) { - border-radius: 0 !important; + /* border-radius: 0 !important; */ } } @@ -850,3 +850,11 @@ html { .text-item-head-white:hover .item-head { color: #d7d8ed; } + +.bg-poster { + background-image: url(/public/assets/images/poster.png); + width: 100%; + height: 100%; + background-repeat: no-repeat; + background-size: cover; +} diff --git a/components/doctor/Poster.js b/components/doctor/Poster.js new file mode 100644 index 0000000..0df8de7 --- /dev/null +++ b/components/doctor/Poster.js @@ -0,0 +1,15 @@ +import Image from "next/image"; +import Logo from "@/public/assets/images/logo.png"; + +function Poster() { + return ( +
    +
    + logo +

    nobat724.com

    +
    +
    + ); +} + +export default Poster; diff --git a/components/doctor/detailDoctor/Share.js b/components/doctor/detailDoctor/Share.js index 8e60582..b961fa7 100644 --- a/components/doctor/detailDoctor/Share.js +++ b/components/doctor/detailDoctor/Share.js @@ -41,7 +41,7 @@ function Share() { sx={styleDefault} className="!pt-[12px] md:!pt-[14px] lg:!py-[16px] !px-[12px] sm:!px-[16px] md:!px-[20px] lg:!px-[24px] - !pb-[12px] sm:!pb-[16px] lg:!pb-[20px]" + !pb-[12px] sm:!pb-[16px] lg:!pb-[20px] !rounded-[8px] overflow-hidden" >

    diff --git a/components/doctor/index.js b/components/doctor/index.js index 5c5ba3a..750329d 100644 --- a/components/doctor/index.js +++ b/components/doctor/index.js @@ -5,6 +5,7 @@ import AppointmentList from "./appointmentList"; import DetailDoctor from "./detailDoctor"; import Share from "./detailDoctor/Share"; import CustomLoading from "@/app/component/loading/Custom"; +import Poster from "./Poster"; function DoctorPage({ doctor }) { const [loading, setLoading] = useState(true); @@ -30,6 +31,7 @@ function DoctorPage({ doctor }) {

    +
    diff --git a/components/doctors/index.js b/components/doctors/index.js index 92bb153..82ac3b8 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -18,19 +18,18 @@ function DoctorsPage({ params, matchedCity, matchedState }) { province: matchedState?.name || params?.province, city: matchedCity?.name || params?.city, }); - const findItem = (name, value) => - specialties.find((item) => item[name] === value); - const itemCategory = findItem("id", params.category); - const itemSpecialties = findItem("id", params.specialties); + const findSpecial = (id) => specialties.find((item) => item.id === id); const [data, setData] = useState({ - category: itemCategory || "", - specialties: itemSpecialties - ? { ...itemSpecialties, label: itemSpecialties.name } + category: findSpecial(params.specialties)?.parent + ? findSpecial(findSpecial(params.specialties)?.parent) + : findSpecial(params.specialties) || "", + specialties: findSpecial(params.specialties)?.parent + ? findSpecial(params.specialties) : "", turn: params && params.hasOwnProperty("turn") ? JSON.parse(params.turn) : 1, gender: params.gender || "هر دو", - degree: params.degree || "متخصص", + degree: params.degree || "همه موارد", }); useEffect(() => { diff --git a/components/doctors/modal/Content.js b/components/doctors/modal/Content.js index ecbdfcf..aa6692c 100644 --- a/components/doctors/modal/Content.js +++ b/components/doctors/modal/Content.js @@ -3,25 +3,22 @@ import RadioContent from "./RadioContent"; import { FormControlLabel, Switch } from "@mui/material"; import { useRouter } from "next/navigation"; import { filterList } from "@/helper"; -const group1 = ["خانم", "آقا", "هر دو"]; -const group2 = ["فوق تخصص", "دکترای تخصصی", "متخصص", "دکتری"]; +const gender = ["زن", "مرد", "هر دو"]; +const degree = ["پزشک عمومی", "پزشک متخصص", "پزشک فوق تخصص", "همه موارد"]; function Content({ data, setData }) { const router = useRouter(); const { parentList, childrenList } = filterList(data); - const changeUrl = (value, name, removeSpecialties) => { + const changeUrl = (value) => { const current = new URLSearchParams(window.location.search); - current.set(name, value.id || value); - if (removeSpecialties) { - current.delete("specialties"); - } + current.set("specialties", value.id || value); const queryString = current.toString(); router.push(`/doctors?${queryString}`); }; const changeData = (value, name, removeSpecialties) => { - changeUrl(value, name, removeSpecialties); + changeUrl(value); const newData = data; newData[name] = value; if (removeSpecialties) { @@ -34,20 +31,18 @@ function Content({ data, setData }) {
    changeData(value, name, true)} + updateData={(value) => changeData(value, "category", true)} sendAll={true} - value={data.category.name} + value={data.category?.name} label="دسته بندی" - name="category" /> {!!childrenList.length && (
    changeData(value, "specialties")} sendAll={true} - value={data.specialties} - name="specialties" + value={data.specialties?.name} label="تخصص" />
    @@ -57,7 +52,7 @@ function Content({ data, setData }) { changeData={changeData} value={data.gender} text="جنسیت پزشک" - group={group1} + group={gender} name="gender" /> @@ -65,7 +60,7 @@ function Content({ data, setData }) { changeData={changeData} value={data.degree} text="درجه علمی" - group={group2} + group={degree} name="degree" /> diff --git a/components/home/FrequentSearches.js b/components/home/FrequentSearches.js index 5dc975c..324d94b 100644 --- a/components/home/FrequentSearches.js +++ b/components/home/FrequentSearches.js @@ -1,12 +1,9 @@ -import { frequentSearches } from "@/constans"; -import { filterList } from "@/helper"; import { Button } from "@mui/material"; import specialties from "@/data/specialties.json"; import Link from "next/link"; function FrequentSearches() { const childrenList = specialties.filter((item) => item.parent); - console.log(childrenList); return (
    @@ -20,7 +17,6 @@ function FrequentSearches() { href={{ pathname: "/doctors", query: { - category: item.parent, specialties: item.id, }, }} diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index caee821..466e315 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -1,5 +1,6 @@ import Field from "@/app/component/element/Field"; import { formatPhoneNumber, validatePhoneNumber } from "@/helper"; +import { request } from "@/services/response"; import { Button, InputAdornment } from "@mui/material"; import Link from "next/link"; import { useState } from "react"; @@ -15,6 +16,18 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { setNum(formatted); }; + const handleReq = () => { + request + .auth("/") + .then(() => { + setIsSendMsg && setIsSendMsg(true); + setStep && setStep((prev) => prev + 1); + }) + .catch(() => { + setLoading(false); + }); + }; + return (
    diff --git a/helper/index.js b/helper/index.js index 07e8fbb..9e056c9 100644 --- a/helper/index.js +++ b/helper/index.js @@ -105,11 +105,11 @@ export const addLabelToList = (list) => }); export const formatPhoneNumber = (input) => { - if (typeof input !== 'string') input = String(input); + if (typeof input !== "string") input = String(input); const normalized = input - .replace(/[\u06F0-\u06F9]/g, d => String(d.charCodeAt(0) - 0x06F0)) - .replace(/[\u0660-\u0669]/g, d => String(d.charCodeAt(0) - 0x0660)); + .replace(/[\u06F0-\u06F9]/g, (d) => String(d.charCodeAt(0) - 0x06f0)) + .replace(/[\u0660-\u0669]/g, (d) => String(d.charCodeAt(0) - 0x0660)); const digits = normalized.replace(/\D/g, ""); @@ -146,17 +146,6 @@ export const searchOnList = (list, value, name) => { 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; @@ -171,30 +160,27 @@ 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) + ? childrenList.filter((item) => item.parent === data.category.id) : []; return { - parentList: changedParentList, + parentList: parentList, childrenList: filteredChildrenList, }; }; export function getCleanNumberValue(value, defaultValue = 0) { - if (typeof value !== 'string') value = String(value); + if (typeof value !== "string") value = String(value); // Convert Persian and Arabic digits to English digits const persianArabicToEnglish = value - .replace(/[\u06F0-\u06F9]/g, d => String(d.charCodeAt(0) - 0x06F0)) - .replace(/[\u0660-\u0669]/g, d => String(d.charCodeAt(0) - 0x0660)); + .replace(/[\u06F0-\u06F9]/g, (d) => String(d.charCodeAt(0) - 0x06f0)) + .replace(/[\u0660-\u0669]/g, (d) => String(d.charCodeAt(0) - 0x0660)); // Remove non-numeric characters except dots (for decimal support) - const cleaned = persianArabicToEnglish.replace(/[^0-9.]/g, ''); + const cleaned = persianArabicToEnglish.replace(/[^0-9.]/g, ""); // Return number or default if invalid const number = parseFloat(cleaned); diff --git a/public/assets/images/poster.png b/public/assets/images/poster.png new file mode 100644 index 0000000000000000000000000000000000000000..304d36c050c28545dcefc78c2e2df2f0fb71f526 GIT binary patch literal 872640 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

    b`J}eYY{Ht6(yN@iarH2 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 *ET1fLdS?lI(uW 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

    DPL-?KRT~MD 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 aE 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 z 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

    79S_0uB%?EspI29+d~y(8p~yalI?j3802? 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


    &Oz^li(H=$%HNmpXn7kqy`on8U*gzcrx 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®^)7R%f71O#LrkSaDdoDp{$ym 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

    -
    diff --git a/components/doctor/poster/Address.js b/components/doctor/poster/Address.js new file mode 100644 index 0000000..9615085 --- /dev/null +++ b/components/doctor/poster/Address.js @@ -0,0 +1,17 @@ +import ClipBoard from "../../icons/ClipBoard"; + +function Address({ data }) { + return ( +
    +
    + +

    آدرس:

    +
    +

    + {data.location} +

    +
    + ); +} + +export default Address; diff --git a/components/doctor/poster/ImageProfile.js b/components/doctor/poster/ImageProfile.js new file mode 100644 index 0000000..4a19750 --- /dev/null +++ b/components/doctor/poster/ImageProfile.js @@ -0,0 +1,11 @@ +import Image from "next/image"; + +function ImageProfile({ data }) { + return ( +
    + profile-user +
    + ); +} + +export default ImageProfile; diff --git a/components/doctor/poster/QrCode.js b/components/doctor/poster/QrCode.js new file mode 100644 index 0000000..314651e --- /dev/null +++ b/components/doctor/poster/QrCode.js @@ -0,0 +1,15 @@ +import Image from "next/image"; +import CodeSample from "@/public/assets/images/default-qr-code.png"; + +function QrCode() { + return ( +
    + +

    + nobat724/ahwaz.com +

    +
    + ); +} + +export default QrCode; diff --git a/components/doctor/poster/Services.js b/components/doctor/poster/Services.js new file mode 100644 index 0000000..5eb02f6 --- /dev/null +++ b/components/doctor/poster/Services.js @@ -0,0 +1,23 @@ +import ClipBoard from "../../icons/ClipBoard"; +import CircleOrangeSm from "../../icons/CircleOrangeSm"; + +function Services({ data }) { + return ( +
    +
    + +

    خدمات:

    +
    +
      + {data.specialties.map((item, idx) => ( +
    • + +

      {item}

      +
    • + ))} +
    +
    + ); +} + +export default Services; diff --git a/components/doctor/poster/Telefon.js b/components/doctor/poster/Telefon.js new file mode 100644 index 0000000..78828c9 --- /dev/null +++ b/components/doctor/poster/Telefon.js @@ -0,0 +1,20 @@ +import TelefonPoster from "@/components/icons/TelefonPoster"; + +function Telefon({ data }) { + return ( +
    +
    + +

    تلفن:

    +
    +

    + {data.phone} +

    +

    + {data.phone} - {data.phone} +

    +
    + ); +} + +export default Telefon; diff --git a/components/doctor/poster/index.js b/components/doctor/poster/index.js new file mode 100644 index 0000000..0381138 --- /dev/null +++ b/components/doctor/poster/index.js @@ -0,0 +1,35 @@ +import Image from "next/image"; +import Logo from "@/public/assets/images/logo.png"; +import Services from "./Services"; +import Address from "./Address"; +import Telefon from "./Telefon"; +import ImageProfile from "./ImageProfile"; +import QrCode from "./QrCode"; + +function Poster({ data }) { + return ( +
    +
    +
    + logo +

    nobat724.com

    +
    +

    + {data.name} +

    +

    + تخصص: {data.expertise} +

    + +
    + +
    +
    + + +
    +
    + ); +} + +export default Poster; diff --git a/components/icons/AddressPoster.js b/components/icons/AddressPoster.js new file mode 100644 index 0000000..cdbce82 --- /dev/null +++ b/components/icons/AddressPoster.js @@ -0,0 +1,24 @@ +function AddressPoster() { + return ( + + + + + ); +} + +export default AddressPoster; diff --git a/components/icons/CircleOrangeSm.js b/components/icons/CircleOrangeSm.js new file mode 100644 index 0000000..177d462 --- /dev/null +++ b/components/icons/CircleOrangeSm.js @@ -0,0 +1,15 @@ +function CircleOrangeSm() { + return ( + + + + ); +} + +export default CircleOrangeSm; diff --git a/components/icons/ClipBoard.js b/components/icons/ClipBoard.js new file mode 100644 index 0000000..89f8023 --- /dev/null +++ b/components/icons/ClipBoard.js @@ -0,0 +1,37 @@ +function ClipBoard() { + return ( + + + + + + ); +} + +export default ClipBoard; diff --git a/components/icons/TelefonPoster.js b/components/icons/TelefonPoster.js new file mode 100644 index 0000000..aeac489 --- /dev/null +++ b/components/icons/TelefonPoster.js @@ -0,0 +1,34 @@ +function TelefonPoster() { + return ( + + + + + + ); +} + +export default TelefonPoster; diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 466e315..4d378f3 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -1,13 +1,13 @@ import Field from "@/app/component/element/Field"; -import { formatPhoneNumber, validatePhoneNumber } from "@/helper"; +import { changeNumToDefault, formatPhoneNumber, validatePhoneNumber } from "@/helper"; import { request } from "@/services/response"; -import { Button, InputAdornment } from "@mui/material"; +import { InputAdornment, Button } from "@mui/material"; import Link from "next/link"; import { useState } from "react"; -function LogInPage({ setIsSendMsg, setStep, matchedCity }) { - const [num, setNum] = useState(""); +function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { const [error, setError] = useState({ valid: true, text: "" }); + const [loading, setLoading] = useState(false); const handleChange = (val) => { const formatted = formatPhoneNumber(val); @@ -15,13 +15,13 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { setError(checkedNum); setNum(formatted); }; - const handleReq = () => { + setLoading(true); request - .auth("/") - .then(() => { - setIsSendMsg && setIsSendMsg(true); - setStep && setStep((prev) => prev + 1); + .sendCode(changeNumToDefault(num)) + .then((response) => { + setLoading(false); + if (response) setIsSendMsg(true); }) .catch(() => { setLoading(false); @@ -80,6 +80,7 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { */}
    - !link && e.preventDefault()}> - - +
    ); } diff --git a/components/register/element/OTPForm.js b/components/register/element/OTPForm.js index dd62536..db1d0b3 100644 --- a/components/register/element/OTPForm.js +++ b/components/register/element/OTPForm.js @@ -1,28 +1,26 @@ -import { useState } from "react"; - -function OTPForm({ handleOTP }) { - const [code, setCode] = useState(""); - +function OTPForm({ index, value, onChange, inputRef, isError }) { return ( { - const value = e.target.value; - - if (/^\d+$/.test(value) && value.length < 2) { - setCode(value); - handleOTP(e); - } else { - setCode(""); - e.target.value = ""; + const val = e.target.value; + if (/^\d?$/.test(val)) { + onChange(index, val); + } + }} + onKeyDown={(e) => { + if (e.key === "Backspace" && !e.target.value) { + onChange(index, "backspace"); } }} className={`border otp-field border-solid border-[#ADB5BD] rounded-[6px] text-center transition-all duration-500 ease-out - outline-none focus:!border-[1px] focus:!border-solid focus:!border-[#5559CE] - focus:!outline-[1px] focus:!outline-solid focus:!outline-[#5559CE] bg-transparent text-[#525252] - w-[43px] h-[43px] sm:w-[45px] sm:h-[45px] md:w-[47px] md:h-[47px] lg:w-[48px] lg:h-[48px] - ${code && "!border-[1px] !border-solid !border-[#5559CE]"} - `} + outline-none focus:!border-[1px] focus:!border-solid focus:!border-[#5559CE] + focus:!outline-[1px] focus:!outline-solid focus:!outline-[#5559CE] bg-transparent text-[#525252] + w-[43px] h-[43px] sm:w-[45px] sm:h-[45px] md:w-[47px] md:h-[47px] lg:w-[48px] lg:h-[48px] + ${value && "!border-[1px] !border-solid !border-[#5559CE]"} + ${isError && "!border-[#d32f2f]"}`} /> ); } diff --git a/components/register/index.js b/components/register/index.js index 163f395..0231d9c 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -7,14 +7,22 @@ import LayoutRegister from "./LayoutRegister"; function RegisterPage({ matchedCity }) { const [isSendMsg, setIsSendMsg] = useState(false); + const [num, setNum] = useState(""); return ( {isSendMsg ? ( - + ) : ( diff --git a/helper/index.js b/helper/index.js index 9e056c9..4571021 100644 --- a/helper/index.js +++ b/helper/index.js @@ -174,15 +174,14 @@ export const filterList = (data) => { export function getCleanNumberValue(value, defaultValue = 0) { if (typeof value !== "string") value = String(value); - // Convert Persian and Arabic digits to English digits const persianArabicToEnglish = value .replace(/[\u06F0-\u06F9]/g, (d) => String(d.charCodeAt(0) - 0x06f0)) .replace(/[\u0660-\u0669]/g, (d) => String(d.charCodeAt(0) - 0x0660)); - // Remove non-numeric characters except dots (for decimal support) const cleaned = persianArabicToEnglish.replace(/[^0-9.]/g, ""); - // Return number or default if invalid const number = parseFloat(cleaned); return isNaN(number) ? defaultValue : number; } + +export const changeNumToDefault = (num) => `09${num.replace(/\D/g, "")}`; diff --git a/package-lock.json b/package-lock.json index 6c26791..32c29ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,12 @@ "version": "0.1.0", "dependencies": { "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", "@maptiler/sdk": "^2.4.0", "@material-ui/core": "^4.11.2", - "@mui/material": "^5.16.7", + "@mui/icons-material": "^7.1.0", + "@mui/material": "^7.1.0", "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@mui/x-charts": "^7.16.0", "@mui/x-date-pickers": "^7.17.0", @@ -2042,13 +2043,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } @@ -3804,36 +3802,62 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.11", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.11.tgz", - "integrity": "sha512-2eVDGg9OvIXNRmfDUQyKYH+jNcjdv1JkCH5F2YDgUye5fMX5nxGiYHAUe1BXaXyDMaLSwXC7LRksEKMiIQsFdw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.1.0.tgz", + "integrity": "sha512-E0OqhZv548Qdc0PwWhLVA2zmjJZSTvaL4ZhoswmI8NJEC1tpW2js6LLP827jrW9MEiXYdz3QS6+hask83w74yQ==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, - "node_modules/@mui/material": { - "version": "5.16.11", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.11.tgz", - "integrity": "sha512-uoc67oecKdnVKaMHBVE433YrMuxQs22xY5nIjRb5sAPB+GaeZQWp8brQ3/adeH6k2IDa8+9i2IVd4fNLuvHSvA==", + "node_modules/@mui/icons-material": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.1.0.tgz", + "integrity": "sha512-1mUPMAZ+Qk3jfgL5ftRR06ATH/Esi0izHl1z56H+df6cwIlCWG66RXciUqeJCttbOXOQ5y2DCjLZI/4t3Yg3LA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.11", - "@mui/system": "^5.16.8", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.8", + "@babel/runtime": "^7.27.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.1.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.1.0.tgz", + "integrity": "sha512-ahUJdrhEv+mCp4XHW+tHIEYzZMSRLg8z4AjUOsj44QpD1ZaMxQoVOG2xiHvLFdcsIPbgSRx1bg1eQSheHBgvtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1", + "@mui/core-downloads-tracker": "^7.1.0", + "@mui/system": "^7.1.0", + "@mui/types": "^7.4.2", + "@mui/utils": "^7.1.0", "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.3.1", + "react-is": "^19.1.0", "react-transition-group": "^4.4.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3842,6 +3866,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^7.1.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -3853,23 +3878,26 @@ "@emotion/styled": { "optional": true }, + "@mui/material-pigment-css": { + "optional": true + }, "@types/react": { "optional": true } } }, "node_modules/@mui/material/node_modules/@mui/private-theming": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.8.tgz", - "integrity": "sha512-3Vl9yFVLU6T3CFtxRMQTcJ60Ijv7wxQi4yjH92+9YXcsqvVspeIYoocqNoIV/1bXGYfyWu5zrCmwQVHaGY7bug==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.1.0.tgz", + "integrity": "sha512-4Kck4jxhqF6YxNwJdSae1WgDfXVg0lIH6JVJ7gtuFfuKcQCgomJxPvUEOySTFRPz1IZzwz5OAcToskRdffElDA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.8", + "@babel/runtime": "^7.27.1", + "@mui/utils": "^7.1.0", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3886,18 +3914,20 @@ } }, "node_modules/@mui/material/node_modules/@mui/styled-engine": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.8.tgz", - "integrity": "sha512-OFdgFf8JczSRs0kvWGdSn0ZeXxWrY0LITDPJ/nAtLEvUUTyrlFaO4il3SECX8ruzvf1VnAxHx4M/4mX9oOn9yA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.1.0.tgz", + "integrity": "sha512-m0mJ0c6iRC+f9hMeRe0W7zZX1wme3oUX0+XTVHjPG7DJz6OdQ6K/ggEOq7ZdwilcpdsDUwwMfOmvO71qDkYd2w==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", + "@babel/runtime": "^7.27.1", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3918,22 +3948,22 @@ } }, "node_modules/@mui/material/node_modules/@mui/system": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.8.tgz", - "integrity": "sha512-L32TaFDFpGIi1g6ysRtmhc9zDgrlxDXu3NlrGE8gAsQw/ziHrPdr0PNr20O0POUshA1q14W4dNZ/z0Nx2F9lhA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.1.0.tgz", + "integrity": "sha512-iedAWgRJMCxeMHvkEhsDlbvkK+qKf9me6ofsf7twk/jfT4P1ImVf7Rwb5VubEA0sikrVL+1SkoZM41M4+LNAVA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.8", - "@mui/styled-engine": "^5.16.8", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.8", - "clsx": "^2.1.0", + "@babel/runtime": "^7.27.1", + "@mui/private-theming": "^7.1.0", + "@mui/styled-engine": "^7.1.0", + "@mui/types": "^7.4.2", + "@mui/utils": "^7.1.0", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3957,6 +3987,53 @@ } } }, + "node_modules/@mui/material/node_modules/@mui/types": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.2.tgz", + "integrity": "sha512-edRc5JcLPsrlNFYyTPxds+d5oUovuUxnnDtpJUbP6WMeV4+6eaX/mqai1ZIWT62lCOe0nlrON0s9HDiv5en5bA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/@mui/utils": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.1.0.tgz", + "integrity": "sha512-/OM3S8kSHHmWNOP+NH9xEtpYSG10upXeQ0wLZnfDgmgadTAk5F4MQfFLyZ5FCRJENB3eRzltMmaNl6UtDnPovw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1", + "@mui/types": "^7.4.2", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/material/node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -3967,9 +4044,9 @@ } }, "node_modules/@mui/material/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", "license": "MIT" }, "node_modules/@mui/private-theming": { @@ -19820,12 +19897,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", diff --git a/package.json b/package.json index 1ff5161..e471a65 100644 --- a/package.json +++ b/package.json @@ -3,18 +3,19 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "cross-env HOST=yazd-nobat.localhost PORT=3000 next dev", + "dev": "cross-env HOST=localhost PORT=5170 next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", "@maptiler/sdk": "^2.4.0", "@material-ui/core": "^4.11.2", - "@mui/material": "^5.16.7", + "@mui/icons-material": "^7.1.0", + "@mui/material": "^7.1.0", "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@mui/x-charts": "^7.16.0", "@mui/x-date-pickers": "^7.17.0", diff --git a/public/assets/images/default-qr-code.png b/public/assets/images/default-qr-code.png new file mode 100644 index 0000000000000000000000000000000000000000..fc40a9741c77f4dce83873c00e5ed5eebfe40459 GIT binary patch literal 3154 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 Q3BYAxVq^UDym#FH0ktqBJpcdz literal 0 HcmV?d00001 diff --git a/public/assets/images/stroke-circle.png b/public/assets/images/stroke-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..ccbb486b83e4e29f5596a4c9122b8af29f489d92 GIT binary patch literal 74989 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 literal 0 HcmV?d00001 diff --git a/services/response.js b/services/response.js index 7dc40ed..13b4c0a 100644 --- a/services/response.js +++ b/services/response.js @@ -1,21 +1,29 @@ import api from "./api"; -import Cookies from "universal-cookie"; export const request = { - auth: (grant_type, client_id, client_secret, username, password) => + sendCode: (mobile_number) => + api.post( + "api/v1/user/auth", + { mobile_number }, + { + headers: { + Authorization: "", + }, + } + ), + getToken: (grant_type, client_id, client_secret, mobile_number, code) => api.post( "oauth/token", { grant_type, client_id, client_secret, - username, - password, + mobile_number, + code, }, { headers: { Authorization: "", - "Content-Type": "application/x-www-form-urlencoded", }, } ), From 6d70d3793e27ec7dfc5166f3b8a9e201f79cb960 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Thu, 22 May 2025 10:30:24 +0330 Subject: [PATCH 056/124] add .env --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bd3672c..df0b3f6 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ yarn-error.log* next-env.d.ts .idx/dev.nix .vscode/settings.json +.env From 6b1983fb0b1efc25b9ebdd392937081b12c1ab73 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Fri, 23 May 2025 00:04:13 +0330 Subject: [PATCH 057/124] handle api register & change design dashboard tabs and page disease --- app/component/element/Field.js | 1 + app/panel/(layout)/dashboard/page.js | 2 - .../dashboard/userAccount/ContentTabs.js | 131 ---------- .../dashboard/userAccount/UserAccount.js | 2 +- .../dashboard/userAccount/content/HeadTab.js | 62 +++++ .../dashboard/userAccount/content/index.js | 111 +++++++++ .../{tabs => sidebars}/comments/Comment.js | 0 .../{tabs => sidebars}/comments/index.js | 0 .../comments/modal/index.js | 0 .../{tabs => sidebars}/detailUser/Content.js | 0 .../detailUser/DateBirthday.js | 0 .../{tabs => sidebars}/detailUser/Form.js | 0 .../{tabs => sidebars}/detailUser/index.js | 0 .../detailUser/listSelector.js | 0 .../{tabs => sidebars}/messages/Message.js | 0 .../{tabs => sidebars}/messages/index.js | 0 .../{tabs => sidebars}/transactions/Card.js | 0 .../{tabs => sidebars}/transactions/List.js | 0 .../{tabs => sidebars}/transactions/index.js | 0 .../{tabs => sidebars}/turns/Card.js | 0 .../{tabs => sidebars}/turns/Head.js | 0 .../{tabs => sidebars}/turns/List.js | 0 .../{tabs => sidebars}/turns/index.js | 0 .../turns/isTurnsDetails/ButtonData.js | 0 .../turns/isTurnsDetails/DetailLg.js | 0 .../turns/isTurnsDetails/DetailSm.js | 0 .../turns/isTurnsDetails/Head.js | 0 .../turns/isTurnsDetails/index.js | 0 .../turns/isTurnsDetails/modal/index.js | 0 .../userAccount/tabs/allergies/index.js | 7 + .../userAccount/tabs/disease/index.js | 53 ++++ .../userAccount/tabs/familyHistory/index.js | 7 + .../userAccount/tabs/medications/index.js | 7 + .../userAccount/tabs/relatives/index.js | 7 + .../userAccount/tabs/surgeries/index.js | 7 + components/panel/dashboard/index.js | 2 + components/register/LogInPage.js | 15 +- components/register/SetCodePage.js | 13 +- data/profile_other.json | 226 ++++++++++++++++++ package.json | 2 +- services/response.js | 29 ++- 41 files changed, 527 insertions(+), 157 deletions(-) delete mode 100644 components/dashboard/userAccount/ContentTabs.js create mode 100644 components/dashboard/userAccount/content/HeadTab.js create mode 100644 components/dashboard/userAccount/content/index.js rename components/dashboard/userAccount/{tabs => sidebars}/comments/Comment.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/comments/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/comments/modal/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/detailUser/Content.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/detailUser/DateBirthday.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/detailUser/Form.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/detailUser/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/detailUser/listSelector.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/messages/Message.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/messages/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/transactions/Card.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/transactions/List.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/transactions/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/Card.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/Head.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/List.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/ButtonData.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/DetailLg.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/DetailSm.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/Head.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/index.js (100%) rename components/dashboard/userAccount/{tabs => sidebars}/turns/isTurnsDetails/modal/index.js (100%) create mode 100644 components/dashboard/userAccount/tabs/allergies/index.js create mode 100644 components/dashboard/userAccount/tabs/disease/index.js create mode 100644 components/dashboard/userAccount/tabs/familyHistory/index.js create mode 100644 components/dashboard/userAccount/tabs/medications/index.js create mode 100644 components/dashboard/userAccount/tabs/relatives/index.js create mode 100644 components/dashboard/userAccount/tabs/surgeries/index.js create mode 100644 data/profile_other.json diff --git a/app/component/element/Field.js b/app/component/element/Field.js index 0257412..a4b2020 100644 --- a/app/component/element/Field.js +++ b/app/component/element/Field.js @@ -37,6 +37,7 @@ function Field({ }, "& .MuiInputBase-input": { padding: spaceNull ? "12.5px 0" : "12.5px 14px", + color: spaceNull && "#0009", }, "& .MuiInputBase-root": { borderRadius: "6px !important" }, "& .MuiOutlinedInput-notchedOutline": { diff --git a/app/panel/(layout)/dashboard/page.js b/app/panel/(layout)/dashboard/page.js index 7d2c7b6..dafec69 100644 --- a/app/panel/(layout)/dashboard/page.js +++ b/app/panel/(layout)/dashboard/page.js @@ -1,5 +1,3 @@ -"use client"; - import DashboardPage from "@/components/panel/dashboard"; import Information from "@/data/information.json"; diff --git a/components/dashboard/userAccount/ContentTabs.js b/components/dashboard/userAccount/ContentTabs.js deleted file mode 100644 index 5c5ddd2..0000000 --- a/components/dashboard/userAccount/ContentTabs.js +++ /dev/null @@ -1,131 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; - -// Tabs -import Turns from "./tabs/turns"; -import DetailUser from "./tabs/detailUser"; -import Comments from "./tabs/comments"; -import Messages from "./tabs/messages"; -import Tabs from "@/app/component/Tabs"; -import Transactions from "./tabs/transactions"; -import IsTurnsDetails from "./tabs/turns/isTurnsDetails"; -import ArrowRightD from "@/components/icons/ArrowRightD"; -import { Button } from "@mui/material"; -import NotfoundDashboard from "./NotfoundDashboard"; -import DownloadD from "@/components/icons/DownloadD"; - -const listTab = [ - "حساب کاربری", - "نوبت های من", - "تراکنش های من", - "نظرات من", - "پیام ها", -]; - -function ContentTabs({ - user, - value, - isTurnsDetails, - setIsTurnsDetails, - setValue, - isOpenSide, - setIsOpenSide, -}) { - const [loading, setLoading] = useState(true); - const handleChange = (event, newValue) => setValue(newValue); - - useEffect(() => { - setTimeout(() => { - setLoading(false); - }, 2000); - }, []); - - const components = [ - , - , - , - , - , - , - ]; - - return ( -
    -
    - - {value === 1 && isTurnsDetails ? ( - - ) : undefined} -
    - {isTurnsDetails ? ( - - ) : ( - <> -
    - -
    -
    - {components[value]} -
    - - )} -
    - ); -} - -export default ContentTabs; diff --git a/components/dashboard/userAccount/UserAccount.js b/components/dashboard/userAccount/UserAccount.js index 033578b..9ddb45a 100644 --- a/components/dashboard/userAccount/UserAccount.js +++ b/components/dashboard/userAccount/UserAccount.js @@ -1,4 +1,4 @@ -import ContentTabs from "./ContentTabs"; +import ContentTabs from "./content"; import Head from "./Head"; import NotfoundDashboard from "./NotfoundDashboard"; diff --git a/components/dashboard/userAccount/content/HeadTab.js b/components/dashboard/userAccount/content/HeadTab.js new file mode 100644 index 0000000..03876a3 --- /dev/null +++ b/components/dashboard/userAccount/content/HeadTab.js @@ -0,0 +1,62 @@ +import Tabs from "@/app/component/Tabs"; +import IsTurnsDetails from "../sidebars/turns/isTurnsDetails"; + +function HeadTab({ + tab, + user, + listTab, + loading, + handleChange, + isTurnsDetails, + setIsTurnsDetails, + components, +}) { + + return ( + <> + {isTurnsDetails ? ( + + ) : ( + <> +
    + +
    +
    + {components[tab]} +
    + + )} + + ); +} + +export default HeadTab; diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js new file mode 100644 index 0000000..614e9bf --- /dev/null +++ b/components/dashboard/userAccount/content/index.js @@ -0,0 +1,111 @@ +"use client"; + +import { useEffect, useState } from "react"; + +import ArrowRightD from "@/components/icons/ArrowRightD"; +import { Button } from "@mui/material"; +import DownloadD from "@/components/icons/DownloadD"; +import Disease from "../tabs/disease"; +import Allergies from "../tabs/allergies"; +import Medications from "../tabs/medications"; +import Surgeries from "../tabs/surgeries"; +import FamilyHistory from "../tabs/familyHistory"; +import Relatives from "../tabs/relatives"; +import HeadTab from "./HeadTab"; + +import profileData from "@/data/profile_other.json"; + +const listTab = [ + "بیماری‌ها", + "آلرژی‌ها", + "داروهای مصرفی", + "جراحی‌ها", + "سابقه خانوادگی بیماری", + "بستگان", +]; + +function ContentTabs({ + user, + value, + isTurnsDetails, + setIsTurnsDetails, + setValue, + setIsOpenSide, +}) { + const [loading, setLoading] = useState(true); + const [tab, setTab] = useState(0); + + const handleChange = (event, newValue) => { + // setValue(newValue); + setTab(newValue); + }; + + useEffect(() => { + setTimeout(() => { + setLoading(false); + }, 2000); + }, []); + + const components = [ + // , + // , + // , + // , + // , + // , + , + , + , + , + , + , + ]; + + return ( +
    +
    + + {value === 1 && isTurnsDetails ? ( + + ) : undefined} +
    + +
    + ); +} + +export default ContentTabs; diff --git a/components/dashboard/userAccount/tabs/comments/Comment.js b/components/dashboard/userAccount/sidebars/comments/Comment.js similarity index 100% rename from components/dashboard/userAccount/tabs/comments/Comment.js rename to components/dashboard/userAccount/sidebars/comments/Comment.js diff --git a/components/dashboard/userAccount/tabs/comments/index.js b/components/dashboard/userAccount/sidebars/comments/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/comments/index.js rename to components/dashboard/userAccount/sidebars/comments/index.js diff --git a/components/dashboard/userAccount/tabs/comments/modal/index.js b/components/dashboard/userAccount/sidebars/comments/modal/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/comments/modal/index.js rename to components/dashboard/userAccount/sidebars/comments/modal/index.js diff --git a/components/dashboard/userAccount/tabs/detailUser/Content.js b/components/dashboard/userAccount/sidebars/detailUser/Content.js similarity index 100% rename from components/dashboard/userAccount/tabs/detailUser/Content.js rename to components/dashboard/userAccount/sidebars/detailUser/Content.js diff --git a/components/dashboard/userAccount/tabs/detailUser/DateBirthday.js b/components/dashboard/userAccount/sidebars/detailUser/DateBirthday.js similarity index 100% rename from components/dashboard/userAccount/tabs/detailUser/DateBirthday.js rename to components/dashboard/userAccount/sidebars/detailUser/DateBirthday.js diff --git a/components/dashboard/userAccount/tabs/detailUser/Form.js b/components/dashboard/userAccount/sidebars/detailUser/Form.js similarity index 100% rename from components/dashboard/userAccount/tabs/detailUser/Form.js rename to components/dashboard/userAccount/sidebars/detailUser/Form.js diff --git a/components/dashboard/userAccount/tabs/detailUser/index.js b/components/dashboard/userAccount/sidebars/detailUser/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/detailUser/index.js rename to components/dashboard/userAccount/sidebars/detailUser/index.js diff --git a/components/dashboard/userAccount/tabs/detailUser/listSelector.js b/components/dashboard/userAccount/sidebars/detailUser/listSelector.js similarity index 100% rename from components/dashboard/userAccount/tabs/detailUser/listSelector.js rename to components/dashboard/userAccount/sidebars/detailUser/listSelector.js diff --git a/components/dashboard/userAccount/tabs/messages/Message.js b/components/dashboard/userAccount/sidebars/messages/Message.js similarity index 100% rename from components/dashboard/userAccount/tabs/messages/Message.js rename to components/dashboard/userAccount/sidebars/messages/Message.js diff --git a/components/dashboard/userAccount/tabs/messages/index.js b/components/dashboard/userAccount/sidebars/messages/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/messages/index.js rename to components/dashboard/userAccount/sidebars/messages/index.js diff --git a/components/dashboard/userAccount/tabs/transactions/Card.js b/components/dashboard/userAccount/sidebars/transactions/Card.js similarity index 100% rename from components/dashboard/userAccount/tabs/transactions/Card.js rename to components/dashboard/userAccount/sidebars/transactions/Card.js diff --git a/components/dashboard/userAccount/tabs/transactions/List.js b/components/dashboard/userAccount/sidebars/transactions/List.js similarity index 100% rename from components/dashboard/userAccount/tabs/transactions/List.js rename to components/dashboard/userAccount/sidebars/transactions/List.js diff --git a/components/dashboard/userAccount/tabs/transactions/index.js b/components/dashboard/userAccount/sidebars/transactions/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/transactions/index.js rename to components/dashboard/userAccount/sidebars/transactions/index.js diff --git a/components/dashboard/userAccount/tabs/turns/Card.js b/components/dashboard/userAccount/sidebars/turns/Card.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/Card.js rename to components/dashboard/userAccount/sidebars/turns/Card.js diff --git a/components/dashboard/userAccount/tabs/turns/Head.js b/components/dashboard/userAccount/sidebars/turns/Head.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/Head.js rename to components/dashboard/userAccount/sidebars/turns/Head.js diff --git a/components/dashboard/userAccount/tabs/turns/List.js b/components/dashboard/userAccount/sidebars/turns/List.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/List.js rename to components/dashboard/userAccount/sidebars/turns/List.js diff --git a/components/dashboard/userAccount/tabs/turns/index.js b/components/dashboard/userAccount/sidebars/turns/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/index.js rename to components/dashboard/userAccount/sidebars/turns/index.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/ButtonData.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/ButtonData.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/ButtonData.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/ButtonData.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/DetailLg.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/DetailLg.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/DetailLg.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/DetailLg.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/DetailSm.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/DetailSm.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/DetailSm.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/DetailSm.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/modal/index.js similarity index 100% rename from components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js rename to components/dashboard/userAccount/sidebars/turns/isTurnsDetails/modal/index.js diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/tabs/allergies/index.js new file mode 100644 index 0000000..4bc21ea --- /dev/null +++ b/components/dashboard/userAccount/tabs/allergies/index.js @@ -0,0 +1,7 @@ +function Allergies() { + return ( +
    Allergies
    + ) +} + +export default Allergies \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/disease/index.js b/components/dashboard/userAccount/tabs/disease/index.js new file mode 100644 index 0000000..6c479b2 --- /dev/null +++ b/components/dashboard/userAccount/tabs/disease/index.js @@ -0,0 +1,53 @@ +import CustomTable from "@/app/component/CustomTable"; +import CircularLoading from "@/app/component/loading/Circular"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; + +function Disease({ data }) { + const tableHead = ["شماره", "اسم", "وضعیت"]; + const centerTable = [0, 4]; + + return ( +
    + + {data.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.name} + + + + + {row.status} + + + + ))} + +
    + ); +} + +export default Disease; diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/tabs/familyHistory/index.js new file mode 100644 index 0000000..e0fd520 --- /dev/null +++ b/components/dashboard/userAccount/tabs/familyHistory/index.js @@ -0,0 +1,7 @@ +function FamilyHistory() { + return ( +
    FamilyHistory
    + ) +} + +export default FamilyHistory \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/medications/index.js b/components/dashboard/userAccount/tabs/medications/index.js new file mode 100644 index 0000000..38a60a1 --- /dev/null +++ b/components/dashboard/userAccount/tabs/medications/index.js @@ -0,0 +1,7 @@ +function Medications() { + return ( +
    Medications
    + ) +} + +export default Medications \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/relatives/index.js b/components/dashboard/userAccount/tabs/relatives/index.js new file mode 100644 index 0000000..74d9230 --- /dev/null +++ b/components/dashboard/userAccount/tabs/relatives/index.js @@ -0,0 +1,7 @@ +function Relatives() { + return ( +
    Relatives
    + ) +} + +export default Relatives \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/surgeries/index.js b/components/dashboard/userAccount/tabs/surgeries/index.js new file mode 100644 index 0000000..1cf9106 --- /dev/null +++ b/components/dashboard/userAccount/tabs/surgeries/index.js @@ -0,0 +1,7 @@ +function Surgeries() { + return ( +
    Surgeries
    + ) +} + +export default Surgeries \ No newline at end of file diff --git a/components/panel/dashboard/index.js b/components/panel/dashboard/index.js index 4a7ff5a..519e832 100644 --- a/components/panel/dashboard/index.js +++ b/components/panel/dashboard/index.js @@ -1,3 +1,5 @@ +"use client"; + import { useEffect, useState } from "react"; import Activities from "@/components/layoutPanel/userDetail/Activities"; diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 4d378f3..465b498 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -1,5 +1,9 @@ import Field from "@/app/component/element/Field"; -import { changeNumToDefault, formatPhoneNumber, validatePhoneNumber } from "@/helper"; +import { + changeNumToDefault, + formatPhoneNumber, + validatePhoneNumber, +} from "@/helper"; import { request } from "@/services/response"; import { InputAdornment, Button } from "@mui/material"; import Link from "next/link"; @@ -13,7 +17,11 @@ function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { const formatted = formatPhoneNumber(val); const checkedNum = validatePhoneNumber(formatted); setError(checkedNum); + const digits = formatted.replace(/\D/g, ""); setNum(formatted); + if (digits.length === 9) { + handleReq(); + } }; const handleReq = () => { setLoading(true); @@ -21,7 +29,10 @@ function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { .sendCode(changeNumToDefault(num)) .then((response) => { setLoading(false); - if (response) setIsSendMsg(true); + if (response) { + setNum(""); + setIsSendMsg(true); + } }) .catch(() => { setLoading(false); diff --git a/components/register/SetCodePage.js b/components/register/SetCodePage.js index 6be6e5b..3b0c570 100644 --- a/components/register/SetCodePage.js +++ b/components/register/SetCodePage.js @@ -1,6 +1,5 @@ import { useRef, useState } from "react"; -import Link from "next/link"; import { Button } from "@mui/material"; import OTPForm from "./element/OTPForm"; import EditLogin from "../icons/EditLogin"; @@ -15,6 +14,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { const retryIcon = useRef(); const [timer, setTimer] = useState(0); + const [loading, setLoading] = useState(false); const [code, setCode] = useState(["", "", "", ""]); const [isError, setIsError] = useState(false); const inputRefs = Array.from({ length: 5 }, () => useRef()); @@ -36,6 +36,9 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { if (newCode.join("").length === 4 && isError) { setIsError(false); } + if (newCode.join("").length === 4) { + handleReq(); + } setCode(newCode); @@ -59,6 +62,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { }; const handleReq = () => { + setLoading(true); request .getToken( "mobile", @@ -68,10 +72,10 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { code.join("") ) .then((response) => { - console.log(response); + setLoading(false); }) .catch((err) => { - console.log(err); + setLoading(false); }); }; @@ -142,9 +146,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { onClick={() => { if (!timer && timer !== "loading") { handleTimer(); - retryIcon.current.classList.add("retry-icon"); - setTimeout(() => { retryIcon.current && retryIcon.current.classList.remove("retry-icon"); @@ -171,6 +173,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) {
    +
    + ); +} + +export default Head; diff --git a/components/dashboard/userAccount/content/HeadTab.js b/components/dashboard/userAccount/content/HeadTab.js index 03876a3..2736fa8 100644 --- a/components/dashboard/userAccount/content/HeadTab.js +++ b/components/dashboard/userAccount/content/HeadTab.js @@ -11,7 +11,6 @@ function HeadTab({ setIsTurnsDetails, components, }) { - return ( <> {isTurnsDetails ? ( @@ -50,9 +49,7 @@ function HeadTab({ handleChange={handleChange} />
    -
    - {components[tab]} -
    +
    {components[tab]}
    )} diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js index 614e9bf..65675fe 100644 --- a/components/dashboard/userAccount/content/index.js +++ b/components/dashboard/userAccount/content/index.js @@ -34,6 +34,7 @@ function ContentTabs({ }) { const [loading, setLoading] = useState(true); const [tab, setTab] = useState(0); + const data = profileData[0]; const handleChange = (event, newValue) => { // setValue(newValue); @@ -57,12 +58,12 @@ function ContentTabs({ // , // , // , - , - , - , - , - , - , + , + , + , + , + , + , ]; return ( diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/tabs/allergies/index.js index 4bc21ea..83ce10d 100644 --- a/components/dashboard/userAccount/tabs/allergies/index.js +++ b/components/dashboard/userAccount/tabs/allergies/index.js @@ -1,7 +1,68 @@ -function Allergies() { +import CustomTable from "@/app/component/CustomTable"; +import TextLoading from "@/app/component/loading/Text"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, TableCell, TableRow } from "@mui/material"; +import Head from "../../components/Head"; + +function Allergies({ data }) { + const tableHead = ["ردیف", "ماده آلرژی‌زا", "واکنش", "شدت", ""]; + const centerTable = [0]; + return ( -
    Allergies
    - ) +
    + + + {data.allergies.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.substance} + + + + + {row.reaction} + + + + + {row.severity} + + + +
    + + +
    +
    +
    + ))} +
    +
    + ); } -export default Allergies \ No newline at end of file +export default Allergies; diff --git a/components/dashboard/userAccount/tabs/disease/index.js b/components/dashboard/userAccount/tabs/disease/index.js index 6c479b2..323e68b 100644 --- a/components/dashboard/userAccount/tabs/disease/index.js +++ b/components/dashboard/userAccount/tabs/disease/index.js @@ -1,20 +1,23 @@ import CustomTable from "@/app/component/CustomTable"; -import CircularLoading from "@/app/component/loading/Circular"; import TextLoading from "@/app/component/loading/Text"; -import { TableCell, TableRow } from "@mui/material"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, Switch, TableCell, TableRow } from "@mui/material"; +import Head from "../../components/Head"; function Disease({ data }) { - const tableHead = ["شماره", "اسم", "وضعیت"]; - const centerTable = [0, 4]; + const tableHead = ["ردیف", "اسم", "وضعیت", ""]; + const centerTable = [0]; return ( -
    +
    + - {data.map((row, idx) => ( + {data.disease.map((row, idx) => ( - + {row.name} + + + {/* {row.status} */} + + + - - {row.status} - +
    + + +
    ))} diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/tabs/familyHistory/index.js index e0fd520..1ea29ed 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/index.js +++ b/components/dashboard/userAccount/tabs/familyHistory/index.js @@ -1,7 +1,63 @@ -function FamilyHistory() { +import CustomTable from "@/app/component/CustomTable"; +import TextLoading from "@/app/component/loading/Text"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, TableCell, TableRow } from "@mui/material"; +import Head from "../../components/Head"; + +function FamilyHistory({ data }) { + const tableHead = ["ردیف", "بیماری", "نسبت خانوادگی", ""]; + const centerTable = [0]; + return ( -
    FamilyHistory
    - ) +
    + + + {data.family_history.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.disease} + + + + + {row.relation} + + + +
    + + +
    +
    +
    + ))} +
    +
    + ); } -export default FamilyHistory \ No newline at end of file +export default FamilyHistory; diff --git a/components/dashboard/userAccount/tabs/medications/index.js b/components/dashboard/userAccount/tabs/medications/index.js index 38a60a1..3a74a24 100644 --- a/components/dashboard/userAccount/tabs/medications/index.js +++ b/components/dashboard/userAccount/tabs/medications/index.js @@ -1,7 +1,68 @@ -function Medications() { +import CustomTable from "@/app/component/CustomTable"; +import TextLoading from "@/app/component/loading/Text"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, TableCell, TableRow } from "@mui/material"; +import Head from "../../components/Head"; + +function Medications({ data }) { + const tableHead = ["ردیف", "نام دارو", "دوز مصرفی", "تعداد و زمان مصرف", ""]; + const centerTable = [0]; + return ( -
    Medications
    - ) +
    + + + {data.medications.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.name} + + + + + {row.dose} + + + + + {row.frequency} + + + +
    + + +
    +
    +
    + ))} +
    +
    + ); } -export default Medications \ No newline at end of file +export default Medications; diff --git a/components/dashboard/userAccount/tabs/relatives/index.js b/components/dashboard/userAccount/tabs/relatives/index.js index 74d9230..933c4a6 100644 --- a/components/dashboard/userAccount/tabs/relatives/index.js +++ b/components/dashboard/userAccount/tabs/relatives/index.js @@ -1,7 +1,84 @@ -function Relatives() { +import CustomTable from "@/app/component/CustomTable"; +import TextLoading from "@/app/component/loading/Text"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, TableCell, TableRow, Tooltip } from "@mui/material"; +import Head from "../../components/Head"; + +function Relatives({ data }) { + const tableHead = ["ردیف", "نام", "نسبت", "شماره تماس", "ایمیل", "آدرس", ""]; + const centerTable = [0]; + return ( -
    Relatives
    - ) +
    + + + {data.relatives.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.name} + + + + + {row.relation} + + + + + {`${row.contact.phone?.replace("+", "")}+`} + + + + + {row.contact.email} + + + + +
    + + {(row.contact.address || "").substring(0, 15)} + {row.contact.address?.length > 15 ? "…" : ""} + +
    +
    +
    + + +
    + + +
    +
    +
    + ))} +
    +
    + ); } -export default Relatives \ No newline at end of file +export default Relatives; diff --git a/components/dashboard/userAccount/tabs/surgeries/index.js b/components/dashboard/userAccount/tabs/surgeries/index.js index 1cf9106..6cf31ff 100644 --- a/components/dashboard/userAccount/tabs/surgeries/index.js +++ b/components/dashboard/userAccount/tabs/surgeries/index.js @@ -1,7 +1,77 @@ -function Surgeries() { +import CustomTable from "@/app/component/CustomTable"; +import TextLoading from "@/app/component/loading/Text"; +import EditB from "@/components/icons/EditB"; +import TrashB from "@/components/icons/TrashB"; +import { Button, TableCell, TableRow } from "@mui/material"; +import Head from "../../components/Head"; + +function Surgeries({ data }) { + const tableHead = [ + "ردیف", + "نوع جراحی", + "نام بیمارستان", + "سال انجام جراحی", + "", + ]; + const centerTable = [0, 3]; + return ( -
    Surgeries
    - ) +
    + + + {data.surgeries.map((row, idx) => ( + + + + {idx + 1} + + + + + {row.type} + + + + + {row.hospital} + + + + + {row.year} + + + +
    + + +
    +
    +
    + ))} +
    +
    + ); } -export default Surgeries \ No newline at end of file +export default Surgeries; diff --git a/components/panel/userAccount/bank/head/modal/index.js b/components/panel/userAccount/bank/head/modal/index.js index 422c534..7ec63dd 100644 --- a/components/panel/userAccount/bank/head/modal/index.js +++ b/components/panel/userAccount/bank/head/modal/index.js @@ -2,7 +2,6 @@ import { useState } from "react"; import Form from "./Form"; import { styleDefault } from "@/mui"; import { Box, Button, Modal } from "@mui/material"; -import { validate_phone_number } from "./validate"; // Icons import PlusB from "@/components/icons/PlusB"; diff --git a/components/register/ContentVerify.js b/components/register/ContentVerify.js index 98ff167..feece55 100644 --- a/components/register/ContentVerify.js +++ b/components/register/ContentVerify.js @@ -1,7 +1,7 @@ "use client"; import RegisterPage from "@/components/register"; -import SetCodePage from "@/components/register/SetCodePage"; +import VerificationPage from "@/components/register/verificationPage"; import LogInPage from "@/components/register/LogInPage"; import { useState } from "react"; @@ -11,7 +11,7 @@ function ContentVerify() { return ( {isSendMsg ? ( - diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 573c234..c52e775 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -25,38 +25,37 @@ function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { // } }; const handleReq = async () => { - try { - const res = await axios.post( - "https://back-dev.clinic-pro.ir/api/v1/user/auth?_format=json", - { mobile_number: changeNumToDefault(num) }, - { - withCredentials: true, - headers: { - "Content-Type": "application/json", - }, - } - ); - console.log(res); - if (res.data) { - setIsSendMsg(true); - } - } catch (err) { - console.error("Request failed:", err); - } - - // setLoading(true); - // request - // .sendCode(changeNumToDefault(num)) - // .then((response) => { - // setLoading(false); - // if (response) { - // // setNum(""); - // setIsSendMsg(true); + // try { + // const res = await axios.post( + // "https://back-dev.clinic-pro.ir/api/v1/user/auth?_format=json", + // { mobile_number: changeNumToDefault(num) }, + // { + // withCredentials: true, + // headers: { + // "Content-Type": "application/json", + // }, // } - // }) - // .catch(() => { - // setLoading(false); - // }); + // ); + // console.log(res); + // if (res.data) { + // setIsSendMsg(true); + // } + // } catch (err) { + // console.error("Request failed:", err); + // } + setLoading(true); + request + .sendCode(changeNumToDefault(num)) + .then((response) => { + setLoading(false); + if (response) { + // setNum(""); + setIsSendMsg(true); + } + }) + .catch(() => { + setLoading(false); + }); }; return ( diff --git a/components/register/index.js b/components/register/index.js index 0231d9c..3c58af3 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -1,6 +1,6 @@ "use client"; -import SetCodePage from "@/components/register/SetCodePage"; +import VerificationPage from "@/components/register/verificationPage"; import LogInPage from "@/components/register/LogInPage"; import { useState } from "react"; import LayoutRegister from "./LayoutRegister"; @@ -12,7 +12,7 @@ function RegisterPage({ matchedCity }) { return ( {isSendMsg ? ( - { + setTimer("loading"); + setTimeout(() => { + setTimer(time_resend_code); + let timePresent = time_resend_code; + const timerInterval = setInterval(() => { + timePresent--; + setTimer(timePresent); + + !timePresent && clearInterval(timerInterval); + }, 1000); + }, 1000); + }; + + return ( + + ); +} + +export default Recode; diff --git a/components/register/SetCodePage.js b/components/register/verificationPage/index.js similarity index 56% rename from components/register/SetCodePage.js rename to components/register/verificationPage/index.js index 1df045f..0b78b89 100644 --- a/components/register/SetCodePage.js +++ b/components/register/verificationPage/index.js @@ -1,17 +1,14 @@ import { useRef, useState } from "react"; import { Button } from "@mui/material"; -import OTPForm from "./element/OTPForm"; -import EditLogin from "../icons/EditLogin"; -import RetryLogin from "../icons/RetryLogin"; -import ArrowRightS from "../icons/ArrowRightS"; +import OTPForm from "../element/OTPForm"; +import EditLogin from "../../icons/EditLogin"; +import ArrowRightS from "../../icons/ArrowRightS"; import { request } from "@/services/response"; import { changeNumToDefault } from "@/helper"; -import axios from "axios"; +import Recode from "./Recode"; -const time_resend_code = 120; - -function SetCodePage({ setIsSendMsg, link, num, setStep }) { +function VerificationPage({ setIsSendMsg, link, num, setStep }) { const retryIcon = useRef(); const [timer, setTimer] = useState(0); @@ -48,58 +45,45 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { } }; - const handleTimer = () => { - setTimer("loading"); - setTimeout(() => { - setTimer(time_resend_code); - let timePresent = time_resend_code; - const timerInterval = setInterval(() => { - timePresent--; - setTimer(timePresent); - - !timePresent && clearInterval(timerInterval); - }, 1000); - }, 1000); - }; - const handleReq = async () => { - const formData = new URLSearchParams(); - formData.append("grant_type", "mobile"); - formData.append("client_id", process.env.NEXT_PUBLIC_CLIENT_ID); - formData.append("client_secret", process.env.NEXT_PUBLIC_CLIENT_SECRET); - formData.append("mobile_number", changeNumToDefault(num)); - formData.append("code", code.join("")); + // const formData = new URLSearchParams(); + // formData.append("grant_type", "mobile"); + // formData.append("client_id", process.env.NEXT_PUBLIC_CLIENT_ID); + // formData.append("client_secret", process.env.NEXT_PUBLIC_CLIENT_SECRET); + // formData.append("mobile_number", changeNumToDefault(num)); + // formData.append("code", code.join("")); - try { - const res = await axios.post( - "https://back-dev.clinic-pro.ir/oauth/token", - formData, - { - withCredentials: true, - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - } - ); - console.log(res); - } catch (err) { - console.error("Request failed:", err); - } - // setLoading(true); - // request - // .getToken( - // "mobile", - // process.env.NEXT_PUBLIC_CLIENT_ID, - // process.env.NEXT_PUBLIC_CLIENT_SECRET, - // changeNumToDefault(num), - // code.join("") - // ) - // .then((response) => { - // setLoading(false); - // }) - // .catch((err) => { - // setLoading(false); - // }); + // try { + // const res = await axios.post( + // "https://back-dev.clinic-pro.ir/oauth/token", + // formData, + // { + // withCredentials: true, + // headers: { + // "Content-Type": "application/x-www-form-urlencoded", + // }, + // } + // ); + // console.log(res); + // } catch (err) { + // console.error("Request failed:", err); + // } + + setLoading(true); + request + .getToken( + "mobile", + process.env.NEXT_PUBLIC_CLIENT_ID, + process.env.NEXT_PUBLIC_CLIENT_SECRET, + changeNumToDefault(num), + code.join("") + ) + .then((response) => { + setLoading(false); + }) + .catch((err) => { + setLoading(false); + }); }; return ( @@ -120,7 +104,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) { کد تایید را وارد نمایید

    - کد تایید برای شماره 09013261200 ارسال شد. + کد تایید برای شماره 09{num} ارسال شد.

    @@ -163,35 +147,7 @@ function SetCodePage({ setIsSendMsg, link, num, setStep }) {

    - +
    diff --git a/package-lock.json b/package-lock.json index 32c29ec..947ff0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "i": "^0.3.7", "jalaali-react-date-picker": "^1.0.18", "jalali-moment": "^3.3.11", + "js-cookie": "^3.0.5", "next": "^14.2.20", "next-themes": "^0.3.0", "npm": "^10.8.2", @@ -39,8 +40,7 @@ "styled-components": "^6.1.11", "stylis": "^4.3.4", "stylis-plugin-rtl": "^2.1.1", - "swiper": "^11.1.9", - "universal-cookie": "^7.2.1" + "swiper": "^11.1.9" }, "devDependencies": { "cross-env": "^7.0.3", @@ -5409,12 +5409,6 @@ "@types/node": "*" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" - }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", @@ -8010,15 +8004,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -13594,6 +13579,15 @@ "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", "license": "BSD-3-Clause" }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -22545,16 +22539,6 @@ "node": ">=8" } }, - "node_modules/universal-cookie": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.2.2.tgz", - "integrity": "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==", - "license": "MIT", - "dependencies": { - "@types/cookie": "^0.6.0", - "cookie": "^0.7.2" - } - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", diff --git a/package.json b/package.json index 86b5e20..4891b64 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "i": "^0.3.7", "jalaali-react-date-picker": "^1.0.18", "jalali-moment": "^3.3.11", + "js-cookie": "^3.0.5", "next": "^14.2.20", "next-themes": "^0.3.0", "npm": "^10.8.2", @@ -40,8 +41,7 @@ "styled-components": "^6.1.11", "stylis": "^4.3.4", "stylis-plugin-rtl": "^2.1.1", - "swiper": "^11.1.9", - "universal-cookie": "^7.2.1" + "swiper": "^11.1.9" }, "devDependencies": { "cross-env": "^7.0.3", diff --git a/services/api.js b/services/api.js index d250db0..7f2cf92 100644 --- a/services/api.js +++ b/services/api.js @@ -1,30 +1,28 @@ import axios from "axios"; -import Cookies from "universal-cookie"; +import Cookies from "js-cookie"; import "react-toastify/dist/ReactToastify.css"; -const cookies = new Cookies(); const BASE_URL = process.env.NEXT_PUBLIC_API_URL; +const token = Cookies.get("access"); +console.log(token); + const api = axios.create({ baseURL: BASE_URL, headers: { "Content-Type": "application/json", - Authorization: `Bearer ${cookies.get("access")}`, - Cookie: - "SESS318c6addec00b99e23988eb0e987826b=HpiIBmiGFlESY-f3IhkXEE5sq0mKVT-loNm5TiTN-UstIzn1", + Authorization: token ? `Bearer ${token}` : "", }, }); api.interceptors.response.use( (response) => { console.log(response); - return response.data; }, (error) => { - console.log(error); - - return error; + console.error(error); + return Promise.reject(error); } ); diff --git a/services/response.js b/services/response.js index 3e183b8..4f3e0fa 100644 --- a/services/response.js +++ b/services/response.js @@ -25,8 +25,6 @@ export const request = { "Content-Type": "application/x-www-form-urlencoded", Authorization: "", withCredentials: true, - Cookie: - "SESS318c6addec00b99e23988eb0e987826b=HpiIBmiGFlESY-f3IhkXEE5sq0mKVT-loNm5TiTN-UstIzn1", }, }); }, diff --git a/utils/index.js b/utils/index.js index 0ca58f5..b8a53d5 100644 --- a/utils/index.js +++ b/utils/index.js @@ -1,7 +1,5 @@ -import Cookies from "universal-cookie"; +import Cookies from "js-cookie"; -const cookies = new Cookies(); - -const removeToken = () => cookies.remove("token", { path: "/" }); +const removeToken = () => Cookies.remove("token", { path: "/" }); export { removeToken }; From d95815d4aae63297b71130051d249fdaea951da6 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Tue, 27 May 2025 03:40:06 +0330 Subject: [PATCH 064/124] install and handle casle & prevent page dashboard & handle register and code verfication & get data in clinics page --- app/clinics/page.js | 19 ++++- app/dashboard/page.js | 11 ++- components/clinics/index.js | 14 +--- components/clinics/list/ItemClinic.js | 30 +++---- components/clinics/list/index.js | 4 +- .../userAccount/components/AddBtn.js | 17 ++++ .../dashboard/userAccount/components/Head.js | 12 +-- .../dashboard/userAccount/content/index.js | 13 +-- .../userAccount/tabs/allergies/index.js | 5 +- .../userAccount/tabs/disease/index.js | 31 ++++--- .../userAccount/tabs/familyHistory/index.js | 5 +- .../userAccount/tabs/medications/index.js | 5 +- .../userAccount/tabs/relatives/index.js | 21 ++--- .../userAccount/tabs/surgeries/index.js | 5 +- components/doctors/modal/Content.js | 2 - components/icons/UpdateList.js | 34 ++++++++ components/register/LogInPage.js | 31 +------ components/register/index.js | 11 ++- .../register/verificationPage/SendReq.js | 83 ++++++++++++++++++ components/register/verificationPage/index.js | 84 ++++--------------- data/profile_other.json | 2 - lib/ability.js | 16 ++++ lib/auth.js | 8 ++ package-lock.json | 59 +++++++++++++ package.json | 2 + services/api.js | 3 - services/response.js | 15 ++-- 27 files changed, 336 insertions(+), 206 deletions(-) create mode 100644 components/dashboard/userAccount/components/AddBtn.js create mode 100644 components/icons/UpdateList.js create mode 100644 components/register/verificationPage/SendReq.js create mode 100644 lib/ability.js create mode 100644 lib/auth.js diff --git a/app/clinics/page.js b/app/clinics/page.js index 588d600..4074d50 100644 --- a/app/clinics/page.js +++ b/app/clinics/page.js @@ -1,15 +1,26 @@ +// app/clinics/page.js import ClinicsPage from "@/components/clinics"; import Layout from "@/components/layout/StLayout"; import { getStateInfo } from "@/lib/getStateInfo"; +import axios from "axios"; -function Clinics() { +export default async function Clinics() { const { matchedCity, matchedState } = getStateInfo(); + const response = await axios.get( + "https://back-dev.clinic-pro.ir/api/v1/clinics?page=1&limit=10" + ); + + const clinics = response.data.$data; + console.log(clinics); + return ( - + ); } - -export default Clinics; diff --git a/app/dashboard/page.js b/app/dashboard/page.js index fe89cd2..bf90a72 100644 --- a/app/dashboard/page.js +++ b/app/dashboard/page.js @@ -1,8 +1,17 @@ import Content from "@/components/dashboard/Content"; +import { defineAbilitiesFor } from "@/lib/ability"; +import { getUser } from "@/lib/auth"; import { getStateInfo } from "@/lib/getStateInfo"; +import { redirect } from "next/navigation"; -function UserAccount() { +async function UserAccount() { const { matchedCity } = getStateInfo(); + const user = await getUser(); + const ability = defineAbilitiesFor(user); + + if (!ability.can("access", "Dashboard")) { + return redirect("/"); + } return ; } diff --git a/components/clinics/index.js b/components/clinics/index.js index 498c7a9..7d0faa5 100644 --- a/components/clinics/index.js +++ b/components/clinics/index.js @@ -1,15 +1,13 @@ "use client"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import List from "./list"; import { searchOnList } from "@/helper"; import SearchBar from "./head/SearchBar"; -import clinics from "@/data/clinics.json"; import HeadPageList from "@/app/component/head"; -function ClinicsPage({ matchedCity, matchedState }) { - const [loading, setLoading] = useState(true); +function ClinicsPage({ clinics, matchedCity, matchedState }) { const [filteredClinics, setFilteredClinics] = useState(clinics); const [selected, setSelected] = useState({ @@ -17,12 +15,6 @@ function ClinicsPage({ matchedCity, matchedState }) { city: matchedCity?.name || "", }); - useEffect(() => { - setTimeout(() => { - setLoading(false); - }, 2000); - }, []); - const handleSearch = (value) => { const searchOnName = searchOnList(clinics, value, "title"); const searchOnLocation = searchOnList(searchOnName, selected.city, "city"); @@ -42,7 +34,7 @@ function ClinicsPage({ matchedCity, matchedState }) { handleSearch={handleSearch} /> - +
    ); } diff --git a/components/clinics/list/ItemClinic.js b/components/clinics/list/ItemClinic.js index 410875d..0145857 100644 --- a/components/clinics/list/ItemClinic.js +++ b/components/clinics/list/ItemClinic.js @@ -7,20 +7,25 @@ import { Button } from "@mui/material"; import Image from "next/image"; import Link from "next/link"; -function ItemClinic({ data, loading }) { +function ItemClinic({ data }) { return (
  • - - img clinic + + img clinic
    - +

    - {data.title} + {data.label}

    - +

    {data.doctors} پزشک

    @@ -30,7 +35,7 @@ function ItemClinic({ data, loading }) {
    - +

    {data.location}

    @@ -38,7 +43,7 @@ function ItemClinic({ data, loading }) {
    - +

    ساعت کاری: {data.hours_of_work}

    @@ -47,13 +52,8 @@ function ItemClinic({ data, loading }) {
    {/* Arrow */} - - diff --git a/components/clinics/list/index.js b/components/clinics/list/index.js index ac30067..c61e109 100644 --- a/components/clinics/list/index.js +++ b/components/clinics/list/index.js @@ -2,7 +2,7 @@ import Pageguide from "@/app/component/Pageguide"; import ItemClinic from "./ItemClinic"; import Pagination from "@/app/component/Pagination"; -function List({ loading, selected, clinics }) { +function List({ selected, clinics }) { const listPage = ["کلینیک ها", selected?.city || ""]; return ( @@ -18,7 +18,7 @@ function List({ loading, selected, clinics }) { gap-y-[16px] sm:gap-y-[24px] md:gap-y-[32px] lg:gap-y-[40px] mt-6" > {clinics.map((item) => ( - + ))} )} diff --git a/components/dashboard/userAccount/components/AddBtn.js b/components/dashboard/userAccount/components/AddBtn.js new file mode 100644 index 0000000..0208d72 --- /dev/null +++ b/components/dashboard/userAccount/components/AddBtn.js @@ -0,0 +1,17 @@ +import PlusB from "@/components/icons/PlusB"; +import { Button } from "@mui/material"; +import React from "react"; + +function AddBtn() { + return ( + + ); +} + +export default AddBtn; diff --git a/components/dashboard/userAccount/components/Head.js b/components/dashboard/userAccount/components/Head.js index afd8d4c..f3889da 100644 --- a/components/dashboard/userAccount/components/Head.js +++ b/components/dashboard/userAccount/components/Head.js @@ -1,20 +1,12 @@ -import PlusB from "@/components/icons/PlusB"; -import { Button } from "@mui/material"; import React from "react"; -function Head({ text }) { +function Head({ text, children }) { return (

    {text}

    - + {children}
    ); } diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js index 65675fe..9fc6edf 100644 --- a/components/dashboard/userAccount/content/index.js +++ b/components/dashboard/userAccount/content/index.js @@ -36,8 +36,7 @@ function ContentTabs({ const [tab, setTab] = useState(0); const data = profileData[0]; - const handleChange = (event, newValue) => { - // setValue(newValue); + const handleChange = (_, newValue) => { setTab(newValue); }; @@ -48,16 +47,6 @@ function ContentTabs({ }, []); const components = [ - // , - // , - // , - // , - // , - // , , , , diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/tabs/allergies/index.js index 83ce10d..1851dc9 100644 --- a/components/dashboard/userAccount/tabs/allergies/index.js +++ b/components/dashboard/userAccount/tabs/allergies/index.js @@ -4,6 +4,7 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; +import AddBtn from "../../components/AddBtn"; function Allergies({ data }) { const tableHead = ["ردیف", "ماده آلرژی‌زا", "واکنش", "شدت", ""]; @@ -11,7 +12,9 @@ function Allergies({ data }) { return (
    - + + + - + +
    + + +
    + - {/* {row.status} */} - -
    - - -
    -
    ))}
    diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/tabs/familyHistory/index.js index 1ea29ed..40793e4 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/index.js +++ b/components/dashboard/userAccount/tabs/familyHistory/index.js @@ -4,6 +4,7 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; +import AddBtn from "../../components/AddBtn"; function FamilyHistory({ data }) { const tableHead = ["ردیف", "بیماری", "نسبت خانوادگی", ""]; @@ -11,7 +12,9 @@ function FamilyHistory({ data }) { return (
    - + + + - + + + - + + + - - {row.contact.email} - - - - -
    - - {(row.contact.address || "").substring(0, 15)} - {row.contact.address?.length > 15 ? "…" : ""} - -
    -
    + {row.contact.address}
    - + + + { const current = new URLSearchParams(window.location.search); diff --git a/components/icons/UpdateList.js b/components/icons/UpdateList.js new file mode 100644 index 0000000..2f4e9d9 --- /dev/null +++ b/components/icons/UpdateList.js @@ -0,0 +1,34 @@ +function UpdateList() { + return ( + + + + + + ); +} + +export default UpdateList; diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index c52e775..1b7fc7d 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -6,11 +6,10 @@ import { } from "@/helper"; import { request } from "@/services/response"; import { InputAdornment, Button } from "@mui/material"; -import axios from "axios"; import Link from "next/link"; import { useState } from "react"; -function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { +function LogInPage({ setIsSendMsg, num, setNum, setUuid, matchedCity }) { const [error, setError] = useState({ valid: true, text: "" }); const [loading, setLoading] = useState(false); @@ -18,39 +17,17 @@ function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { const formatted = formatPhoneNumber(val); const checkedNum = validatePhoneNumber(formatted); setError(checkedNum); - const digits = formatted.replace(/\D/g, ""); setNum(formatted); - // if (digits.length === 9) { - // handleReq(); - // } }; const handleReq = async () => { - // try { - // const res = await axios.post( - // "https://back-dev.clinic-pro.ir/api/v1/user/auth?_format=json", - // { mobile_number: changeNumToDefault(num) }, - // { - // withCredentials: true, - // headers: { - // "Content-Type": "application/json", - // }, - // } - // ); - // console.log(res); - // if (res.data) { - // setIsSendMsg(true); - // } - // } catch (err) { - // console.error("Request failed:", err); - // } setLoading(true); request - .sendCode(changeNumToDefault(num)) + .sendCode(changeNumToDefault(num), "") .then((response) => { setLoading(false); - if (response) { - // setNum(""); + if (response.uuid) { setIsSendMsg(true); + setUuid(response.uuid); } }) .catch(() => { diff --git a/components/register/index.js b/components/register/index.js index 3c58af3..90ecc46 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -7,23 +7,26 @@ import LayoutRegister from "./LayoutRegister"; function RegisterPage({ matchedCity }) { const [isSendMsg, setIsSendMsg] = useState(false); + const [uuid, setUuid] = useState(""); const [num, setNum] = useState(""); return ( {isSendMsg ? ( ) : ( )} diff --git a/components/register/verificationPage/SendReq.js b/components/register/verificationPage/SendReq.js new file mode 100644 index 0000000..a9dd7fe --- /dev/null +++ b/components/register/verificationPage/SendReq.js @@ -0,0 +1,83 @@ +import { Button } from "@mui/material"; +import { useRouter } from "next/navigation"; +import { request } from "@/services/response"; +import Cookies from "js-cookie"; + +function SendReq({ + loading, + setLoading, + code, + setIsSendMsg, + setStep, + setIsError, + uuid, +}) { + const router = useRouter(); + + const handleSetCookie = (response) => { + const accessTokenExpires = new Date(); + accessTokenExpires.setSeconds( + accessTokenExpires.getSeconds() + response.expires_in + ); + const refreshTokenExpires = new Date(); + refreshTokenExpires.setDate(refreshTokenExpires.getDate() + 30); + + Cookies.set("access_token", response.access_token, { + expires: accessTokenExpires, + path: "/", + secure: true, + sameSite: "strict", + }); + + Cookies.set("refresh_token", response.refresh_token, { + expires: refreshTokenExpires, + path: "/", + secure: true, + sameSite: "strict", + }); + }; + + const handleReq = async () => { + setLoading(true); + request + .getToken( + "mobile", + process.env.NEXT_PUBLIC_CLIENT_ID, + process.env.NEXT_PUBLIC_CLIENT_SECRET, + uuid, + code.join("") + ) + .then((response) => { + setLoading(false); + if (response.access_token) { + router.replace("/"); + handleSetCookie(response); + } + }) + .catch(() => { + setLoading(false); + }); + }; + + return ( + + ); +} + +export default SendReq; diff --git a/components/register/verificationPage/index.js b/components/register/verificationPage/index.js index 0b78b89..cdb4ef3 100644 --- a/components/register/verificationPage/index.js +++ b/components/register/verificationPage/index.js @@ -1,25 +1,25 @@ +"use client"; + import { useRef, useState } from "react"; import { Button } from "@mui/material"; import OTPForm from "../element/OTPForm"; import EditLogin from "../../icons/EditLogin"; import ArrowRightS from "../../icons/ArrowRightS"; -import { request } from "@/services/response"; -import { changeNumToDefault } from "@/helper"; import Recode from "./Recode"; +import SendReq from "./SendReq"; -function VerificationPage({ setIsSendMsg, link, num, setStep }) { +function VerificationPage({ setIsSendMsg, uuid, link, num, setStep }) { const retryIcon = useRef(); const [timer, setTimer] = useState(0); const [loading, setLoading] = useState(false); - const [code, setCode] = useState(["", "", "", ""]); + const [code, setCode] = useState(["", "", "", "", ""]); const [isError, setIsError] = useState(false); const inputRefs = Array.from({ length: 5 }, () => useRef()); const handleChange = (index, val) => { const newCode = [...code]; - if (val === "backspace") { newCode[index] = ""; setCode(newCode); @@ -28,64 +28,16 @@ function VerificationPage({ setIsSendMsg, link, num, setStep }) { } return; } - newCode[index] = val; - - if (newCode.join("").length === 4 && isError) { + if (newCode.join("").length === 5 && isError) { setIsError(false); } - // if (newCode.join("").length === 4) { - // handleReq(); - // } - setCode(newCode); - if (val && index < inputRefs.length - 1) { inputRefs[index + 1].current?.focus(); } }; - const handleReq = async () => { - // const formData = new URLSearchParams(); - // formData.append("grant_type", "mobile"); - // formData.append("client_id", process.env.NEXT_PUBLIC_CLIENT_ID); - // formData.append("client_secret", process.env.NEXT_PUBLIC_CLIENT_SECRET); - // formData.append("mobile_number", changeNumToDefault(num)); - // formData.append("code", code.join("")); - - // try { - // const res = await axios.post( - // "https://back-dev.clinic-pro.ir/oauth/token", - // formData, - // { - // withCredentials: true, - // headers: { - // "Content-Type": "application/x-www-form-urlencoded", - // }, - // } - // ); - // console.log(res); - // } catch (err) { - // console.error("Request failed:", err); - // } - - setLoading(true); - request - .getToken( - "mobile", - process.env.NEXT_PUBLIC_CLIENT_ID, - process.env.NEXT_PUBLIC_CLIENT_SECRET, - changeNumToDefault(num), - code.join("") - ) - .then((response) => { - setLoading(false); - }) - .catch((err) => { - setLoading(false); - }); - }; - return (
    { - setIsSendMsg && setIsSendMsg(true); - setStep && setStep((prev) => prev + 1); - if (code.join("").length !== 4) { - setIsError(true); - } else { - handleReq(); - } - }} - className="!rounded-[8px] !bg-[#5559CE]" - > - تایید - + setStep={setStep} + setIsError={setIsError} + setLoading={setLoading} + setIsSendMsg={setIsSendMsg} + />
    ); } diff --git a/data/profile_other.json b/data/profile_other.json index 4d2a579..64fcf0a 100644 --- a/data/profile_other.json +++ b/data/profile_other.json @@ -208,7 +208,6 @@ "relation": "پسر عمو", "contact": { "phone": "+989121234567", - "email": "father@example.com", "address": "تهران، خیابان انقلاب، پلاک 12" } }, @@ -217,7 +216,6 @@ "relation": "خواهر", "contact": { "phone": "+989121234567", - "email": "father@example.com", "address": "تهران، خیابان انقلاب، پلاک 12" } } diff --git a/lib/ability.js b/lib/ability.js new file mode 100644 index 0000000..b4a3fa0 --- /dev/null +++ b/lib/ability.js @@ -0,0 +1,16 @@ +import { AbilityBuilder, createMongoAbility } from "@casl/ability"; + +export function defineAbilitiesFor(user) { + const { can, cannot, build } = new AbilityBuilder(createMongoAbility); + + if (user?.role === "admin") { + can("access", "Dashboard"); + } else if (user?.role === "manager") { + can("access", "Dashboard"); + } else { + can("access", "Dashboard"); + // cannot("access", "Dashboard"); + } + + return build(); +} diff --git a/lib/auth.js b/lib/auth.js new file mode 100644 index 0000000..40df985 --- /dev/null +++ b/lib/auth.js @@ -0,0 +1,8 @@ +import { cookies } from "next/headers"; + +export async function getUser() { + const cookieStore = cookies(); + const raw = cookieStore.get("user"); + if (!raw) return null; + return JSON.parse(raw.value); +} diff --git a/package-lock.json b/package-lock.json index 947ff0c..9de7c18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,8 @@ "name": "nobat724", "version": "0.1.0", "dependencies": { + "@casl/ability": "^6.7.3", + "@casl/react": "^5.0.0", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", @@ -2102,6 +2104,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "license": "MIT" }, + "node_modules/@casl/ability": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-6.7.3.tgz", + "integrity": "sha512-A4L28Ko+phJAsTDhRjzCOZWECQWN2jzZnJPnROWWHjJpyMq1h7h9ZqjwS2WbIUa3Z474X1ZPSgW0f1PboZGC0A==", + "license": "MIT", + "dependencies": { + "@ucast/mongo2js": "^1.3.0" + }, + "funding": { + "url": "https://github.com/stalniy/casl/blob/master/BACKERS.md" + } + }, + "node_modules/@casl/react": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@casl/react/-/react-5.0.0.tgz", + "integrity": "sha512-jiwr6uOBnQA7h0gs+RJIbFVF24Dw6JLiUPL4pfU0OEjWSJFCcYBz6RPU21XNciWL6xwFDOds81cHosuElxfdmw==", + "license": "MIT", + "peerDependencies": { + "@casl/ability": "^4.0.0 || ^5.1.0 || ^6.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@csstools/normalize.css": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", @@ -6097,6 +6121,41 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ucast/core": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@ucast/core/-/core-1.10.2.tgz", + "integrity": "sha512-ons5CwXZ/51wrUPfoduC+cO7AS1/wRb0ybpQJ9RrssossDxVy4t49QxWoWgfBDvVKsz9VXzBk9z0wqTdZ+Cq8g==", + "license": "Apache-2.0" + }, + "node_modules/@ucast/js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@ucast/js/-/js-3.0.4.tgz", + "integrity": "sha512-TgG1aIaCMdcaEyckOZKQozn1hazE0w90SVdlpIJ/er8xVumE11gYAtSbw/LBeUnA4fFnFWTcw3t6reqseeH/4Q==", + "license": "Apache-2.0", + "dependencies": { + "@ucast/core": "^1.0.0" + } + }, + "node_modules/@ucast/mongo": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@ucast/mongo/-/mongo-2.4.3.tgz", + "integrity": "sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==", + "license": "Apache-2.0", + "dependencies": { + "@ucast/core": "^1.4.1" + } + }, + "node_modules/@ucast/mongo2js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ucast/mongo2js/-/mongo2js-1.4.0.tgz", + "integrity": "sha512-vR9RJ3BHlkI3RfKJIZFdVktxWvBCQRiSTeJSWN9NPxP5YJkpfXvcBWAMLwvyJx4HbB+qib5/AlSDEmQiuQyx2w==", + "license": "Apache-2.0", + "dependencies": { + "@ucast/core": "^1.6.1", + "@ucast/js": "^3.0.0", + "@ucast/mongo": "^2.4.0" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", diff --git a/package.json b/package.json index 4891b64..2fdcd99 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "lint": "next lint" }, "dependencies": { + "@casl/ability": "^6.7.3", + "@casl/react": "^5.0.0", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", diff --git a/services/api.js b/services/api.js index 7f2cf92..41b8a49 100644 --- a/services/api.js +++ b/services/api.js @@ -5,7 +5,6 @@ import "react-toastify/dist/ReactToastify.css"; const BASE_URL = process.env.NEXT_PUBLIC_API_URL; const token = Cookies.get("access"); -console.log(token); const api = axios.create({ baseURL: BASE_URL, @@ -17,11 +16,9 @@ const api = axios.create({ api.interceptors.response.use( (response) => { - console.log(response); return response.data; }, (error) => { - console.error(error); return Promise.reject(error); } ); diff --git a/services/response.js b/services/response.js index 4f3e0fa..b55aeb1 100644 --- a/services/response.js +++ b/services/response.js @@ -1,30 +1,31 @@ import api from "./api"; export const request = { - sendCode: (mobile_number) => + sendCode: (mobile, captcha_token) => api.post( - "api/v1/user/auth", - { mobile_number }, + "api/v1/user/send-code", + { + mobile, + captcha_token, + }, { headers: { Authorization: "", - withCredentials: true, }, } ), - getToken: (grant_type, client_id, client_secret, mobile_number, code) => { + getToken: (grant_type, client_id, client_secret, uuid, code) => { const formData = new URLSearchParams(); formData.append("grant_type", grant_type); formData.append("client_id", client_id); formData.append("client_secret", client_secret); - formData.append("mobile_number", mobile_number); + formData.append("uuid", uuid); formData.append("code", code); return api.post("oauth/token", formData, { headers: { "Content-Type": "application/x-www-form-urlencoded", Authorization: "", - withCredentials: true, }, }); }, From 38e243b4c7d5e348de548359173bd3e89e657a8c Mon Sep 17 00:00:00 2001 From: Ehsan Date: Tue, 27 May 2025 22:27:02 +0330 Subject: [PATCH 065/124] change design dashboards all page and search clinics --- components/clinic/components/doctors/index.js | 2 +- components/clinics/head/SearchBar.js | 18 ++++- components/clinics/index.js | 15 ++-- .../dashboard/userAccount/components/Head.js | 4 +- .../userAccount/components/UpdateBtn.js | 16 +++++ .../userAccount/tabs/allergies/index.js | 2 + .../userAccount/tabs/disease/index.js | 16 +---- .../userAccount/tabs/familyHistory/index.js | 2 + .../userAccount/tabs/medications/index.js | 2 + .../userAccount/tabs/relatives/index.js | 2 + .../userAccount/tabs/surgeries/index.js | 2 + components/register/LogInPage.js | 2 +- components/searchHead/SmSearch.js | 71 ------------------- .../searchHead/smSearch/AutoCompleteSearch.js | 54 ++++++++++++++ components/searchHead/smSearch/index.js | 41 +++++++++++ components/specialties/index.js | 2 +- helper/index.js | 2 +- 17 files changed, 155 insertions(+), 98 deletions(-) create mode 100644 components/dashboard/userAccount/components/UpdateBtn.js delete mode 100644 components/searchHead/SmSearch.js create mode 100644 components/searchHead/smSearch/AutoCompleteSearch.js create mode 100644 components/searchHead/smSearch/index.js diff --git a/components/clinic/components/doctors/index.js b/components/clinic/components/doctors/index.js index ea4374e..b0f432f 100644 --- a/components/clinic/components/doctors/index.js +++ b/components/clinic/components/doctors/index.js @@ -1,6 +1,6 @@ "use client"; -import SmSearch from "@/components/searchHead/SmSearch"; +import SmSearch from "@/components/searchHead/smSearch"; import List from "./List"; import { useState } from "react"; import { searchOnList } from "@/helper"; diff --git a/components/clinics/head/SearchBar.js b/components/clinics/head/SearchBar.js index 20f14ba..2b6bd3c 100644 --- a/components/clinics/head/SearchBar.js +++ b/components/clinics/head/SearchBar.js @@ -3,8 +3,15 @@ import SearchD from "@/components/icons/SearchD"; import ModalSearchCity from "@/app/component/modalSearchCity"; import { useState } from "react"; import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter"; +import AutoCompleteSearch from "@/components/searchHead/smSearch/AutoCompleteSearch"; -function SearchBar({ selected, setSelected, state, handleSearch }) { +function SearchBar({ + selected, + setSelected, + specialties, + state, + handleSearch, +}) { const [open, setOpen] = useState(false); return ( @@ -25,7 +32,12 @@ function SearchBar({ selected, setSelected, state, handleSearch }) { > - + {/* handleSearch(e.target.value)} InputProps={{ @@ -40,7 +52,7 @@ function SearchBar({ selected, setSelected, state, handleSearch }) { placeholder="جستجوی تخصص" dir="rtl" className={`!shadow-none !w-full !min-w-3 !px-5 !h-full bg-[#FAFAFA] !text-[14px] md:!text-[16px] lg:!min-w-[50%] !rounded-0 !font-normal !text-[#6C757D]`} - /> + /> */} + ); +} + +export default UpdateBtn; diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/tabs/allergies/index.js index 1851dc9..fa9975c 100644 --- a/components/dashboard/userAccount/tabs/allergies/index.js +++ b/components/dashboard/userAccount/tabs/allergies/index.js @@ -5,6 +5,7 @@ import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import AddBtn from "../../components/AddBtn"; +import UpdateBtn from "../../components/UpdateBtn"; function Allergies({ data }) { const tableHead = ["ردیف", "ماده آلرژی‌زا", "واکنش", "شدت", ""]; @@ -13,6 +14,7 @@ function Allergies({ data }) { return (
    + -
    - - -
    + + + + + - option.name} - inputValue={inputValue} - className="!w-full" - onInputChange={(event, newInputValue) => { - setInputValue(newInputValue); - handleSearch(newInputValue); - }} - onChange={(event, newValue) => { - setSelectedOption(newValue); - handleSearch(newValue ? newValue.name : ""); - }} - renderInput={(params) => ( - - )} - /> - - - ); -} - -export default SmSearch; diff --git a/components/searchHead/smSearch/AutoCompleteSearch.js b/components/searchHead/smSearch/AutoCompleteSearch.js new file mode 100644 index 0000000..33596a3 --- /dev/null +++ b/components/searchHead/smSearch/AutoCompleteSearch.js @@ -0,0 +1,54 @@ +import { Autocomplete, TextField } from "@mui/material"; + +function AutoCompleteSearch({ + data, + inputValue, + placeholder, + handleSearch, + setInputValue, + setSelectedOption, +}) { + return ( + option.name} + inputValue={inputValue} + className="!w-full" + onInputChange={(event, newInputValue) => { + setInputValue && setInputValue(newInputValue); + handleSearch(newInputValue); + }} + onChange={(event, newValue) => { + setSelectedOption(newValue); + handleSearch(newValue ? newValue.name : ""); + }} + renderInput={(params) => ( + + )} + /> + ); +} + +export default AutoCompleteSearch; diff --git a/components/searchHead/smSearch/index.js b/components/searchHead/smSearch/index.js new file mode 100644 index 0000000..50ba3d2 --- /dev/null +++ b/components/searchHead/smSearch/index.js @@ -0,0 +1,41 @@ +import SearchD from "@/components/icons/SearchD"; +import { Button, ButtonGroup } from "@mui/material"; +import { useState } from "react"; +import AutoCompleteSearch from "./AutoCompleteSearch"; + +function SmSearch({ placeholder, handleSearch, data }) { + const [inputValue, setInputValue] = useState(""); + const [selectedOption, setSelectedOption] = useState(null); + + return ( + + + + + ); +} + +export default SmSearch; diff --git a/components/specialties/index.js b/components/specialties/index.js index cdc776f..524d636 100644 --- a/components/specialties/index.js +++ b/components/specialties/index.js @@ -2,7 +2,7 @@ import { useState } from "react"; import List from "./list"; -import SmSearch from "../searchHead/SmSearch"; +import SmSearch from "../searchHead/smSearch"; import HeadPageList from "@/app/component/head"; import specialtiesData from "@/data/specialties.json"; import { searchOnList } from "@/helper"; diff --git a/helper/index.js b/helper/index.js index 4571021..e341cce 100644 --- a/helper/index.js +++ b/helper/index.js @@ -142,7 +142,7 @@ export function validatePhoneNumber(input) { export const searchOnList = (list, value, name) => { let newList = list; - newList = list.filter((item) => item[name].toLowerCase().includes(value)); + newList = list.filter((item) => item[name]?.toLowerCase()?.includes(value)); return newList; }; From 5e2a99474b143b24a75fbd4490f81553e47b7c69 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 28 May 2025 08:24:53 +0330 Subject: [PATCH 066/124] remove enamd --- components/layout/footer/LogoNamad.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/layout/footer/LogoNamad.js b/components/layout/footer/LogoNamad.js index 4be3ea8..189c566 100644 --- a/components/layout/footer/LogoNamad.js +++ b/components/layout/footer/LogoNamad.js @@ -1,9 +1,9 @@ import Image from "next/image"; const Namads = [ - "/assets/images/footer-etehadie.png", - "/assets/images/footer-r.png", - "/assets/images/footer-namad.png", + // "/assets/images/footer-etehadie.png", + // "/assets/images/footer-r.png", + // "/assets/images/footer-namad.png", ]; function LogoNamad() { From 969a14d9b603fd5abc19a847ecab49445444e9a4 Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 28 May 2025 08:55:58 +0330 Subject: [PATCH 067/124] Add docker compose --- docker-compose.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..da5d43b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,23 @@ +# docker-compose.yml +version: "3.8" + +services: + frontend: + build: + context: . + dockerfile: dockerfile + args: + - NODE_ENV=production + - NEXT_TELEMETRY_DISABLED=1 + - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} + - NEXT_PUBLIC_CLIENT_ID=${NEXT_PUBLIC_CLIENT_ID} + - NEXT_PUBLIC_CLIENT_SECRET=${NEXT_PUBLIC_CLIENT_SECRET} + restart: unless-stopped + container_name: nobat724-frontend + ports: + - "3000:3000" + environment: + - NODE_ENV=production + - NEXT_TELEMETRY_DISABLED=1 + - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} + - NEXT_PUBLIC_CLIENT_ID=${NEXT_PUBLIC_CLIENT_ID} From 9929eeffd012d8de12a0c08539c1a89e4ba4cbae Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 28 May 2025 09:05:50 +0330 Subject: [PATCH 068/124] fix docker compose --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index da5d43b..fa18f5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: frontend: build: context: . - dockerfile: dockerfile + dockerfile: Dockerfile args: - NODE_ENV=production - NEXT_TELEMETRY_DISABLED=1 From c8e8048d6c01c0992b8bd78e99fd07b06543f35a Mon Sep 17 00:00:00 2001 From: hamed Hosseini Date: Wed, 28 May 2025 09:21:33 +0330 Subject: [PATCH 069/124] add port --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index fa18f5a..2a8e54a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: restart: unless-stopped container_name: nobat724-frontend ports: - - "3000:3000" + - "3001:3000" environment: - NODE_ENV=production - NEXT_TELEMETRY_DISABLED=1 From e12e6c171c0eda27b0d0080d5145c58e3095058f Mon Sep 17 00:00:00 2001 From: Ehsan Date: Thu, 29 May 2025 05:07:11 +0330 Subject: [PATCH 070/124] handle register & retry code & edit phone number & fix bug select city and state & add basic modal to all tabs in dashboard --- app/clinics/page.js | 1 - app/component/element/AutoCompleteSelect.js | 4 +- app/component/modalSearchCity/index.js | 4 +- .../userAccount/components/AddBtn.js | 3 +- .../userAccount/tabs/allergies/index.js | 8 ++-- .../tabs/allergies/modal/Content.js | 27 +++++++++++ .../userAccount/tabs/allergies/modal/index.js | 45 +++++++++++++++++++ .../userAccount/tabs/familyHistory/index.js | 8 ++-- .../tabs/familyHistory/modal/index.js | 44 ++++++++++++++++++ .../userAccount/tabs/medications/index.js | 8 ++-- .../tabs/medications/modal/index.js | 44 ++++++++++++++++++ .../userAccount/tabs/relatives/index.js | 8 ++-- .../userAccount/tabs/relatives/modal/index.js | 44 ++++++++++++++++++ .../userAccount/tabs/surgeries/index.js | 8 ++-- .../userAccount/tabs/surgeries/modal/index.js | 44 ++++++++++++++++++ components/register/index.js | 1 + .../register/verificationPage/Recode.js | 36 ++++++++++++--- components/register/verificationPage/index.js | 10 ++++- 18 files changed, 313 insertions(+), 34 deletions(-) create mode 100644 components/dashboard/userAccount/tabs/allergies/modal/Content.js create mode 100644 components/dashboard/userAccount/tabs/allergies/modal/index.js create mode 100644 components/dashboard/userAccount/tabs/familyHistory/modal/index.js create mode 100644 components/dashboard/userAccount/tabs/medications/modal/index.js create mode 100644 components/dashboard/userAccount/tabs/relatives/modal/index.js create mode 100644 components/dashboard/userAccount/tabs/surgeries/modal/index.js diff --git a/app/clinics/page.js b/app/clinics/page.js index 4074d50..6250baa 100644 --- a/app/clinics/page.js +++ b/app/clinics/page.js @@ -12,7 +12,6 @@ export default async function Clinics() { ); const clinics = response.data.$data; - console.log(clinics); return ( diff --git a/app/component/element/AutoCompleteSelect.js b/app/component/element/AutoCompleteSelect.js index 202e9fe..53a34ef 100644 --- a/app/component/element/AutoCompleteSelect.js +++ b/app/component/element/AutoCompleteSelect.js @@ -11,6 +11,7 @@ function AutoCompleteSelect({ disabled = false, listboxProps, sendAll, + name, }) { return ( { if (provinceSelected) { const selectedState = states.find( - (state) => state.label === provinceSelected, + (state) => state.label === provinceSelected ); if (selectedState) { const stateId = selectedState.id; const filteredCities = cities.filter( - (city) => city.province_id === stateId, + (city) => city.province_id === stateId ); setFilteredCities(filteredCities); } diff --git a/components/dashboard/userAccount/components/AddBtn.js b/components/dashboard/userAccount/components/AddBtn.js index 0208d72..285cd8b 100644 --- a/components/dashboard/userAccount/components/AddBtn.js +++ b/components/dashboard/userAccount/components/AddBtn.js @@ -2,10 +2,11 @@ import PlusB from "@/components/icons/PlusB"; import { Button } from "@mui/material"; import React from "react"; -function AddBtn() { +function AddBtn({ handleOpen }) { return ( +
    + + + ); +} + +export default ModalAddAlergie; diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/tabs/familyHistory/index.js index bdb4acc..3e7d064 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/index.js +++ b/components/dashboard/userAccount/tabs/familyHistory/index.js @@ -4,18 +4,18 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; -import AddBtn from "../../components/AddBtn"; -import UpdateBtn from "../../components/UpdateBtn"; +import { useState } from "react"; +import ModalAddHistory from "./modal"; function FamilyHistory({ data }) { const tableHead = ["ردیف", "بیماری", "نسبت خانوادگی", ""]; const centerTable = [0]; + const [open, setOpen] = useState(false); return (
    - - + setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + {/* Button Modal */} + <> + + + + + {/* Content Modal */} + +
    +
    +
    +

    اضافه کردن سابقه خانوادگی بیماری

    +
    + {/* */} +
    + +
    +
    + + ); +} + +export default ModalAddHistory; diff --git a/components/dashboard/userAccount/tabs/medications/index.js b/components/dashboard/userAccount/tabs/medications/index.js index b75e9cf..c4c25d1 100644 --- a/components/dashboard/userAccount/tabs/medications/index.js +++ b/components/dashboard/userAccount/tabs/medications/index.js @@ -4,18 +4,18 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; -import AddBtn from "../../components/AddBtn"; -import UpdateBtn from "../../components/UpdateBtn"; +import ModalAddMedications from "./modal"; +import { useState } from "react"; function Medications({ data }) { const tableHead = ["ردیف", "نام دارو", "دوز مصرفی", "تعداد و زمان مصرف", ""]; const centerTable = [0]; + const [open, setOpen] = useState(false); return (
    - - + setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + {/* Button Modal */} + <> + + + + + {/* Content Modal */} + +
    +
    +
    +

    اضافه کردن دارو های مصرفی

    +
    + {/* */} +
    + +
    +
    + + ); +} + +export default ModalAddMedications; diff --git a/components/dashboard/userAccount/tabs/relatives/index.js b/components/dashboard/userAccount/tabs/relatives/index.js index 3b26963..412b5ba 100644 --- a/components/dashboard/userAccount/tabs/relatives/index.js +++ b/components/dashboard/userAccount/tabs/relatives/index.js @@ -4,18 +4,18 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow, Tooltip } from "@mui/material"; import Head from "../../components/Head"; -import AddBtn from "../../components/AddBtn"; -import UpdateBtn from "../../components/UpdateBtn"; +import ModalAddRelatives from "./modal"; +import { useState } from "react"; function Relatives({ data }) { const tableHead = ["ردیف", "نام", "نسبت", "شماره تماس", "آدرس", ""]; const centerTable = [0]; + const [open, setOpen] = useState(false); return (
    - - + setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + {/* Button Modal */} + <> + + + + + {/* Content Modal */} + +
    +
    +
    +

    اضافه کردن بستگان

    +
    + {/* */} +
    + +
    +
    + + ); +} + +export default ModalAddRelatives; diff --git a/components/dashboard/userAccount/tabs/surgeries/index.js b/components/dashboard/userAccount/tabs/surgeries/index.js index 66590ef..799e30e 100644 --- a/components/dashboard/userAccount/tabs/surgeries/index.js +++ b/components/dashboard/userAccount/tabs/surgeries/index.js @@ -4,8 +4,8 @@ import EditB from "@/components/icons/EditB"; import TrashB from "@/components/icons/TrashB"; import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; -import AddBtn from "../../components/AddBtn"; -import UpdateBtn from "../../components/UpdateBtn"; +import ModalAddSurgeries from "./modal"; +import { useState } from "react"; function Surgeries({ data }) { const tableHead = [ @@ -16,12 +16,12 @@ function Surgeries({ data }) { "", ]; const centerTable = [0, 3]; + const [open, setOpen] = useState(false); return (
    - - + setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + {/* Button Modal */} + <> + + + + + {/* Content Modal */} + +
    +
    +
    +

    اضافه کردن جراحی

    +
    + {/* */} +
    + +
    +
    + + ); +} + +export default ModalAddSurgeries; diff --git a/components/register/index.js b/components/register/index.js index 90ecc46..79ae780 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -18,6 +18,7 @@ function RegisterPage({ matchedCity }) { num={num} uuid={uuid} setStep={false} + setUuid={setUuid} setIsSendMsg={setIsSendMsg} /> ) : ( diff --git a/components/register/verificationPage/Recode.js b/components/register/verificationPage/Recode.js index 0e81cb3..0d8dcf8 100644 --- a/components/register/verificationPage/Recode.js +++ b/components/register/verificationPage/Recode.js @@ -1,8 +1,10 @@ import RetryLogin from "@/components/icons/RetryLogin"; +import { changeNumToDefault } from "@/helper"; +import { request } from "@/services/response"; import { Button } from "@mui/material"; const time_resend_code = 120; -function Recode({ retryIcon, timer, setTimer }) { +function Recode({ retryIcon, timer, setUuid, num, setTimer }) { const handleTimer = () => { setTimer("loading"); setTimeout(() => { @@ -17,18 +19,38 @@ function Recode({ retryIcon, timer, setTimer }) { }, 1000); }; + const rotateIcon = () => { + retryIcon.current.classList.add("retry-icon"); + setTimeout(() => { + retryIcon.current && retryIcon.current.classList.remove("retry-icon"); + }, 1000); + }; + + const handleReq = () => { + rotateIcon(); + const interval = setInterval(() => { + rotateIcon(); + }, 1200); + request + .sendCode(changeNumToDefault(num), "") + .then((response) => { + clearInterval(interval); + if (response.uuid) { + setUuid(response.uuid); + handleTimer(); + } + }) + .catch(() => clearInterval(interval)); + }; + return ( - +
    Date: Fri, 30 May 2025 02:22:10 +0330 Subject: [PATCH 071/124] design and handle modal add, edit and delete in all tabs dashboard & change list & update data profile_other --- app/component/Field.js | 19 +++- app/component/element/AutoSelector.js | 96 +++++++++++++++++++ .../components/modal/ModalDeleteItem.js | 60 ++++++++++++ .../components/modal/ModalEditItem.js | 76 +++++++++++++++ .../dashboard/userAccount/content/HeadTab.js | 2 - .../dashboard/userAccount/content/index.js | 51 ++++++---- .../sidebars/turns/isTurnsDetails/index.js | 12 +-- .../tabs/allergies/ItemAllergie.js | 64 +++++++++++++ .../userAccount/tabs/allergies/index.js | 82 ++++++---------- .../tabs/allergies/modal/Content.js | 37 +++++-- .../userAccount/tabs/allergies/modal/index.js | 30 +++++- .../userAccount/tabs/disease/index.js | 11 ++- .../tabs/familyHistory/ItemHistory.js | 65 +++++++++++++ .../userAccount/tabs/familyHistory/index.js | 77 ++++++--------- .../tabs/familyHistory/modal/Content.js | 34 +++++++ .../tabs/familyHistory/modal/index.js | 25 ++++- .../tabs/medications/ItemMedication.js | 71 ++++++++++++++ .../userAccount/tabs/medications/index.js | 82 ++++++---------- .../tabs/medications/modal/Content.js | 44 +++++++++ .../tabs/medications/modal/index.js | 27 +++++- .../tabs/relatives/ItemRelatives.js | 71 ++++++++++++++ .../userAccount/tabs/relatives/index.js | 86 ++++++----------- .../tabs/relatives/modal/Content.js | 55 +++++++++++ .../userAccount/tabs/relatives/modal/index.js | 42 +++++++- .../tabs/surgeries/ItemSurgeries.js | 70 ++++++++++++++ .../userAccount/tabs/surgeries/index.js | 79 +++++---------- .../tabs/surgeries/modal/Content.js | 50 ++++++++++ .../userAccount/tabs/surgeries/modal/index.js | 27 +++++- 28 files changed, 1108 insertions(+), 337 deletions(-) create mode 100644 app/component/element/AutoSelector.js create mode 100644 components/dashboard/userAccount/components/modal/ModalDeleteItem.js create mode 100644 components/dashboard/userAccount/components/modal/ModalEditItem.js create mode 100644 components/dashboard/userAccount/tabs/allergies/ItemAllergie.js create mode 100644 components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js create mode 100644 components/dashboard/userAccount/tabs/familyHistory/modal/Content.js create mode 100644 components/dashboard/userAccount/tabs/medications/ItemMedication.js create mode 100644 components/dashboard/userAccount/tabs/medications/modal/Content.js create mode 100644 components/dashboard/userAccount/tabs/relatives/ItemRelatives.js create mode 100644 components/dashboard/userAccount/tabs/relatives/modal/Content.js create mode 100644 components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js create mode 100644 components/dashboard/userAccount/tabs/surgeries/modal/Content.js diff --git a/app/component/Field.js b/app/component/Field.js index 92470ca..d7f3cb5 100644 --- a/app/component/Field.js +++ b/app/component/Field.js @@ -1,16 +1,29 @@ import { TextField } from "@mui/material"; -function Field({ title, type, props, multiline, isPlaceHolder }) { +function Field({ + type, + name, + title, + props, + value, + multiline, + handleChange, + isPlaceHolder, +}) { return ( { + handleChange(name || "", e.target.value); + }} sx={{ "& .MuiFormLabel-root": { top: "-4px !important", diff --git a/app/component/element/AutoSelector.js b/app/component/element/AutoSelector.js new file mode 100644 index 0000000..50bfffc --- /dev/null +++ b/app/component/element/AutoSelector.js @@ -0,0 +1,96 @@ +import BottomSelect from "@/components/icons/BottomSelect"; +import { Autocomplete, Button, TextField } from "@mui/material"; +import { styleTextSelectRight } from "@/mui"; + +function AutoSelector({ + list, + value, + isError, + updateData, + label, + disabled = false, + listboxProps, + name, +}) { + return ( + { + if (typeof option === "string") return option; + return option?.name || option?.label || ""; + }} + className="!w-full !rounded-lg auto-complete-selector" + onChange={(e, newValue) => updateData(name, newValue?.label || "")} + sx={{ + ...styleTextSelectRight, + // Hide Icon Number + "& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button": + { + display: "none", + }, + "& input[type=number]": { + MozAppearance: "textfield", + }, + "& .MuiInputBase-input": { padding: "12.5px 14px !important" }, + "& .MuiInputBase-root": { + borderRadius: 2, + padding: "0 !important", + height: { + xs: "43px !important", + sm: "43px !important", + md: "46px !important", + lg: "48px !important", + }, + }, + "& .MuiOutlinedInput-notchedOutline": { + border: "1px solid #D7D7D7", + }, + "& .MuiInput-underline:hover:not(.Mui-disabled):before, .MuiOutlinedInput-notchedOutline": + { + borderColor: "#D7D7D7 !important", + }, + "& .muirtl-1kiro5a-MuiInputBase-root-MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": + { + border: "1px solid #5559CE !important", + }, + "& .MuiOutlinedInput-notchedOutline": { + border: isError ? "1px solid red !important" : "", + }, + }} + renderOption={(props, option) => ( + + )} + renderInput={(params) => ( + + +
    + ), + }} + placeholder={label} + sx={{ + borderRadius: "8px", + }} + /> + )} + /> + ); +} + +export default AutoSelector; diff --git a/components/dashboard/userAccount/components/modal/ModalDeleteItem.js b/components/dashboard/userAccount/components/modal/ModalDeleteItem.js new file mode 100644 index 0000000..1b9febe --- /dev/null +++ b/components/dashboard/userAccount/components/modal/ModalDeleteItem.js @@ -0,0 +1,60 @@ +import CloseModalD from "@/components/icons/CloseModalD"; +import TrashB from "@/components/icons/TrashB"; +import { styleDefault } from "@/mui"; +import { Box, Button, Modal } from "@mui/material"; +import { useState } from "react"; + +function ModalDeleteItem({ changeData, name, id }) { + const [open, setOpen] = useState(false); + + const handleClose = () => setOpen(false); + const handleOpen = () => setOpen(true); + + return ( + <> + + + +
    +

    + حذف +

    + +
    + +

    + آیا از حذف این آیتم مطمئن هستید؟ +

    +
    + + +
    +
    +
    + + ); +} + +export default ModalDeleteItem; diff --git a/components/dashboard/userAccount/components/modal/ModalEditItem.js b/components/dashboard/userAccount/components/modal/ModalEditItem.js new file mode 100644 index 0000000..12f793f --- /dev/null +++ b/components/dashboard/userAccount/components/modal/ModalEditItem.js @@ -0,0 +1,76 @@ +import { useState } from "react"; +import EditB from "@/components/icons/EditB"; +import { styleDefault } from "@/mui"; +import { Box, Button, Modal } from "@mui/material"; +import CloseModalD from "@/components/icons/CloseModalD"; + +function ModalEditItem({ + data, + resetData, + name, + title, + id, + changeData, + children, +}) { + const [open, setOpen] = useState(false); + + const handleClose = () => setOpen(false); + const handleOpen = () => setOpen(true); + + return ( + <> + + + +
    +

    + تغییر {title} +

    + +
    + {children} +
    + + +
    +
    +
    + + ); +} + +export default ModalEditItem; diff --git a/components/dashboard/userAccount/content/HeadTab.js b/components/dashboard/userAccount/content/HeadTab.js index 1766fd6..c769626 100644 --- a/components/dashboard/userAccount/content/HeadTab.js +++ b/components/dashboard/userAccount/content/HeadTab.js @@ -5,7 +5,6 @@ function HeadTab({ tab, user, listTab, - loading, handleChange, isTurnsDetails, setIsTurnsDetails, @@ -15,7 +14,6 @@ function HeadTab({ <> {isTurnsDetails ? ( diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js index 9fc6edf..d29905e 100644 --- a/components/dashboard/userAccount/content/index.js +++ b/components/dashboard/userAccount/content/index.js @@ -32,27 +32,45 @@ function ContentTabs({ setValue, setIsOpenSide, }) { - const [loading, setLoading] = useState(true); const [tab, setTab] = useState(0); - const data = profileData[0]; + const [data, setData] = useState(profileData[0]); - const handleChange = (_, newValue) => { - setTab(newValue); + const handleChange = (_, newValue) => setTab(newValue); + const changeData = (action, name, id, payload) => { + const newData = { + ...data, + [name]: [...data[name]], + }; + + switch (action) { + case "update": + newData[name][id] = payload; + break; + + case "add": + newData[name].push(payload); + break; + + case "delete": + newData[name].splice(id, 1); + break; + + default: + console.warn(`Unknown action: ${action}`); + return; + } + console.log(newData); + + setData(newData); }; - useEffect(() => { - setTimeout(() => { - setLoading(false); - }, 2000); - }, []); - const components = [ - , - , - , - , - , - , + , + , + , + , + , + , ]; return ( @@ -88,7 +106,6 @@ function ContentTabs({ tab={tab} user={user} listTab={listTab} - loading={loading} components={components} handleChange={handleChange} isTurnsDetails={isTurnsDetails} diff --git a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js index 87162c5..15aed02 100644 --- a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js +++ b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js @@ -2,16 +2,12 @@ import DetailLg from "./DetailLg"; import DetailSm from "./DetailSm"; import Head from "./Head"; -function IsTurnsDetails({ user, setIsTurnsDetails, loading }) { +function IsTurnsDetails({ user, setIsTurnsDetails }) { return (
    - - - + + +
    ); } diff --git a/components/dashboard/userAccount/tabs/allergies/ItemAllergie.js b/components/dashboard/userAccount/tabs/allergies/ItemAllergie.js new file mode 100644 index 0000000..b66e37e --- /dev/null +++ b/components/dashboard/userAccount/tabs/allergies/ItemAllergie.js @@ -0,0 +1,64 @@ +import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; +import ModalEditItem from "../../components/modal/ModalEditItem"; +import Content from "./modal/Content"; +import { useState } from "react"; + +function ItemAllergie({ row, idx, changeData }) { + const contentData = { + substance: row.substance, + reaction: row.reaction, + severity: row.severity, + }; + const [data, setData] = useState(contentData); + const resetData = () => setData(contentData); + + return ( + + + + {idx + 1} + + + + + {row.substance} + + + + + {row.reaction} + + + + + {row.severity} + + + +
    + + + + +
    +
    +
    + ); +} + +export default ItemAllergie; diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/tabs/allergies/index.js index 01a7c60..d8ea603 100644 --- a/components/dashboard/userAccount/tabs/allergies/index.js +++ b/components/dashboard/userAccount/tabs/allergies/index.js @@ -1,13 +1,10 @@ import CustomTable from "@/app/component/CustomTable"; -import TextLoading from "@/app/component/loading/Text"; -import EditB from "@/components/icons/EditB"; -import TrashB from "@/components/icons/TrashB"; -import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import { useState } from "react"; import ModalAddAlergie from "./modal"; +import ItemAllergie from "./ItemAllergie"; -function Allergies({ data }) { +function Allergies({ data, changeData }) { const tableHead = ["ردیف", "ماده آلرژی‌زا", "واکنش", "شدت", ""]; const centerTable = [0]; const [open, setOpen] = useState(false); @@ -15,57 +12,32 @@ function Allergies({ data }) { return (
    - + - - {data.allergies.map((row, idx) => ( - - - - {idx + 1} - - - - - {row.substance} - - - - - {row.reaction} - - - - - {row.severity} - - - -
    - - -
    -
    -
    - ))} -
    + {data.allergies.length ? ( + + {data.allergies.map((row, idx) => ( + + ))} + + ) : ( +

    + هیچ آلرژی‌ای وجود ندارد! +

    + )}
    ); } diff --git a/components/dashboard/userAccount/tabs/allergies/modal/Content.js b/components/dashboard/userAccount/tabs/allergies/modal/Content.js index e631088..67ca62f 100644 --- a/components/dashboard/userAccount/tabs/allergies/modal/Content.js +++ b/components/dashboard/userAccount/tabs/allergies/modal/Content.js @@ -1,24 +1,47 @@ import FieldLabel from "@/components/contactUs/FieldLabel"; import Field from "@/app/component/Field"; -import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; +import AutoSelector from "@/app/component/element/AutoSelector"; const listIntensity = [ - { label: "خفیف" }, - { label: "متوسط" }, { label: "شدید" }, + { label: "متوسط" }, + { label: "خفیف" }, ]; -function Content() { +function Content({ setData, data }) { + const handleChange = (name, value) => + setData((prev) => ({ ...prev, [name]: value })); + return (
    - + - + - +
    ); diff --git a/components/dashboard/userAccount/tabs/allergies/modal/index.js b/components/dashboard/userAccount/tabs/allergies/modal/index.js index f4d663a..0fa2d82 100644 --- a/components/dashboard/userAccount/tabs/allergies/modal/index.js +++ b/components/dashboard/userAccount/tabs/allergies/modal/index.js @@ -3,10 +3,27 @@ import AddBtn from "../../../components/AddBtn"; import UpdateBtn from "../../../components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; +import { useState } from "react"; + +function ModalAddAlergie({ open, setOpen, changeData }) { + const contentItem = { + substance: "", + reaction: "", + severity: "", + }; -function ModalAddAlergie({ open, setOpen }) { const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + const [newItem, setNewItem] = useState({ + substance: "", + reaction: "", + severity: "", + }); + const handleAddData = () => { + changeData("add", "allergies", null, newItem); + setNewItem(contentItem); + handleClose(); + }; return ( <> @@ -25,16 +42,19 @@ function ModalAddAlergie({ open, setOpen }) { >
    -

    اضافه کردن آلرژی

    +

    + اضافه کردن آلرژی +

    - +
    diff --git a/components/dashboard/userAccount/tabs/disease/index.js b/components/dashboard/userAccount/tabs/disease/index.js index d8088eb..fa53d7b 100644 --- a/components/dashboard/userAccount/tabs/disease/index.js +++ b/components/dashboard/userAccount/tabs/disease/index.js @@ -4,7 +4,7 @@ import { Switch, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import UpdateBtn from "../../components/UpdateBtn"; -function Disease({ data }) { +function Disease({ data, changeData }) { const tableHead = ["ردیف", "اسم", "وضعیت", ""]; const centerTable = [0]; @@ -38,7 +38,14 @@ function Disease({ data }) {
    - + { + const newData = row; + newData.status = JSON.stringify(e.target.checked); + changeData("update", "disease", idx, newData); + }} + /> diff --git a/components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js b/components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js new file mode 100644 index 0000000..e62357a --- /dev/null +++ b/components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js @@ -0,0 +1,65 @@ +import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; +import ModalEditItem from "../../components/modal/ModalEditItem"; +import Content from "./modal/Content"; +import { useState } from "react"; + +function ItemHistory({ row, idx, changeData }) { + const contentData = { + relation: row.relation, + disease: row.disease, + }; + const [data, setData] = useState(contentData); + const resetData = () => setData(contentData); + + return ( + + + + {idx + 1} + + + + + {row.relation} + + + + + {row.disease} + + + +
    + + + + +
    +
    +
    + ); +} + +export default ItemHistory; diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/tabs/familyHistory/index.js index 3e7d064..f623728 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/index.js +++ b/components/dashboard/userAccount/tabs/familyHistory/index.js @@ -1,13 +1,10 @@ import CustomTable from "@/app/component/CustomTable"; -import TextLoading from "@/app/component/loading/Text"; -import EditB from "@/components/icons/EditB"; -import TrashB from "@/components/icons/TrashB"; -import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import { useState } from "react"; import ModalAddHistory from "./modal"; +import ItemHistory from "./ItemHistory"; -function FamilyHistory({ data }) { +function FamilyHistory({ data, changeData }) { const tableHead = ["ردیف", "بیماری", "نسبت خانوادگی", ""]; const centerTable = [0]; const [open, setOpen] = useState(false); @@ -15,52 +12,32 @@ function FamilyHistory({ data }) { return (
    - + - - {data.family_history.map((row, idx) => ( - - - - {idx + 1} - - - - - {row.disease} - - - - - {row.relation} - - - -
    - - -
    -
    -
    - ))} -
    + {data.medications.length ? ( + + {data.family_history.map((row, idx) => ( + + ))} + + ) : ( +

    + هیچ سابقه خانوادگی وجود ندارد! +

    + )}
    ); } diff --git a/components/dashboard/userAccount/tabs/familyHistory/modal/Content.js b/components/dashboard/userAccount/tabs/familyHistory/modal/Content.js new file mode 100644 index 0000000..106d193 --- /dev/null +++ b/components/dashboard/userAccount/tabs/familyHistory/modal/Content.js @@ -0,0 +1,34 @@ +import FieldLabel from "@/components/contactUs/FieldLabel"; +import Field from "@/app/component/Field"; + +function Content({ setData, data }) { + const handleChange = (name, value) => + setData((prev) => ({ ...prev, [name]: value })); + + return ( +
    + + + + + + +
    + ); +} + +export default Content; diff --git a/components/dashboard/userAccount/tabs/familyHistory/modal/index.js b/components/dashboard/userAccount/tabs/familyHistory/modal/index.js index 78ddb07..afb8504 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/modal/index.js +++ b/components/dashboard/userAccount/tabs/familyHistory/modal/index.js @@ -2,10 +2,22 @@ import { styleDefault } from "@/mui"; import AddBtn from "../../../components/AddBtn"; import UpdateBtn from "../../../components/UpdateBtn"; import { Button, Modal } from "@mui/material"; +import Content from "./Content"; +import { useState } from "react"; -function ModalAddHistory({ open, setOpen }) { +function ModalAddHistory({ open, setOpen, changeData }) { + const contentItem = { + relation: "", + disease: "", + }; const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + const [newItem, setNewItem] = useState(contentItem); + const handleAddData = () => { + changeData("add", "family_history", null, newItem); + setNewItem(contentItem); + handleClose(); + }; return ( <> @@ -24,16 +36,19 @@ function ModalAddHistory({ open, setOpen }) { >
    -

    اضافه کردن سابقه خانوادگی بیماری

    +

    + اضافه کردن سابقه خانوادگی بیماری +

    - {/* */} +
    diff --git a/components/dashboard/userAccount/tabs/medications/ItemMedication.js b/components/dashboard/userAccount/tabs/medications/ItemMedication.js new file mode 100644 index 0000000..9783661 --- /dev/null +++ b/components/dashboard/userAccount/tabs/medications/ItemMedication.js @@ -0,0 +1,71 @@ +import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; +import ModalEditItem from "../../components/modal/ModalEditItem"; +import Content from "./modal/Content"; +import { useState } from "react"; + +function ItemMedication({ row, idx, changeData }) { + const contentData = { + name: row.name, + dose: row.dose, + frequency: row.frequency, + }; + const [data, setData] = useState(contentData); + const resetData = () => setData(contentData); + + return ( + + + + {idx + 1} + + + + + {row.name} + + + + + {row.dose} + + + + + {row.frequency} + + + +
    + + + + +
    +
    +
    + ); +} + +export default ItemMedication; diff --git a/components/dashboard/userAccount/tabs/medications/index.js b/components/dashboard/userAccount/tabs/medications/index.js index c4c25d1..2d56809 100644 --- a/components/dashboard/userAccount/tabs/medications/index.js +++ b/components/dashboard/userAccount/tabs/medications/index.js @@ -1,13 +1,10 @@ import CustomTable from "@/app/component/CustomTable"; -import TextLoading from "@/app/component/loading/Text"; -import EditB from "@/components/icons/EditB"; -import TrashB from "@/components/icons/TrashB"; -import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import ModalAddMedications from "./modal"; import { useState } from "react"; +import ItemMedication from "./ItemMedication"; -function Medications({ data }) { +function Medications({ data, changeData }) { const tableHead = ["ردیف", "نام دارو", "دوز مصرفی", "تعداد و زمان مصرف", ""]; const centerTable = [0]; const [open, setOpen] = useState(false); @@ -15,57 +12,32 @@ function Medications({ data }) { return (
    - + - - {data.medications.map((row, idx) => ( - - - - {idx + 1} - - - - - {row.name} - - - - - {row.dose} - - - - - {row.frequency} - - - -
    - - -
    -
    -
    - ))} -
    + {data.medications.length ? ( + + {data.medications.map((row, idx) => ( + + ))} + + ) : ( +

    + هیچ داروی مصرفی وجود ندارد! +

    + )}
    ); } diff --git a/components/dashboard/userAccount/tabs/medications/modal/Content.js b/components/dashboard/userAccount/tabs/medications/modal/Content.js new file mode 100644 index 0000000..584940e --- /dev/null +++ b/components/dashboard/userAccount/tabs/medications/modal/Content.js @@ -0,0 +1,44 @@ +import FieldLabel from "@/components/contactUs/FieldLabel"; +import Field from "@/app/component/Field"; + +function Content({ setData, data }) { + const handleChange = (name, value) => + setData((prev) => ({ ...prev, [name]: value })); + + return ( +
    + + + + + handleChange(name, `${value}mg`)} + /> + + + + +
    + ); +} + +export default Content; diff --git a/components/dashboard/userAccount/tabs/medications/modal/index.js b/components/dashboard/userAccount/tabs/medications/modal/index.js index acdd9b6..90aecca 100644 --- a/components/dashboard/userAccount/tabs/medications/modal/index.js +++ b/components/dashboard/userAccount/tabs/medications/modal/index.js @@ -2,10 +2,24 @@ import { styleDefault } from "@/mui"; import AddBtn from "../../../components/AddBtn"; import UpdateBtn from "../../../components/UpdateBtn"; import { Button, Modal } from "@mui/material"; +import { useState } from "react"; +import Content from "./Content"; + +function ModalAddMedications({ open, setOpen, changeData }) { + const contentItem = { + name: "", + dose: "", + frequency: "", + }; -function ModalAddMedications({ open, setOpen }) { const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + const [newItem, setNewItem] = useState(contentItem); + const handleAddData = () => { + changeData("add", "medications", null, newItem); + setNewItem(contentItem); + handleClose(); + }; return ( <> @@ -24,16 +38,19 @@ function ModalAddMedications({ open, setOpen }) { >
    -

    اضافه کردن دارو های مصرفی

    +

    + اضافه کردن دارو های مصرفی +

    - {/* */} +
    diff --git a/components/dashboard/userAccount/tabs/relatives/ItemRelatives.js b/components/dashboard/userAccount/tabs/relatives/ItemRelatives.js new file mode 100644 index 0000000..8420731 --- /dev/null +++ b/components/dashboard/userAccount/tabs/relatives/ItemRelatives.js @@ -0,0 +1,71 @@ +import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; +import ModalEditItem from "../../components/modal/ModalEditItem"; +import Content from "./modal/Content"; +import { useState } from "react"; + +function ItemRelatives({ row, idx, changeData }) { + const contentData = { + name: row.name, + relation: row.relation, + phone: row.contact.phone, + address: row.contact.address, + }; + const [data, setData] = useState(contentData); + const resetData = () => setData(contentData); + + return ( + + + + {idx + 1} + + + + + {row.name} + + + + + {row.relation} + + + + + {`${row.contact.phone?.replace("+", "")}+`} + + + + {row.contact.address} + + +
    + + + + +
    +
    +
    + ); +} + +export default ItemRelatives; diff --git a/components/dashboard/userAccount/tabs/relatives/index.js b/components/dashboard/userAccount/tabs/relatives/index.js index 412b5ba..3878d84 100644 --- a/components/dashboard/userAccount/tabs/relatives/index.js +++ b/components/dashboard/userAccount/tabs/relatives/index.js @@ -1,13 +1,10 @@ import CustomTable from "@/app/component/CustomTable"; -import TextLoading from "@/app/component/loading/Text"; -import EditB from "@/components/icons/EditB"; -import TrashB from "@/components/icons/TrashB"; -import { Button, TableCell, TableRow, Tooltip } from "@mui/material"; import Head from "../../components/Head"; import ModalAddRelatives from "./modal"; import { useState } from "react"; +import ItemRelatives from "./ItemRelatives"; -function Relatives({ data }) { +function Relatives({ data, changeData }) { const tableHead = ["ردیف", "نام", "نسبت", "شماره تماس", "آدرس", ""]; const centerTable = [0]; const [open, setOpen] = useState(false); @@ -15,61 +12,32 @@ function Relatives({ data }) { return (
    - + - - {data.relatives.map((row, idx) => ( - - - - {idx + 1} - - - - - {row.name} - - - - - {row.relation} - - - - - {`${row.contact.phone?.replace("+", "")}+`} - - - - {row.contact.address} - - - -
    - - -
    -
    -
    - ))} -
    + {data.medications.length ? ( + + {data.relatives.map((row, idx) => ( + + ))} + + ) : ( +

    + هیچ داروی مصرفی وجود ندارد! +

    + )}
    ); } diff --git a/components/dashboard/userAccount/tabs/relatives/modal/Content.js b/components/dashboard/userAccount/tabs/relatives/modal/Content.js new file mode 100644 index 0000000..06b4c27 --- /dev/null +++ b/components/dashboard/userAccount/tabs/relatives/modal/Content.js @@ -0,0 +1,55 @@ +import FieldLabel from "@/components/contactUs/FieldLabel"; +import Field from "@/app/component/Field"; + +function Content({ setData, data }) { + const handleChange = (name, value) => + setData((prev) => ({ ...prev, [name]: value })); + console.log(data); + + return ( +
    + + + + + + + + + + + + +
    + ); +} + +export default Content; diff --git a/components/dashboard/userAccount/tabs/relatives/modal/index.js b/components/dashboard/userAccount/tabs/relatives/modal/index.js index e2fc3f6..6411ff2 100644 --- a/components/dashboard/userAccount/tabs/relatives/modal/index.js +++ b/components/dashboard/userAccount/tabs/relatives/modal/index.js @@ -2,10 +2,34 @@ import { styleDefault } from "@/mui"; import AddBtn from "../../../components/AddBtn"; import UpdateBtn from "../../../components/UpdateBtn"; import { Button, Modal } from "@mui/material"; +import Content from "./Content"; +import { useState } from "react"; + +function ModalAddRelatives({ open, setOpen, changeData }) { + const contentItem = { + name: "", + relation: "", + phone: "", + address: "", + }; -function ModalAddRelatives({ open, setOpen }) { const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + const [newItem, setNewItem] = useState(contentItem); + const handleAddData = () => { + const changedKey = { + name: newItem.name, + relation: newItem.relation, + contact: { + phone: newItem.phone, + address: newItem.address, + }, + }; + + changeData("add", "relatives", null, changedKey); + setNewItem(contentItem); + handleClose(); + }; return ( <> @@ -24,16 +48,24 @@ function ModalAddRelatives({ open, setOpen }) { >
    -

    اضافه کردن بستگان

    +

    + اضافه کردن بستگان +

    - {/* */} +
    diff --git a/components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js b/components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js new file mode 100644 index 0000000..a8f1ceb --- /dev/null +++ b/components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js @@ -0,0 +1,70 @@ +import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import TextLoading from "@/app/component/loading/Text"; +import { TableCell, TableRow } from "@mui/material"; +import ModalEditItem from "../../components/modal/ModalEditItem"; +import Content from "./modal/Content"; +import { useState } from "react"; + +function ItemSurgeries({ row, idx, changeData }) { + const contentData = { + type: row.type, + year: row.year, + hospital: row.hospital, + }; + const [data, setData] = useState(contentData); + const resetData = () => setData(contentData); + + return ( + + + + {idx + 1} + + + + + {row.type} + + + + + {row.hospital} + + + + + {row.year} + + + +
    + + + + +
    +
    +
    + ); +} + +export default ItemSurgeries; diff --git a/components/dashboard/userAccount/tabs/surgeries/index.js b/components/dashboard/userAccount/tabs/surgeries/index.js index 799e30e..2533e94 100644 --- a/components/dashboard/userAccount/tabs/surgeries/index.js +++ b/components/dashboard/userAccount/tabs/surgeries/index.js @@ -6,8 +6,9 @@ import { Button, TableCell, TableRow } from "@mui/material"; import Head from "../../components/Head"; import ModalAddSurgeries from "./modal"; import { useState } from "react"; +import ItemSurgeries from "./ItemSurgeries"; -function Surgeries({ data }) { +function Surgeries({ data, updateData, changeData }) { const tableHead = [ "ردیف", "نوع جراحی", @@ -21,60 +22,30 @@ function Surgeries({ data }) { return (
    - + - - {data.surgeries.map((row, idx) => ( - - - - {idx + 1} - - - - - {row.type} - - - - - {row.hospital} - - - - - {row.year} - - - -
    - - -
    -
    -
    - ))} -
    + {data.surgeries.length ? ( + + {data.surgeries.map((row, idx) => ( + + ))} + + ) : ( +

    هیچ جراحی وجود ندارد!

    + )}
    ); } diff --git a/components/dashboard/userAccount/tabs/surgeries/modal/Content.js b/components/dashboard/userAccount/tabs/surgeries/modal/Content.js new file mode 100644 index 0000000..8b59ba0 --- /dev/null +++ b/components/dashboard/userAccount/tabs/surgeries/modal/Content.js @@ -0,0 +1,50 @@ +import FieldLabel from "@/components/contactUs/FieldLabel"; +import Field from "@/app/component/Field"; + +const listIntensity = [ + { label: "شدید" }, + { label: "متوسط" }, + { label: "خفیف" }, +]; + +function Content({ setData, data }) { + const handleChange = (name, value) => + setData((prev) => ({ ...prev, [name]: value })); + + return ( +
    + + + + + + + + + +
    + ); +} + +export default Content; diff --git a/components/dashboard/userAccount/tabs/surgeries/modal/index.js b/components/dashboard/userAccount/tabs/surgeries/modal/index.js index 895fd01..50bbcac 100644 --- a/components/dashboard/userAccount/tabs/surgeries/modal/index.js +++ b/components/dashboard/userAccount/tabs/surgeries/modal/index.js @@ -2,10 +2,24 @@ import { styleDefault } from "@/mui"; import AddBtn from "../../../components/AddBtn"; import UpdateBtn from "../../../components/UpdateBtn"; import { Button, Modal } from "@mui/material"; +import Content from "./Content"; +import { useState } from "react"; + +function ModalAddSurgeries({ open, setOpen, changeData }) { + const contentItem = { + type: "", + year: "", + hospital: "", + }; -function ModalAddSurgeries({ open, setOpen }) { const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); + const [newItem, setNewItem] = useState(contentItem); + const handleAddData = () => { + changeData("add", "surgeries", null, newItem); + setNewItem(contentItem); + handleClose(); + }; return ( <> @@ -24,16 +38,19 @@ function ModalAddSurgeries({ open, setOpen }) { >
    -

    اضافه کردن جراحی

    +

    + اضافه کردن جراحی +

    - {/* */} +
    From 80c74361eb8006056babd214843caf37a29e0817 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Sat, 31 May 2025 03:35:23 +0330 Subject: [PATCH 072/124] change response file & request get user-profile & change design dashboard page & handle limit page dashboard --- app/dashboard/page.js | 11 ++- components/dashboard/Content.js | 4 +- .../dashboard/userAccount/UserAccount.js | 36 -------- .../dashboard/userAccount/content/HeadTab.js | 6 +- .../dashboard/userAccount/content/index.js | 50 +++++++---- .../allergies/ItemAllergie.js | 4 +- .../{tabs => detailUser}/allergies/index.js | 6 +- .../allergies/modal/Content.js | 0 .../allergies/modal/index.js | 8 +- .../{tabs => detailUser}/disease/index.js | 6 +- .../familyHistory/ItemHistory.js | 4 +- .../familyHistory/index.js | 4 +- .../familyHistory/modal/Content.js | 0 .../familyHistory/modal/index.js | 4 +- .../dashboard/userAccount/detailUser/index.js | 82 +++++++++++++++++++ .../information}/Content.js | 0 .../information}/DateBirthday.js | 2 +- .../information}/Form.js | 0 .../information}/index.js | 4 +- .../information}/listSelector.js | 0 .../medications/ItemMedication.js | 4 +- .../{tabs => detailUser}/medications/index.js | 6 +- .../medications/modal/Content.js | 0 .../medications/modal/index.js | 4 +- .../relatives/ItemRelatives.js | 4 +- .../{tabs => detailUser}/relatives/index.js | 8 +- .../relatives/modal/Content.js | 1 - .../relatives/modal/index.js | 4 +- .../surgeries/ItemSurgeries.js | 4 +- .../{tabs => detailUser}/surgeries/index.js | 12 +-- .../surgeries/modal/Content.js | 0 .../surgeries/modal/index.js | 4 +- components/dashboard/userAccount/index.js | 49 +++++++++++ .../sidebars/turns/isTurnsDetails/Head.js | 6 +- .../sidebars/turns/isTurnsDetails/index.js | 2 +- lib/ability.js | 10 +-- lib/auth.js | 4 +- services/response.js | 1 + 38 files changed, 233 insertions(+), 121 deletions(-) delete mode 100644 components/dashboard/userAccount/UserAccount.js rename components/dashboard/userAccount/{tabs => detailUser}/allergies/ItemAllergie.js (92%) rename components/dashboard/userAccount/{tabs => detailUser}/allergies/index.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/allergies/modal/Content.js (100%) rename components/dashboard/userAccount/{tabs => detailUser}/allergies/modal/index.js (87%) rename components/dashboard/userAccount/{tabs => detailUser}/disease/index.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/familyHistory/ItemHistory.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/familyHistory/index.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/familyHistory/modal/Content.js (100%) rename components/dashboard/userAccount/{tabs => detailUser}/familyHistory/modal/index.js (92%) create mode 100644 components/dashboard/userAccount/detailUser/index.js rename components/dashboard/userAccount/{sidebars/detailUser => detailUser/information}/Content.js (100%) rename components/dashboard/userAccount/{sidebars/detailUser => detailUser/information}/DateBirthday.js (97%) rename components/dashboard/userAccount/{sidebars/detailUser => detailUser/information}/Form.js (100%) rename components/dashboard/userAccount/{sidebars/detailUser => detailUser/information}/index.js (96%) rename components/dashboard/userAccount/{sidebars/detailUser => detailUser/information}/listSelector.js (100%) rename components/dashboard/userAccount/{tabs => detailUser}/medications/ItemMedication.js (92%) rename components/dashboard/userAccount/{tabs => detailUser}/medications/index.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/medications/modal/Content.js (100%) rename components/dashboard/userAccount/{tabs => detailUser}/medications/modal/index.js (92%) rename components/dashboard/userAccount/{tabs => detailUser}/relatives/ItemRelatives.js (93%) rename components/dashboard/userAccount/{tabs => detailUser}/relatives/index.js (91%) rename components/dashboard/userAccount/{tabs => detailUser}/relatives/modal/Content.js (98%) rename components/dashboard/userAccount/{tabs => detailUser}/relatives/modal/index.js (93%) rename components/dashboard/userAccount/{tabs => detailUser}/surgeries/ItemSurgeries.js (92%) rename components/dashboard/userAccount/{tabs => detailUser}/surgeries/index.js (78%) rename components/dashboard/userAccount/{tabs => detailUser}/surgeries/modal/Content.js (100%) rename components/dashboard/userAccount/{tabs => detailUser}/surgeries/modal/index.js (92%) create mode 100644 components/dashboard/userAccount/index.js diff --git a/app/dashboard/page.js b/app/dashboard/page.js index bf90a72..18a5e47 100644 --- a/app/dashboard/page.js +++ b/app/dashboard/page.js @@ -2,18 +2,23 @@ import Content from "@/components/dashboard/Content"; import { defineAbilitiesFor } from "@/lib/ability"; import { getUser } from "@/lib/auth"; import { getStateInfo } from "@/lib/getStateInfo"; +import axios from "axios"; import { redirect } from "next/navigation"; -async function UserAccount() { +export default async function Dashboard() { const { matchedCity } = getStateInfo(); const user = await getUser(); const ability = defineAbilitiesFor(user); + const response = await axios.get( + "https://back-dev.clinic-pro.ir/api/v1/user-profile/e4fd81b4-31bc-4f9a-b300-da23026f9d79" + ); + + console.log(response); + if (!ability.can("access", "Dashboard")) { return redirect("/"); } return ; } - -export default UserAccount; diff --git a/components/dashboard/Content.js b/components/dashboard/Content.js index d9ee861..86808cf 100644 --- a/components/dashboard/Content.js +++ b/components/dashboard/Content.js @@ -4,7 +4,7 @@ import { useState } from "react"; import userData from "@/data/userData.json"; import DashboardPage from "@/components/dashboard"; -import UserAccountPage from "@/components/dashboard/userAccount/UserAccount"; +import UserAccountPage from "./userAccount"; function Content({ matchedCity }) { const [value, setValue] = useState(0); @@ -15,7 +15,7 @@ function Content({ matchedCity }) { - {value === 5 ? ( - - ) : ( - <> - - - - )} -
    - ); -} - -export default UserAccountPage; diff --git a/components/dashboard/userAccount/content/HeadTab.js b/components/dashboard/userAccount/content/HeadTab.js index c769626..1f32f2d 100644 --- a/components/dashboard/userAccount/content/HeadTab.js +++ b/components/dashboard/userAccount/content/HeadTab.js @@ -11,7 +11,7 @@ function HeadTab({ components, }) { return ( - <> +
    {isTurnsDetails ? ( ) : ( <> -
    +
    {components[tab]}
    )} - +
    ); } diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js index d29905e..43183f2 100644 --- a/components/dashboard/userAccount/content/index.js +++ b/components/dashboard/userAccount/content/index.js @@ -1,19 +1,25 @@ "use client"; import { useEffect, useState } from "react"; +import profileData from "@/data/profile_other.json"; import ArrowRightD from "@/components/icons/ArrowRightD"; import { Button } from "@mui/material"; import DownloadD from "@/components/icons/DownloadD"; -import Disease from "../tabs/disease"; -import Allergies from "../tabs/allergies"; -import Medications from "../tabs/medications"; -import Surgeries from "../tabs/surgeries"; -import FamilyHistory from "../tabs/familyHistory"; -import Relatives from "../tabs/relatives"; +import Disease from "../detailUser/disease"; +import Allergies from "../detailUser/allergies"; +import Medications from "../detailUser/medications"; +import Surgeries from "../detailUser/surgeries"; +import FamilyHistory from "../detailUser/familyHistory"; +import Relatives from "../detailUser/relatives"; import HeadTab from "./HeadTab"; -import profileData from "@/data/profile_other.json"; +import DetailUser from "../detailUser/information"; +import Turns from "../sidebars/turns"; +import Transactions from "../sidebars/transactions"; +import Comments from "../sidebars/comments"; +import Messages from "../sidebars/messages"; +import NotfoundDashboard from "../NotfoundDashboard"; const listTab = [ "بیماری‌ها", @@ -59,18 +65,27 @@ function ContentTabs({ console.warn(`Unknown action: ${action}`); return; } - console.log(newData); - setData(newData); }; const components = [ - , - , - , - , - , - , + // , + // , + // , + // , + // , + // , + + , + , + , + , + , + , ]; return ( @@ -102,7 +117,8 @@ function ContentTabs({ ) : undefined}
    - {components[value]}
  • + {/* + /> */}
    ); } diff --git a/components/dashboard/userAccount/tabs/allergies/ItemAllergie.js b/components/dashboard/userAccount/detailUser/allergies/ItemAllergie.js similarity index 92% rename from components/dashboard/userAccount/tabs/allergies/ItemAllergie.js rename to components/dashboard/userAccount/detailUser/allergies/ItemAllergie.js index b66e37e..3e31b5a 100644 --- a/components/dashboard/userAccount/tabs/allergies/ItemAllergie.js +++ b/components/dashboard/userAccount/detailUser/allergies/ItemAllergie.js @@ -1,7 +1,7 @@ -import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import ModalDeleteItem from "@/components/dashboard/userAccount/components/modal/ModalDeleteItem"; import TextLoading from "@/app/component/loading/Text"; import { TableCell, TableRow } from "@mui/material"; -import ModalEditItem from "../../components/modal/ModalEditItem"; +import ModalEditItem from "@/components/dashboard/userAccount/components/modal/ModalEditItem"; import Content from "./modal/Content"; import { useState } from "react"; diff --git a/components/dashboard/userAccount/tabs/allergies/index.js b/components/dashboard/userAccount/detailUser/allergies/index.js similarity index 91% rename from components/dashboard/userAccount/tabs/allergies/index.js rename to components/dashboard/userAccount/detailUser/allergies/index.js index d8ea603..172cfa9 100644 --- a/components/dashboard/userAccount/tabs/allergies/index.js +++ b/components/dashboard/userAccount/detailUser/allergies/index.js @@ -1,8 +1,8 @@ import CustomTable from "@/app/component/CustomTable"; -import Head from "../../components/Head"; +import Head from "@/components/dashboard/userAccount/components/Head"; import { useState } from "react"; -import ModalAddAlergie from "./modal"; import ItemAllergie from "./ItemAllergie"; +import ModalAddAlergie from "./modal"; function Allergies({ data, changeData }) { const tableHead = ["ردیف", "ماده آلرژی‌زا", "واکنش", "شدت", ""]; @@ -10,7 +10,7 @@ function Allergies({ data, changeData }) { const [open, setOpen] = useState(false); return ( -
    +
    اضافه کردن diff --git a/components/dashboard/userAccount/tabs/disease/index.js b/components/dashboard/userAccount/detailUser/disease/index.js similarity index 91% rename from components/dashboard/userAccount/tabs/disease/index.js rename to components/dashboard/userAccount/detailUser/disease/index.js index fa53d7b..e498c6c 100644 --- a/components/dashboard/userAccount/tabs/disease/index.js +++ b/components/dashboard/userAccount/detailUser/disease/index.js @@ -1,15 +1,15 @@ import CustomTable from "@/app/component/CustomTable"; import TextLoading from "@/app/component/loading/Text"; import { Switch, TableCell, TableRow } from "@mui/material"; -import Head from "../../components/Head"; -import UpdateBtn from "../../components/UpdateBtn"; +import Head from "@/components/dashboard/userAccount/components/Head"; +import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; function Disease({ data, changeData }) { const tableHead = ["ردیف", "اسم", "وضعیت", ""]; const centerTable = [0]; return ( -
    +
    diff --git a/components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js b/components/dashboard/userAccount/detailUser/familyHistory/ItemHistory.js similarity index 91% rename from components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js rename to components/dashboard/userAccount/detailUser/familyHistory/ItemHistory.js index e62357a..7483655 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/ItemHistory.js +++ b/components/dashboard/userAccount/detailUser/familyHistory/ItemHistory.js @@ -1,7 +1,7 @@ -import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import ModalDeleteItem from "@/components/dashboard/userAccount/components/modal/ModalDeleteItem"; import TextLoading from "@/app/component/loading/Text"; import { TableCell, TableRow } from "@mui/material"; -import ModalEditItem from "../../components/modal/ModalEditItem"; +import ModalEditItem from "@/components/dashboard/userAccount/components/modal/ModalEditItem"; import Content from "./modal/Content"; import { useState } from "react"; diff --git a/components/dashboard/userAccount/tabs/familyHistory/index.js b/components/dashboard/userAccount/detailUser/familyHistory/index.js similarity index 91% rename from components/dashboard/userAccount/tabs/familyHistory/index.js rename to components/dashboard/userAccount/detailUser/familyHistory/index.js index f623728..f6d7e3d 100644 --- a/components/dashboard/userAccount/tabs/familyHistory/index.js +++ b/components/dashboard/userAccount/detailUser/familyHistory/index.js @@ -1,5 +1,5 @@ import CustomTable from "@/app/component/CustomTable"; -import Head from "../../components/Head"; +import Head from "@/components/dashboard/userAccount/components/Head"; import { useState } from "react"; import ModalAddHistory from "./modal"; import ItemHistory from "./ItemHistory"; @@ -10,7 +10,7 @@ function FamilyHistory({ data, changeData }) { const [open, setOpen] = useState(false); return ( -
    +
    setTab(newValue); + const changeData = (action, name, id, payload) => { + const newData = { + ...data, + [name]: [...data[name]], + }; + + switch (action) { + case "update": + newData[name][id] = payload; + break; + + case "add": + newData[name].push(payload); + break; + + case "delete": + newData[name].splice(id, 1); + break; + + default: + console.warn(`Unknown action: ${action}`); + return; + } + setData(newData); + }; + + const components = [ + , + , + , + , + , + , + , + ]; + + return ( + + ); +} + +export default DetailUser; diff --git a/components/dashboard/userAccount/sidebars/detailUser/Content.js b/components/dashboard/userAccount/detailUser/information/Content.js similarity index 100% rename from components/dashboard/userAccount/sidebars/detailUser/Content.js rename to components/dashboard/userAccount/detailUser/information/Content.js diff --git a/components/dashboard/userAccount/sidebars/detailUser/DateBirthday.js b/components/dashboard/userAccount/detailUser/information/DateBirthday.js similarity index 97% rename from components/dashboard/userAccount/sidebars/detailUser/DateBirthday.js rename to components/dashboard/userAccount/detailUser/information/DateBirthday.js index f3f99ec..d03de7a 100644 --- a/components/dashboard/userAccount/sidebars/detailUser/DateBirthday.js +++ b/components/dashboard/userAccount/detailUser/information/DateBirthday.js @@ -2,7 +2,7 @@ import CalendarEdit from "@/components/icons/CalendarEdit"; import { convertToJalali } from "@/helper"; import { Button, Popover } from "@mui/material"; import { DatePicker } from "jalaali-react-date-picker"; -import React, { useState } from "react"; +import { useState } from "react"; function DateBirthday({ data, changeData }) { const [anchorEl, setAnchorEl] = useState(null); diff --git a/components/dashboard/userAccount/sidebars/detailUser/Form.js b/components/dashboard/userAccount/detailUser/information/Form.js similarity index 100% rename from components/dashboard/userAccount/sidebars/detailUser/Form.js rename to components/dashboard/userAccount/detailUser/information/Form.js diff --git a/components/dashboard/userAccount/sidebars/detailUser/index.js b/components/dashboard/userAccount/detailUser/information/index.js similarity index 96% rename from components/dashboard/userAccount/sidebars/detailUser/index.js rename to components/dashboard/userAccount/detailUser/information/index.js index f431845..5356dbf 100644 --- a/components/dashboard/userAccount/sidebars/detailUser/index.js +++ b/components/dashboard/userAccount/detailUser/information/index.js @@ -3,7 +3,7 @@ import Form from "./Form"; import { Button } from "@mui/material"; import ArrowLeftWhiteD from "@/components/icons/ArrowLeftWhiteD"; -function DetailUser({ user }) { +function Information({ user }) { const [data, setData] = useState({ phone: { value: user.phone, isEdit: true }, national_code: { value: user.national_code, isEdit: true }, @@ -50,4 +50,4 @@ function DetailUser({ user }) { ); } -export default DetailUser; +export default Information; diff --git a/components/dashboard/userAccount/sidebars/detailUser/listSelector.js b/components/dashboard/userAccount/detailUser/information/listSelector.js similarity index 100% rename from components/dashboard/userAccount/sidebars/detailUser/listSelector.js rename to components/dashboard/userAccount/detailUser/information/listSelector.js diff --git a/components/dashboard/userAccount/tabs/medications/ItemMedication.js b/components/dashboard/userAccount/detailUser/medications/ItemMedication.js similarity index 92% rename from components/dashboard/userAccount/tabs/medications/ItemMedication.js rename to components/dashboard/userAccount/detailUser/medications/ItemMedication.js index 9783661..315e949 100644 --- a/components/dashboard/userAccount/tabs/medications/ItemMedication.js +++ b/components/dashboard/userAccount/detailUser/medications/ItemMedication.js @@ -1,7 +1,7 @@ -import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import ModalDeleteItem from "@/components/dashboard/userAccount/components/modal/ModalDeleteItem"; import TextLoading from "@/app/component/loading/Text"; import { TableCell, TableRow } from "@mui/material"; -import ModalEditItem from "../../components/modal/ModalEditItem"; +import ModalEditItem from "@/components/dashboard/userAccount/components/modal/ModalEditItem"; import Content from "./modal/Content"; import { useState } from "react"; diff --git a/components/dashboard/userAccount/tabs/medications/index.js b/components/dashboard/userAccount/detailUser/medications/index.js similarity index 91% rename from components/dashboard/userAccount/tabs/medications/index.js rename to components/dashboard/userAccount/detailUser/medications/index.js index 2d56809..cbdf4e3 100644 --- a/components/dashboard/userAccount/tabs/medications/index.js +++ b/components/dashboard/userAccount/detailUser/medications/index.js @@ -1,8 +1,8 @@ import CustomTable from "@/app/component/CustomTable"; -import Head from "../../components/Head"; -import ModalAddMedications from "./modal"; +import Head from "@/components/dashboard/userAccount/components/Head"; import { useState } from "react"; import ItemMedication from "./ItemMedication"; +import ModalAddMedications from "./modal"; function Medications({ data, changeData }) { const tableHead = ["ردیف", "نام دارو", "دوز مصرفی", "تعداد و زمان مصرف", ""]; @@ -10,7 +10,7 @@ function Medications({ data, changeData }) { const [open, setOpen] = useState(false); return ( -
    +
    +
    setData((prev) => ({ ...prev, [name]: value })); - console.log(data); return (
    diff --git a/components/dashboard/userAccount/tabs/relatives/modal/index.js b/components/dashboard/userAccount/detailUser/relatives/modal/index.js similarity index 93% rename from components/dashboard/userAccount/tabs/relatives/modal/index.js rename to components/dashboard/userAccount/detailUser/relatives/modal/index.js index 6411ff2..9cbe776 100644 --- a/components/dashboard/userAccount/tabs/relatives/modal/index.js +++ b/components/dashboard/userAccount/detailUser/relatives/modal/index.js @@ -1,6 +1,6 @@ import { styleDefault } from "@/mui"; -import AddBtn from "../../../components/AddBtn"; -import UpdateBtn from "../../../components/UpdateBtn"; +import AddBtn from "@/components/dashboard/userAccount/components/AddBtn"; +import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; import { useState } from "react"; diff --git a/components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js b/components/dashboard/userAccount/detailUser/surgeries/ItemSurgeries.js similarity index 92% rename from components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js rename to components/dashboard/userAccount/detailUser/surgeries/ItemSurgeries.js index a8f1ceb..02e5079 100644 --- a/components/dashboard/userAccount/tabs/surgeries/ItemSurgeries.js +++ b/components/dashboard/userAccount/detailUser/surgeries/ItemSurgeries.js @@ -1,7 +1,7 @@ -import ModalDeleteItem from "../../components/modal/ModalDeleteItem"; +import ModalDeleteItem from "@/components/dashboard/userAccount/components/modal/ModalDeleteItem"; import TextLoading from "@/app/component/loading/Text"; import { TableCell, TableRow } from "@mui/material"; -import ModalEditItem from "../../components/modal/ModalEditItem"; +import ModalEditItem from "@/components/dashboard/userAccount/components/modal/ModalEditItem"; import Content from "./modal/Content"; import { useState } from "react"; diff --git a/components/dashboard/userAccount/tabs/surgeries/index.js b/components/dashboard/userAccount/detailUser/surgeries/index.js similarity index 78% rename from components/dashboard/userAccount/tabs/surgeries/index.js rename to components/dashboard/userAccount/detailUser/surgeries/index.js index 2533e94..59631ec 100644 --- a/components/dashboard/userAccount/tabs/surgeries/index.js +++ b/components/dashboard/userAccount/detailUser/surgeries/index.js @@ -1,14 +1,10 @@ import CustomTable from "@/app/component/CustomTable"; -import TextLoading from "@/app/component/loading/Text"; -import EditB from "@/components/icons/EditB"; -import TrashB from "@/components/icons/TrashB"; -import { Button, TableCell, TableRow } from "@mui/material"; -import Head from "../../components/Head"; -import ModalAddSurgeries from "./modal"; +import Head from "@/components/dashboard/userAccount/components/Head"; import { useState } from "react"; import ItemSurgeries from "./ItemSurgeries"; +import ModalAddSurgeries from "./modal"; -function Surgeries({ data, updateData, changeData }) { +function Surgeries({ data, changeData }) { const tableHead = [ "ردیف", "نوع جراحی", @@ -20,7 +16,7 @@ function Surgeries({ data, updateData, changeData }) { const [open, setOpen] = useState(false); return ( -
    +
    , + , + , + , + , + , + ]; + + return ( +
    + {value === 5 ? ( + + ) : ( + <> + +
    + {sidebars[value]} +
    + + )} +
    + ); +} + +export default UserAccountPage; diff --git a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js index 28a2fe8..5adcf50 100644 --- a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js +++ b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/Head.js @@ -3,7 +3,7 @@ import { Button } from "@mui/material"; import ButtonData from "./ButtonData"; import TextLoading from "@/app/component/loading/Text"; -function Head({ user, setIsTurnsDetails, loading }) { +function Head({ setIsTurnsDetails }) { return (
    @@ -13,13 +13,13 @@ function Head({ user, setIsTurnsDetails, loading }) { > - +

    جزئیات نوبت شما

    - +
    ); } diff --git a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js index 15aed02..2744393 100644 --- a/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js +++ b/components/dashboard/userAccount/sidebars/turns/isTurnsDetails/index.js @@ -5,7 +5,7 @@ import Head from "./Head"; function IsTurnsDetails({ user, setIsTurnsDetails }) { return (
    - +
    diff --git a/lib/ability.js b/lib/ability.js index b4a3fa0..a2b6984 100644 --- a/lib/ability.js +++ b/lib/ability.js @@ -3,13 +3,11 @@ import { AbilityBuilder, createMongoAbility } from "@casl/ability"; export function defineAbilitiesFor(user) { const { can, cannot, build } = new AbilityBuilder(createMongoAbility); - if (user?.role === "admin") { + if (user) { can("access", "Dashboard"); - } else if (user?.role === "manager") { - can("access", "Dashboard"); - } else { - can("access", "Dashboard"); - // cannot("access", "Dashboard"); + } else { + // can("access", "Dashboard"); + cannot("access", "Dashboard"); } return build(); diff --git a/lib/auth.js b/lib/auth.js index 40df985..945419d 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -2,7 +2,7 @@ import { cookies } from "next/headers"; export async function getUser() { const cookieStore = cookies(); - const raw = cookieStore.get("user"); + const raw = cookieStore.get("access_token"); if (!raw) return null; - return JSON.parse(raw.value); + return raw; } diff --git a/services/response.js b/services/response.js index b55aeb1..86d5237 100644 --- a/services/response.js +++ b/services/response.js @@ -29,4 +29,5 @@ export const request = { }, }); }, + getUserProfile: (uuid) => api.get(`/api/v1/user-profile/${uuid}`), }; From e292176a61b5b5d0e0331a9eed975c1cc62307ac Mon Sep 17 00:00:00 2001 From: Ehsan Date: Sun, 1 Jun 2025 01:08:25 +0330 Subject: [PATCH 073/124] handle limit page dashboard & change header profile user & get data from api in page clinics & clinic item and doctor item --- app/clinic/[slug]/page.js | 18 ++- app/component/ItemDoctor.js | 12 +- app/component/comment/index.js | 6 +- app/dashboard/page.js | 14 +- app/doctor/[slug]/page.js | 9 +- app/doctors/page.js | 10 +- .../clinic/components/about/ListBime.js | 2 +- .../clinic/components/about/Services.js | 2 +- .../clinic/components/about/Specialties.js | 2 +- .../clinic/components/about/images/Images.js | 2 +- .../clinic/components/about/images/List.js | 28 +++- .../clinic/components/about/images/Slider.js | 30 ++-- components/clinic/components/about/index.js | 2 +- components/clinics/list/ItemClinic.js | 2 +- components/dashboard/Content.js | 5 +- components/dashboard/index.js | 2 + .../dashboard/userAccount/components/Head.js | 4 +- .../userAccount/components/UpdateBtn.js | 3 +- .../dashboard/userAccount/content/HeadTab.js | 2 +- .../dashboard/userAccount/content/index.js | 134 ------------------ .../detailUser/allergies/modal/index.js | 4 + .../detailUser/familyHistory/modal/index.js | 4 + .../detailUser/medications/modal/index.js | 4 + .../detailUser/relatives/modal/index.js | 4 + .../detailUser/surgeries/modal/index.js | 4 + components/dashboard/userAccount/index.js | 35 +++++ .../doctor/appointmentList/ItemAppointment.js | 6 +- components/doctor/detailDoctor/Title.js | 14 +- .../doctor/detailDoctor/cards/AboutDcotor.js | 4 +- .../cards/comments/chart/ProgressAll.js | 4 +- .../cards/comments/chart/index.js | 11 +- .../cards/comments/modal/ModalAnswer.js | 4 +- .../detailDoctor/cards/locations/index.js | 4 +- components/doctor/index.js | 21 +-- components/doctor/poster/Services.js | 2 +- components/doctors/index.js | 4 +- components/doctors/listDoctors/index.js | 4 +- components/layout/StLayout.js | 5 +- components/layout/header/Content.js | 31 ++-- components/layout/header/index.js | 4 +- components/layout/index.js | 3 +- components/layout/sidebar/ModalLogout.js | 4 +- .../register/verificationPage/SendReq.js | 5 +- helper/index.js | 2 +- utils/index.js | 5 +- 45 files changed, 223 insertions(+), 258 deletions(-) delete mode 100644 components/dashboard/userAccount/content/index.js diff --git a/app/clinic/[slug]/page.js b/app/clinic/[slug]/page.js index 87db5d2..6a0915e 100644 --- a/app/clinic/[slug]/page.js +++ b/app/clinic/[slug]/page.js @@ -1,10 +1,18 @@ import ClinicPage from "@/components/clinic"; import Layout from "@/components/layout/StLayout"; -import clinics from "@/data/clinics.json"; -import doctors from "@/data/doctors.json"; +import axios from "axios"; -function Blog({ params: { slug } }) { - const clinic = clinics.find((item) => item.id === +slug); +async function Clinic({ params: { slug } }) { + const reqClinics = await axios.get( + `https://back-dev.clinic-pro.ir/api/v1/clinic/${slug}` + ); + + const reqDoctors = await axios.get( + "https://back-dev.clinic-pro.ir/api/v1/doctors" + ); + + const clinic = reqClinics.data; + const doctors = reqDoctors.data.$data; return ( @@ -13,4 +21,4 @@ function Blog({ params: { slug } }) { ); } -export default Blog; +export default Clinic; diff --git a/app/component/ItemDoctor.js b/app/component/ItemDoctor.js index dabbba0..4a694a4 100644 --- a/app/component/ItemDoctor.js +++ b/app/component/ItemDoctor.js @@ -68,24 +68,24 @@ function ItemDoctor({ doctor, loading }) {

    - {doctor.free_turn - ? `اولین نوبت آزاد: ${doctor.free_turn}` + {Number(doctor.active) + ? `اولین نوبت آزاد: ${Number(doctor.active)}` : "نوبت ندارد"}

    {/* Arrow */} - + diff --git a/app/component/comment/index.js b/app/component/comment/index.js index cf42acd..241b215 100644 --- a/app/component/comment/index.js +++ b/app/component/comment/index.js @@ -3,7 +3,7 @@ import { useState } from "react"; import ItemUser from "./ItemUser"; function Comment({ data, loading }) { - const [list, setList] = useState(data.comments); + const [list, setList] = useState(data?.comments); const [update, setUpdate] = useState(false); return ( @@ -13,8 +13,8 @@ function Comment({ data, loading }) { }`} > {data && - !!data.comments.length && - data.comments.map((item, idx) => ( + !!data?.comments?.length && + data?.comments.map((item, idx) => ( ; + return ; } diff --git a/app/doctor/[slug]/page.js b/app/doctor/[slug]/page.js index b83351d..7fa9ffb 100644 --- a/app/doctor/[slug]/page.js +++ b/app/doctor/[slug]/page.js @@ -1,9 +1,12 @@ import DoctorPage from "@/components/doctor"; import Layout from "@/components/layout/StLayout"; -import doctors from "@/data/doctors.json"; +import axios from "axios"; -function Doctor({ params: { slug } }) { - const doctor = doctors.find((item) => item.id === +slug); +async function Doctor({ params: { slug } }) { + const response = await axios.get( + `https://back-dev.clinic-pro.ir/api/v1/doctor/${slug}` + ); + const doctor = response.data; return ( diff --git a/app/doctors/page.js b/app/doctors/page.js index 32b5e88..3afdf8f 100644 --- a/app/doctors/page.js +++ b/app/doctors/page.js @@ -1,13 +1,21 @@ import DoctorsPage from "@/components/doctors"; import Layout from "@/components/layout/StLayout"; import { getStateInfo } from "@/lib/getStateInfo"; +import axios from "axios"; -function Doctors({ searchParams }) { +async function Doctors({ searchParams }) { const { matchedCity, matchedState } = getStateInfo(); + const response = await axios.get( + "https://back-dev.clinic-pro.ir/api/v1/doctors" + ); + + const doctors = response.data.$data; + return ( - {data.list_bime.map((item, idx) => ( + {data?.list_bime?.map((item, idx) => (
  • - {data.specialties.map((item, idx) => ( + {data?.specialties?.map((item, idx) => (
  • diff --git a/components/clinic/components/about/Specialties.js b/components/clinic/components/about/Specialties.js index a478843..104deab 100644 --- a/components/clinic/components/about/Specialties.js +++ b/components/clinic/components/about/Specialties.js @@ -9,7 +9,7 @@ function Specialties({ data, loading }) { gap-x-[40px] sm:gap-x-[48px] md:gap-x-[56px] lg:gap-x-[64px] gap-y-[24px] sm:gap-y-[30px] md:gap-y-[35px] lg:gap-y-[40px]" > - {data.specialties.map((item, idx) => ( + {data?.specialties?.map((item, idx) => (
  • diff --git a/components/clinic/components/about/images/Images.js b/components/clinic/components/about/images/Images.js index f48c730..4154cab 100644 --- a/components/clinic/components/about/images/Images.js +++ b/components/clinic/components/about/images/Images.js @@ -15,7 +15,7 @@ function Images({ data, loading }) { img clinic img clinic img clinic img clinic img clinic - {[...data.images_clinic, ...data.images_clinic].map((item, idx) => - idx !== 0 ? ( - - image clinic - - ) : undefined, - )} + {data && + data.images_clinic && + [...data?.images_clinic, ...data?.images_clinic]?.map((item, idx) => + idx !== 0 ? ( + + image clinic + + ) : undefined + )} ); } diff --git a/components/clinic/components/about/index.js b/components/clinic/components/about/index.js index 751a2e2..3783f1c 100644 --- a/components/clinic/components/about/index.js +++ b/components/clinic/components/about/index.js @@ -33,7 +33,7 @@ function About({ data, loading }) { : "after:bg-[linear-gradient(transparent,#FAFAFA)] max-h-[200px]" } `} - dangerouslySetInnerHTML={{ __html: data.caption }} + dangerouslySetInnerHTML={{ __html: data?.caption }} >

    diff --git a/components/dashboard/Content.js b/components/dashboard/Content.js index 86808cf..3797326 100644 --- a/components/dashboard/Content.js +++ b/components/dashboard/Content.js @@ -6,7 +6,7 @@ import userData from "@/data/userData.json"; import DashboardPage from "@/components/dashboard"; import UserAccountPage from "./userAccount"; -function Content({ matchedCity }) { +function Content({ matchedCity, logged }) { const [value, setValue] = useState(0); const [isOpenSide, setIsOpenSide] = useState(false); const [isTurnsDetails, setIsTurnsDetails] = useState(false); @@ -14,8 +14,9 @@ function Content({ matchedCity }) { return ( -

    +

    +

    {text}

    {children}
    diff --git a/components/dashboard/userAccount/components/UpdateBtn.js b/components/dashboard/userAccount/components/UpdateBtn.js index bef5874..1830d5a 100644 --- a/components/dashboard/userAccount/components/UpdateBtn.js +++ b/components/dashboard/userAccount/components/UpdateBtn.js @@ -5,7 +5,8 @@ function UpdateBtn() { return (
    -
    {components[tab]}
    +
    {components[tab]}
    )}
    diff --git a/components/dashboard/userAccount/content/index.js b/components/dashboard/userAccount/content/index.js deleted file mode 100644 index 43183f2..0000000 --- a/components/dashboard/userAccount/content/index.js +++ /dev/null @@ -1,134 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import profileData from "@/data/profile_other.json"; - -import ArrowRightD from "@/components/icons/ArrowRightD"; -import { Button } from "@mui/material"; -import DownloadD from "@/components/icons/DownloadD"; -import Disease from "../detailUser/disease"; -import Allergies from "../detailUser/allergies"; -import Medications from "../detailUser/medications"; -import Surgeries from "../detailUser/surgeries"; -import FamilyHistory from "../detailUser/familyHistory"; -import Relatives from "../detailUser/relatives"; -import HeadTab from "./HeadTab"; - -import DetailUser from "../detailUser/information"; -import Turns from "../sidebars/turns"; -import Transactions from "../sidebars/transactions"; -import Comments from "../sidebars/comments"; -import Messages from "../sidebars/messages"; -import NotfoundDashboard from "../NotfoundDashboard"; - -const listTab = [ - "بیماری‌ها", - "آلرژی‌ها", - "داروهای مصرفی", - "جراحی‌ها", - "سابقه خانوادگی بیماری", - "بستگان", -]; - -function ContentTabs({ - user, - value, - isTurnsDetails, - setIsTurnsDetails, - setValue, - setIsOpenSide, -}) { - const [tab, setTab] = useState(0); - const [data, setData] = useState(profileData[0]); - - const handleChange = (_, newValue) => setTab(newValue); - const changeData = (action, name, id, payload) => { - const newData = { - ...data, - [name]: [...data[name]], - }; - - switch (action) { - case "update": - newData[name][id] = payload; - break; - - case "add": - newData[name].push(payload); - break; - - case "delete": - newData[name].splice(id, 1); - break; - - default: - console.warn(`Unknown action: ${action}`); - return; - } - setData(newData); - }; - - const components = [ - // , - // , - // , - // , - // , - // , - - , - , - , - , - , - , - ]; - - return ( -
    -
    - - {value === 1 && isTurnsDetails ? ( - - ) : undefined} -
    -
    {components[value]}
    - {/* */} -
    - ); -} - -export default ContentTabs; diff --git a/components/dashboard/userAccount/detailUser/allergies/modal/index.js b/components/dashboard/userAccount/detailUser/allergies/modal/index.js index bfd36f9..3f9ef0e 100644 --- a/components/dashboard/userAccount/detailUser/allergies/modal/index.js +++ b/components/dashboard/userAccount/detailUser/allergies/modal/index.js @@ -4,6 +4,7 @@ import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; import { useState } from "react"; +import CloseModalD from "@/components/icons/CloseModalD"; function ModalAddAlergie({ open, setOpen, changeData }) { const contentItem = { @@ -45,6 +46,9 @@ function ModalAddAlergie({ open, setOpen, changeData }) {

    اضافه کردن آلرژی

    +
  • diff --git a/components/dashboard/userAccount/detailUser/familyHistory/modal/index.js b/components/dashboard/userAccount/detailUser/familyHistory/modal/index.js index 0bc985d..3e8c584 100644 --- a/components/dashboard/userAccount/detailUser/familyHistory/modal/index.js +++ b/components/dashboard/userAccount/detailUser/familyHistory/modal/index.js @@ -4,6 +4,7 @@ import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; import { useState } from "react"; +import CloseModalD from "@/components/icons/CloseModalD"; function ModalAddHistory({ open, setOpen, changeData }) { const contentItem = { @@ -39,6 +40,9 @@ function ModalAddHistory({ open, setOpen, changeData }) {

    اضافه کردن سابقه خانوادگی بیماری

    +
    diff --git a/components/dashboard/userAccount/detailUser/medications/modal/index.js b/components/dashboard/userAccount/detailUser/medications/modal/index.js index 7a548df..dc356f6 100644 --- a/components/dashboard/userAccount/detailUser/medications/modal/index.js +++ b/components/dashboard/userAccount/detailUser/medications/modal/index.js @@ -4,6 +4,7 @@ import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import { useState } from "react"; import Content from "./Content"; +import CloseModalD from "@/components/icons/CloseModalD"; function ModalAddMedications({ open, setOpen, changeData }) { const contentItem = { @@ -41,6 +42,9 @@ function ModalAddMedications({ open, setOpen, changeData }) {

    اضافه کردن دارو های مصرفی

    +
    diff --git a/components/dashboard/userAccount/detailUser/relatives/modal/index.js b/components/dashboard/userAccount/detailUser/relatives/modal/index.js index 9cbe776..49467cf 100644 --- a/components/dashboard/userAccount/detailUser/relatives/modal/index.js +++ b/components/dashboard/userAccount/detailUser/relatives/modal/index.js @@ -4,6 +4,7 @@ import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; import { useState } from "react"; +import CloseModalD from "@/components/icons/CloseModalD"; function ModalAddRelatives({ open, setOpen, changeData }) { const contentItem = { @@ -51,6 +52,9 @@ function ModalAddRelatives({ open, setOpen, changeData }) {

    اضافه کردن بستگان

    +
    diff --git a/components/dashboard/userAccount/detailUser/surgeries/modal/index.js b/components/dashboard/userAccount/detailUser/surgeries/modal/index.js index 1280c16..e665237 100644 --- a/components/dashboard/userAccount/detailUser/surgeries/modal/index.js +++ b/components/dashboard/userAccount/detailUser/surgeries/modal/index.js @@ -4,6 +4,7 @@ import UpdateBtn from "@/components/dashboard/userAccount/components/UpdateBtn"; import { Button, Modal } from "@mui/material"; import Content from "./Content"; import { useState } from "react"; +import CloseModalD from "@/components/icons/CloseModalD"; function ModalAddSurgeries({ open, setOpen, changeData }) { const contentItem = { @@ -41,6 +42,9 @@ function ModalAddSurgeries({ open, setOpen, changeData }) {

    اضافه کردن جراحی

    +
    diff --git a/components/dashboard/userAccount/index.js b/components/dashboard/userAccount/index.js index 5ea90a9..14d6503 100644 --- a/components/dashboard/userAccount/index.js +++ b/components/dashboard/userAccount/index.js @@ -1,3 +1,4 @@ +import { Button } from "@mui/material"; import DetailUser from "./detailUser"; import Head from "./Head"; import NotfoundDashboard from "./NotfoundDashboard"; @@ -7,6 +8,17 @@ import Comments from "./sidebars/comments"; import Messages from "./sidebars/messages"; import Transactions from "./sidebars/transactions"; import Turns from "./sidebars/turns"; +import DownloadD from "@/components/icons/DownloadD"; +import ArrowRightD from "@/components/icons/ArrowRightD"; + +const listTab = [ + "حساب کاربری", + "نوبت های من", + "تراکنش های من", + "نظرات من", + "پیام ها", + "خروج", +]; function UserAccountPage({ user, @@ -37,6 +49,29 @@ function UserAccountPage({ ) : ( <> +
    + + {value === 1 && isTurnsDetails ? ( + + ) : undefined} +
    {sidebars[value]}
    diff --git a/components/doctor/appointmentList/ItemAppointment.js b/components/doctor/appointmentList/ItemAppointment.js index 87c651b..72b336e 100644 --- a/components/doctor/appointmentList/ItemAppointment.js +++ b/components/doctor/appointmentList/ItemAppointment.js @@ -17,17 +17,17 @@ function ItemAppointment({ turn, doctor, loading }) {
    - doctor + doctor

    - {doctor.name} + {doctor?.name}

    - تخصص: {doctor.expertise} + تخصص: {doctor?.expertise}

    diff --git a/components/doctor/detailDoctor/Title.js b/components/doctor/detailDoctor/Title.js index 7d888a3..8516862 100644 --- a/components/doctor/detailDoctor/Title.js +++ b/components/doctor/detailDoctor/Title.js @@ -15,7 +15,7 @@ function Title({ doctor, loading }) { w-[40px] sm:w-[81px] md:w-[123px] lg:w-[164px] h-[40px] sm:h-[81px] md:h-[123px] lg:h-[164px] " - src={doctor.img} + src={doctor?.img} alt="img-doctor" height={164} width={164} @@ -24,18 +24,18 @@ function Title({ doctor, loading }) {

    - {doctor.name} + {doctor?.title}

    - تخصص: {doctor.expertise} + تخصص: {doctor?.expertise}

    - {doctor.experience} سال تجربه + {doctor?.experience} سال تجربه

    @@ -44,7 +44,7 @@ function Title({ doctor, loading }) {

    - کد نظام پزشکی: {doctor.medical_system_code} + کد نظام پزشکی: {doctor?.medical_system_code}

    @@ -54,13 +54,13 @@ function Title({ doctor, loading }) {

    - امتیاز: {doctor.point} + امتیاز: {doctor?.point}

    - {doctor.satisfaction}% رضایت کاربران + {doctor?.satisfaction}% رضایت کاربران

    diff --git a/components/doctor/detailDoctor/cards/AboutDcotor.js b/components/doctor/detailDoctor/cards/AboutDcotor.js index 942177f..05e557c 100644 --- a/components/doctor/detailDoctor/cards/AboutDcotor.js +++ b/components/doctor/detailDoctor/cards/AboutDcotor.js @@ -28,7 +28,7 @@ function AboutDcotor({ doctor, loading }) { } `} > - {doctor.detail} + {doctor?.detail}

    diff --git a/components/doctor/detailDoctor/cards/comments/chart/index.js b/components/doctor/detailDoctor/cards/comments/chart/index.js index 601bd7a..b6e5ee3 100644 --- a/components/doctor/detailDoctor/cards/comments/chart/index.js +++ b/components/doctor/detailDoctor/cards/comments/chart/index.js @@ -5,7 +5,6 @@ import LikeDI from "@/components/icons/LikeDI"; import ProgressDetail from "@/app/component/ProfressDetail"; import TextLoading from "@/app/component/loading/Text"; import CustomLoading from "@/app/component/loading/Custom"; -import CircularLoading from "@/app/component/loading/Circular"; function Chart({ doctor, loading }) { return ( @@ -18,10 +17,10 @@ function Chart({ doctor, loading }) {

    - امتیاز کلی کاربران: {doctor.overall_score} از 5 + امتیاز کلی کاربران: {doctor?.overall_score} از 5

    - (از مجموع {doctor.comments.length} نظر) + (از مجموع {doctor?.comments?.length} نظر)

    @@ -41,13 +40,13 @@ function Chart({ doctor, loading }) {

    - امتیاز: {doctor.point} + امتیاز: {doctor?.point}

    - {doctor.satisfaction}% رضایت کاربران + {doctor?.satisfaction}% رضایت کاربران

    @@ -58,7 +57,7 @@ function Chart({ doctor, loading }) { loading ? "lg:w-full" : "lg:w-fit" }`} > - {doctor.progress_detail.map((item, idx) => ( + {doctor?.progress_detail?.map((item, idx) => ( diff --git a/components/doctor/detailDoctor/cards/comments/modal/ModalAnswer.js b/components/doctor/detailDoctor/cards/comments/modal/ModalAnswer.js index 6771012..9a617bc 100644 --- a/components/doctor/detailDoctor/cards/comments/modal/ModalAnswer.js +++ b/components/doctor/detailDoctor/cards/comments/modal/ModalAnswer.js @@ -48,7 +48,7 @@ function ModalAnswer({ doctor }) { }} />
      - {doctor.progress_detail.map((item, idx) => ( + {doctor?.progress_detail?.map((item, idx) => ( ))}
    @@ -59,7 +59,7 @@ function ModalAnswer({ doctor }) { multiline={true} title="نظر خود را بنویسید..." /> - +
      - {data.specialties.map((item, idx) => ( + {data?.specialties?.map((item, idx) => (
    • {item}

      diff --git a/components/doctors/index.js b/components/doctors/index.js index 82ac3b8..cc1b33f 100644 --- a/components/doctors/index.js +++ b/components/doctors/index.js @@ -11,7 +11,7 @@ import ModalSearchCity from "@/app/component/modalSearchCity"; // Data import specialties from "@/data/specialties.json"; -function DoctorsPage({ params, matchedCity, matchedState }) { +function DoctorsPage({ params, matchedCity, matchedState, list }) { const [loading, setLoading] = useState(true); const [open, setOpen] = useState(false); const [selected, setSelected] = useState({ @@ -65,7 +65,7 @@ function DoctorsPage({ params, matchedCity, matchedState }) {
    - +
    ); } diff --git a/components/doctors/listDoctors/index.js b/components/doctors/listDoctors/index.js index 6e016b6..5251df1 100644 --- a/components/doctors/listDoctors/index.js +++ b/components/doctors/listDoctors/index.js @@ -2,11 +2,11 @@ import doctors from "@/data/doctors.json"; import Pagination from "@/app/component/Pagination"; import ItemDoctor from "@/app/component/ItemDoctor"; -function ListDoctors({ loading }) { +function ListDoctors({ loading, list }) { return ( <>
      - {doctors.map((doctor) => ( + {list.map((doctor) => ( ))}
    diff --git a/components/layout/StLayout.js b/components/layout/StLayout.js index 2fd0cae..485e865 100644 --- a/components/layout/StLayout.js +++ b/components/layout/StLayout.js @@ -1,16 +1,19 @@ import { getStateInfo } from "@/lib/getStateInfo"; import Footer from "./footer"; import Header from "./header"; +import { cookies } from "next/headers"; function StLayout({ children, name }) { const { matchedCity } = getStateInfo(); + const cookieStore = cookies(); + const token = cookieStore.get("access_token"); return (
    -
    +
    diff --git a/components/layout/header/Content.js b/components/layout/header/Content.js index c951ac2..f97ef78 100644 --- a/components/layout/header/Content.js +++ b/components/layout/header/Content.js @@ -10,7 +10,7 @@ import BgGray from "./list/col/BgGray"; import UserLogin from "@/components/icons/UserLogin"; import { useState } from "react"; -function Content({ matchedCity, name }) { +function Content({ matchedCity, name, logged }) { const [isActive, setIsActive] = useState(false); return ( @@ -33,20 +33,23 @@ function Content({ matchedCity, name }) {
    - - -
    - - + + + ) : ( + + + + )}
    ); } diff --git a/components/layout/header/index.js b/components/layout/header/index.js index 64b7907..60c11be 100644 --- a/components/layout/header/index.js +++ b/components/layout/header/index.js @@ -1,9 +1,9 @@ import Content from "./Content"; -function Header({ matchedCity, name }) { +function Header({ matchedCity, name, logged }) { return (
    - +
    ); } diff --git a/components/layout/index.js b/components/layout/index.js index dedbcb9..218e668 100644 --- a/components/layout/index.js +++ b/components/layout/index.js @@ -14,6 +14,7 @@ function Layout({ user, value, setValue, + logged, matchedCity, }) { return ( @@ -24,7 +25,7 @@ function Layout({ >
    -
    +
    { removeToken(); - window.location.pathname = "/login"; + router.replace("/login"); handleClose(); }; diff --git a/components/register/verificationPage/SendReq.js b/components/register/verificationPage/SendReq.js index a9dd7fe..0312ae7 100644 --- a/components/register/verificationPage/SendReq.js +++ b/components/register/verificationPage/SendReq.js @@ -1,5 +1,4 @@ import { Button } from "@mui/material"; -import { useRouter } from "next/navigation"; import { request } from "@/services/response"; import Cookies from "js-cookie"; @@ -12,8 +11,6 @@ function SendReq({ setIsError, uuid, }) { - const router = useRouter(); - const handleSetCookie = (response) => { const accessTokenExpires = new Date(); accessTokenExpires.setSeconds( @@ -50,7 +47,7 @@ function SendReq({ .then((response) => { setLoading(false); if (response.access_token) { - router.replace("/"); + window.location.pathname = "/"; handleSetCookie(response); } }) diff --git a/helper/index.js b/helper/index.js index e341cce..b1ceb41 100644 --- a/helper/index.js +++ b/helper/index.js @@ -2,7 +2,7 @@ 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 numberToArStyle = (num) => num?.toLocaleString("ar-AE") || ""; export const isActiveURL = (link, name) => link === name; diff --git a/utils/index.js b/utils/index.js index b8a53d5..d03e027 100644 --- a/utils/index.js +++ b/utils/index.js @@ -1,5 +1,8 @@ import Cookies from "js-cookie"; -const removeToken = () => Cookies.remove("token", { path: "/" }); +const removeToken = () => { + Cookies.remove("access_token", { path: "/" }); + Cookies.remove("refresh_token", { path: "/" }); +}; export { removeToken }; From 0217e5e67ef01ed100c063c4ac18bc867ae56754 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Mon, 2 Jun 2025 06:04:49 +0330 Subject: [PATCH 074/124] change data blog item and clinic item & change pages clinic and clinic to ssr & remove loading & handle pagination page clinics --- app/blog/[slug]/page.js | 14 ++- app/blogs/page.js | 12 ++- app/component/ItemDoctor.js | 20 ++--- app/component/comment/ItemUser.js | 90 ++++++------------- app/component/comment/index.js | 3 +- app/component/openLocation/Content.js | 11 ++- components/blog/relatedContent/index.js | 2 +- components/blogs/Head.js | 82 ++++++----------- components/blogs/index.js | 16 +--- components/blogs/latestArticles/Article.js | 26 +++--- components/blogs/latestArticles/index.js | 9 +- .../clinic/components/about/ContentDetail.js | 4 +- .../clinic/components/about/ListBime.js | 4 +- .../clinic/components/about/Services.js | 4 +- .../clinic/components/about/Specialties.js | 4 +- .../clinic/components/about/images/Images.js | 15 ++-- .../clinic/components/about/images/List.js | 10 +-- .../clinic/components/about/images/Slider.js | 4 +- components/clinic/components/about/index.js | 23 ++--- .../components/contact/ContentDetail.js | 6 +- .../clinic/components/contact/Detail.js | 8 +- components/clinic/components/contact/index.js | 6 +- components/clinic/components/doctors/List.js | 4 +- components/clinic/components/doctors/index.js | 4 +- components/clinic/index.js | 15 +--- components/clinics/index.js | 3 - components/doctor/detailDoctor/Title.js | 14 +-- .../doctor/detailDoctor/cards/AboutDcotor.js | 6 +- .../cards/comments/chart/ProgressAll.js | 4 +- .../cards/comments/chart/index.js | 20 ++--- .../detailDoctor/cards/comments/index.js | 6 +- .../detailDoctor/cards/locations/index.js | 4 +- components/doctor/detailDoctor/index.js | 10 +-- components/doctor/index.js | 6 +- services/response.js | 1 + 35 files changed, 194 insertions(+), 276 deletions(-) diff --git a/app/blog/[slug]/page.js b/app/blog/[slug]/page.js index 4022aa7..165a233 100644 --- a/app/blog/[slug]/page.js +++ b/app/blog/[slug]/page.js @@ -1,13 +1,21 @@ +import axios from "axios"; import BlogPage from "@/components/blog"; import articles from "@/data/articles.json"; import Layout from "@/components/layout/StLayout"; -function Blog({ params: { slug } }) { - const article = articles.find((item) => item.id === +slug); +async function Blog({ params: { slug } }) { + const blog = await axios.get( + `https://back-dev.clinic-pro.ir/api/v1/blog/${slug}` + ); + const blogs = await axios.get("https://back-dev.clinic-pro.ir/api/v1/blogs"); + + const resBlog = blog.data; + const resBlogs = blogs.data; + console.log(resBlogs); return ( - + ); } diff --git a/app/blogs/page.js b/app/blogs/page.js index ed9764b..ba253de 100644 --- a/app/blogs/page.js +++ b/app/blogs/page.js @@ -1,12 +1,16 @@ import BlogsPage from "@/components/blogs"; import Layout from "@/components/layout/StLayout"; +import axios from "axios"; + +export default async function Blogs() { + const response = await axios.get( + "https://back-dev.clinic-pro.ir/api/v1/blogs" + ); + const blogs = response.data.blogs; -function Blogs() { return ( - + ); } - -export default Blogs; diff --git a/app/component/ItemDoctor.js b/app/component/ItemDoctor.js index 4a694a4..719ba37 100644 --- a/app/component/ItemDoctor.js +++ b/app/component/ItemDoctor.js @@ -1,5 +1,5 @@ import Image from "next/image"; -import { Button, Skeleton } from "@mui/material"; +import { Button } from "@mui/material"; // Icons import ArrowLeftD from "@/components/icons/ArrowLeftD"; @@ -11,12 +11,12 @@ import CustomLoading from "./loading/Custom"; import TextLoading from "./loading/Text"; import CircularLoading from "./loading/Circular"; -function ItemDoctor({ doctor, loading }) { +function ItemDoctor({ doctor }) { return (
  • {/* Detail Doctor */}
    - +
    - +

    {doctor.name}

    - +

    تخصص: {doctor.expertise}

    - +
    @@ -58,13 +58,13 @@ function ItemDoctor({ doctor, loading }) { {/* Hours of work */}
    - +

    ساعت کاری: {doctor.hours_of_work}

    - +

    diff --git a/app/component/comment/ItemUser.js b/app/component/comment/ItemUser.js index 0f29681..fb5785b 100644 --- a/app/component/comment/ItemUser.js +++ b/app/component/comment/ItemUser.js @@ -9,15 +9,7 @@ import DisLikeComment from "@/components/icons/DisLikeComment"; import ArrowUpComment from "@/components/icons/ArrowUpComment"; import LikeComment from "@/components/icons/LikeComment"; -function ItemUser({ - update, - setUpdate, - isReply, - list, - setList, - data, - loading, -}) { +function ItemUser({ update, setUpdate, isReply, list, setList, data }) { const handleLike = (lengthLike, data, nameLike, nameIsLike) => { if (nameIsLike === "is_like" && data.is_dislike) { data.is_dislike = false; @@ -34,46 +26,26 @@ function ItemUser({ return (

  • - {loading ? ( - - ) : ( - profile - )} + profile
    - {loading ? ( - - ) : ( - <> -

    - {data.name} -

    -

    - 3 روز پیش -

    - - )} +

    + {data.name} +

    +

    + 3 روز پیش +

    - {loading ? ( - <> - - - - ) : ( -

    - {data.comment} -

    - )} +

    + {data.comment} +

    {data.is_like ? : }
    - {loading ? ( - - ) : ( -

    - {data.like} -

    - )} +

    + {data.like} +

    {data.is_dislike ? : }
    - {loading ? ( - - ) : ( -

    - {data.dislike} -

    - )} +

    + {data.dislike} +