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