feat: clinic doc integration
This commit is contained in:
parent
232f11d142
commit
24c600ac32
|
|
@ -1,5 +1,5 @@
|
|||
import { Clear } from '@mui/icons-material';
|
||||
import ExpandMoreOutlinedIcon from '@mui/icons-material/ExpandMoreOutlined';
|
||||
import { Clear } from "@mui/icons-material";
|
||||
import ExpandMoreOutlinedIcon from "@mui/icons-material/ExpandMoreOutlined";
|
||||
import {
|
||||
Autocomplete,
|
||||
Box,
|
||||
|
|
@ -8,17 +8,16 @@ import {
|
|||
CircularProgress,
|
||||
ListItemText,
|
||||
Stack,
|
||||
TextField
|
||||
} from '@mui/material';
|
||||
import debounce from 'lodash/debounce';
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import { NOTIFICATION } from '../constants';
|
||||
import { pushNotification } from '../utils/notification';
|
||||
import { useStyles } from './styles/multiSelectStyles';
|
||||
TextField,
|
||||
} from "@mui/material";
|
||||
import debounce from "lodash/debounce";
|
||||
import React, { useEffect, useMemo, useState } from "react";
|
||||
import { NOTIFICATION } from "../constants";
|
||||
import { pushNotification } from "../utils/notification";
|
||||
import { useStyles } from "./styles/multiSelectStyles";
|
||||
import { getMasterData } from "../services/masterData.services";
|
||||
|
||||
const MultiSelect = ({
|
||||
apiCall,
|
||||
searchParams = {},
|
||||
searchDebounceTime = 500,
|
||||
maxSelections = Infinity,
|
||||
formik,
|
||||
|
|
@ -26,19 +25,16 @@ const MultiSelect = ({
|
|||
fieldObjectValue,
|
||||
getOptionLabel,
|
||||
customErrorMessage = null,
|
||||
hideEndAdornment = false,
|
||||
onError = (error) => console.error(error),
|
||||
onOptionsChange = () => {},
|
||||
fieldName,
|
||||
styleForSelectorParent,
|
||||
styleForSelector,
|
||||
placeholderText = '',
|
||||
placeholderText = "",
|
||||
inputRef,
|
||||
}) => {
|
||||
const classes = useStyles();
|
||||
const [data, setData] = useState([]);
|
||||
const [page, setPage] = useState(0);
|
||||
const [searchQuery, setSearchQuery] = useState('');
|
||||
const [searchQuery, setSearchQuery] = useState("");
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [hasMore, setHasMore] = useState(true);
|
||||
const [dropdownOpen, setDropdownOpen] = useState(false);
|
||||
|
|
@ -47,20 +43,8 @@ const MultiSelect = ({
|
|||
const fetchData = async () => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const response = await apiCall({
|
||||
...searchParams,
|
||||
page,
|
||||
size: 30,
|
||||
search: searchQuery,
|
||||
});
|
||||
const newData = response?.data || [];
|
||||
if (page === 0) {
|
||||
setData(newData);
|
||||
} else {
|
||||
setData((prevData) => [...prevData, ...newData]);
|
||||
}
|
||||
setHasMore(newData.length > 0);
|
||||
onOptionsChange(newData);
|
||||
const response = await getMasterData();
|
||||
setData(response?.data?.data?.data);
|
||||
} catch (error) {
|
||||
onError(error);
|
||||
} finally {
|
||||
|
|
@ -182,13 +166,13 @@ const MultiSelect = ({
|
|||
debouncedSearch(event.target.value.trim());
|
||||
}}
|
||||
onKeyDown={(event) => {
|
||||
if (event.key === 'Backspace') {
|
||||
if (event.key === "Backspace") {
|
||||
event.stopPropagation();
|
||||
}
|
||||
}}
|
||||
InputProps={{
|
||||
...params.InputProps,
|
||||
type: 'search',
|
||||
type: "search",
|
||||
endAdornment: (
|
||||
<>
|
||||
{isLoading ? (
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ export const createAdmin = (data) => {
|
|||
export const getAdmins = (params) => {
|
||||
|
||||
let searchParams = new URLSearchParams();
|
||||
searchParams.append("size", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex ?? 0);
|
||||
searchParams.append("limit", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex+1 ?? 1);
|
||||
searchParams.append("search", params?.globalFilter ?? "");
|
||||
|
||||
const url = `/admin/?${searchParams.toString()}`;
|
||||
|
|
|
|||
|
|
@ -2,23 +2,10 @@ import { axiosInstance } from "../config/api";
|
|||
import { CLINIC_TYPE } from "../constants";
|
||||
import { clinicsData, registeredClinicsData } from "../mock/clinics";
|
||||
|
||||
// export const getClinics = (params) => {
|
||||
// switch (params.type) {
|
||||
// case CLINIC_TYPE.UNREGISTERED:
|
||||
// return { data: clinicsData };
|
||||
// case CLINIC_TYPE.REGISTERED:
|
||||
// return { data: registeredClinicsData };
|
||||
// case CLINIC_TYPE.SUBSCRIBED:
|
||||
// return { data: registeredClinicsData };
|
||||
// default:
|
||||
// return { data: clinicsData };
|
||||
// }
|
||||
// };
|
||||
|
||||
export const getClinics = (params) => {
|
||||
let searchParams = new URLSearchParams();
|
||||
searchParams.append("size", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex ?? 0);
|
||||
searchParams.append("limit", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex+1 ?? 1);
|
||||
searchParams.append("filter_type", params?.type ?? CLINIC_TYPE.REGISTERED);
|
||||
searchParams.append("search", params?.globalFilter ?? "");
|
||||
|
||||
|
|
@ -30,7 +17,6 @@ export const getClinics = (params) => {
|
|||
.then((response) => resolve(response))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
export const getLatestClinicId = () => {
|
||||
|
|
@ -94,11 +80,10 @@ export const createClinicOffer = (data) => {
|
|||
};
|
||||
|
||||
export const getClinicOffer = (params) => {
|
||||
|
||||
let searchParams = new URLSearchParams();
|
||||
searchParams.append("size", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex ?? 0);
|
||||
searchParams.append("search", params?.globalFilter ?? "");
|
||||
let searchParams = new URLSearchParams();
|
||||
searchParams.append("limit", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex+1 ?? 1);
|
||||
searchParams.append("search", params?.globalFilter ?? "");
|
||||
|
||||
const url = `/admin/clinic/offers?${searchParams.toString()}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
|
|
@ -128,3 +113,49 @@ export const deleteClinicOffer = (id) => {
|
|||
.catch((err) => reject(err));
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
export const getClinicDoctors = (params) => {
|
||||
let searchParams = new URLSearchParams();
|
||||
searchParams.append("limit", params?.pagination?.pageSize ?? 10);
|
||||
searchParams.append("page", params?.pagination.pageIndex+1 ?? 1);
|
||||
searchParams.append("search", params?.globalFilter ?? "");
|
||||
|
||||
const url = `/clinic-doctors?${searchParams.toString()}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
axiosInstance
|
||||
.get(url)
|
||||
.then((response) => resolve(response))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
export const createDoctor = (data) => {
|
||||
const url = `/clinic-doctors/`;
|
||||
return new Promise((resolve, reject) => {
|
||||
axiosInstance
|
||||
.post(url, data)
|
||||
.then((response) => resolve(response))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
};
|
||||
|
||||
export const updateDoctor = (data, id) => {
|
||||
const url = `/clinic-doctors/${id}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
axiosInstance
|
||||
.put(url, data)
|
||||
.then((response) => resolve(response))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
};
|
||||
|
||||
export const deleteDoctor = (id) => {
|
||||
const url = `/clinic-doctors/${id}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
axiosInstance
|
||||
.delete(url)
|
||||
.then((response) => resolve(response))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ const ClinicsList = () => {
|
|||
tableState?.pagination?.pageIndex * tableState?.pagination?.pageSize
|
||||
)
|
||||
?.toString()
|
||||
?.padStart(2, "0");
|
||||
?.padStart(1, "0");
|
||||
return <span>{serialNumber}</span>;
|
||||
},
|
||||
enableSorting: false,
|
||||
|
|
@ -273,7 +273,7 @@ const ClinicsList = () => {
|
|||
tableState?.pagination?.pageSize
|
||||
)
|
||||
?.toString()
|
||||
?.padStart(2, "0");
|
||||
?.padStart(1, "0");
|
||||
return <span>{serialNumber}</span>;
|
||||
},
|
||||
enableSorting: false,
|
||||
|
|
@ -519,7 +519,7 @@ const ClinicsList = () => {
|
|||
columns={columnsUnregistered}
|
||||
getData={getData}
|
||||
options={{
|
||||
enableRowSelection: true,
|
||||
enableRowSelection: false,
|
||||
showTopBar: false,
|
||||
showFilters: true,
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ const MasterDataManagement = () => {
|
|||
tableState?.pagination?.pageIndex * tableState?.pagination?.pageSize
|
||||
)
|
||||
?.toString()
|
||||
?.padStart(2, "0");
|
||||
?.padStart(1, "0");
|
||||
return <span>{serialNumber}</span>;
|
||||
},
|
||||
enableSorting: false,
|
||||
|
|
@ -182,6 +182,13 @@ const MasterDataManagement = () => {
|
|||
size: 280,
|
||||
accessorKey: "type",
|
||||
header: "Type",
|
||||
Cell: (props) => {
|
||||
return (
|
||||
<span>
|
||||
{props.row.original.type.charAt(0).toUpperCase() + props.row.original.type.slice(1)}
|
||||
</span>
|
||||
);
|
||||
},
|
||||
enableColumnFilter: false,
|
||||
},
|
||||
// Removed the empty object that was causing the error
|
||||
|
|
@ -203,7 +210,7 @@ const MasterDataManagement = () => {
|
|||
columns={columns}
|
||||
getData={getData}
|
||||
options={{
|
||||
enableRowSelection: true,
|
||||
enableRowSelection: false,
|
||||
showTopBar: false,
|
||||
showFilters: true,
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import CustomBreadcrumbs from "../../components/CustomBreadcrumbs";
|
|||
import PageHeader from "../../components/PageHeader";
|
||||
import { useStyles } from "./paymentStyles";
|
||||
import Table from "../../components/Table";
|
||||
import { getAdmins } from "../../services/auth.services";
|
||||
import { pushNotification } from "../../utils/notification";
|
||||
import { NOTIFICATION } from "../../constants";
|
||||
import { emailRegex } from "../../utils/regex";
|
||||
|
|
@ -66,7 +65,7 @@ const PaymentManagement = () => {
|
|||
tableState?.pagination?.pageIndex * tableState?.pagination?.pageSize
|
||||
)
|
||||
?.toString()
|
||||
?.padStart(2, "0");
|
||||
?.padStart(1, "0");
|
||||
return <span>{serialNumber}</span>;
|
||||
},
|
||||
enableSorting: false,
|
||||
|
|
@ -261,7 +260,7 @@ const PaymentManagement = () => {
|
|||
columns={columns}
|
||||
getData={getData}
|
||||
options={{
|
||||
enableRowSelection: true,
|
||||
enableRowSelection: false,
|
||||
showTopBar: false,
|
||||
showFilters: true,
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ const StaffManagement = () => {
|
|||
tableState?.pagination?.pageIndex * tableState?.pagination?.pageSize
|
||||
)
|
||||
?.toString()
|
||||
?.padStart(2, "0");
|
||||
?.padStart(1, "0");
|
||||
return <span>{serialNumber}</span>;
|
||||
},
|
||||
enableSorting: false,
|
||||
|
|
@ -243,7 +243,7 @@ const StaffManagement = () => {
|
|||
columns={columns}
|
||||
getData={getData}
|
||||
options={{
|
||||
enableRowSelection: true,
|
||||
enableRowSelection: false,
|
||||
showTopBar: false,
|
||||
showFilters: true,
|
||||
}}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue