diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 49fbfa4..190587f 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -357,6 +357,8 @@ "requiredPhone": true, "requiredFirstName": true, "requiredLastName": true, - "requiredEmail": true + "requiredEmail": true, + "requiredExcelValidator": true, + "requiredImageValidator": true } } diff --git a/.vscode/settings.json b/.vscode/settings.json index 731443b..94a4b15 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -91,5 +91,7 @@ "borderStyle": "solid" } ] - } + }, + "editor.autoIndent": "advanced", + "editor.bracketPairColorization.independentColorPoolPerBracketType": true } diff --git a/auto-imports.d.ts b/auto-imports.d.ts index 3737951..cfebfb4 100644 --- a/auto-imports.d.ts +++ b/auto-imports.d.ts @@ -122,7 +122,9 @@ declare global { const regexValidator: typeof import('./resources/js/@core/utils/validators.js')['regexValidator'] const registerPlugins: typeof import('./resources/js/@core/utils/plugins.js')['registerPlugins'] const requiredEmail: typeof import('./resources/js/@core/utils/validators.js')['requiredEmail'] + const requiredExcelValidator: typeof import('./resources/js/@core/utils/validators.js')['requiredExcelValidator'] const requiredFirstName: typeof import('./resources/js/@core/utils/validators.js')['requiredFirstName'] + const requiredImageValidator: typeof import('./resources/js/@core/utils/validators.js')['requiredImageValidator'] const requiredLastName: typeof import('./resources/js/@core/utils/validators.js')['requiredLastName'] const requiredPhone: typeof import('./resources/js/@core/utils/validators.js')['requiredPhone'] const requiredValidator: typeof import('./resources/js/@core/utils/validators.js')['requiredValidator'] @@ -481,7 +483,9 @@ declare module 'vue' { readonly regexValidator: UnwrapRef readonly registerPlugins: UnwrapRef readonly requiredEmail: UnwrapRef + readonly requiredExcelValidator: UnwrapRef readonly requiredFirstName: UnwrapRef + readonly requiredImageValidator: UnwrapRef readonly requiredLastName: UnwrapRef readonly requiredPhone: UnwrapRef readonly requiredValidator: UnwrapRef @@ -833,7 +837,9 @@ declare module '@vue/runtime-core' { readonly regexValidator: UnwrapRef readonly registerPlugins: UnwrapRef readonly requiredEmail: UnwrapRef + readonly requiredExcelValidator: UnwrapRef readonly requiredFirstName: UnwrapRef + readonly requiredImageValidator: UnwrapRef readonly requiredLastName: UnwrapRef readonly requiredPhone: UnwrapRef readonly requiredValidator: UnwrapRef diff --git a/resources/js/@core/utils/validators.js b/resources/js/@core/utils/validators.js index c3c3733..46d16f0 100644 --- a/resources/js/@core/utils/validators.js +++ b/resources/js/@core/utils/validators.js @@ -124,3 +124,15 @@ export const requiredEmail = value => { return !!String(value).trim().length || 'Email is required' } +export const requiredImageValidator = value => { + if (isNullOrUndefined(value) || isEmptyArray(value) || value === false) + return 'Image field is required' + + return !!String(value).trim().length || 'Email is required' +} +export const requiredExcelValidator = value => { + if (isNullOrUndefined(value) || isEmptyArray(value) || value === false) + return 'Excel field is required' + + return !!String(value).trim().length || 'Email is required' +} diff --git a/resources/js/constants.js b/resources/js/constants.js index 0d34c31..4900679 100644 --- a/resources/js/constants.js +++ b/resources/js/constants.js @@ -23,5 +23,10 @@ export const MEETING_NOTES_API = MAIN_DOMAIN + "/api/admin/get-note/" export const APPOINTMENT_DETAILS_API = MAIN_DOMAIN + "/api/admin/get-appointment/" +export const MEDICINE_LIST_API = MAIN_DOMAIN + "/api/admin/get-med-list" +export const MEDICINE_ADD_QUESTIONERIES_EXCEL_API = MAIN_DOMAIN + "/api/admin/questions-files" +export const MEDICINE_SAVE_API = MAIN_DOMAIN + "/api/admin/save-med" +export const MEDICINE_UPDATE_API = MAIN_DOMAIN + "/api/admin/update-med/" +export const MEDICINE_DELETE_API = MAIN_DOMAIN + "/api/admin/delete-med/" diff --git a/resources/js/pages/dashboards/crm.vue b/resources/js/pages/dashboards/crm.vue index 7dd6ff9..944f3d9 100644 --- a/resources/js/pages/dashboards/crm.vue +++ b/resources/js/pages/dashboards/crm.vue @@ -15,16 +15,16 @@ import { useStore } from 'vuex' const store = useStore() const cardStatisticsWithImages = [ { - title: 'Ratings', - subtitle: 'Year of 2021', + title: 'Patients', + subtitle: 'Year of 2024', stats: '13k', change: 15.6, image: illustration1, color: 'primary', }, { - title: 'Sessions', - subtitle: 'Last Week', + title: 'Providers', + subtitle: 'Year of 2024', stats: '24.5k', change: -20, image: illustration2, @@ -59,6 +59,7 @@ onMounted(() => { cols="12" md="3" sm="6" + > @@ -66,6 +67,7 @@ onMounted(() => { @@ -74,6 +76,7 @@ onMounted(() => { cols="12" sm="6" md="3" + > @@ -82,6 +85,7 @@ onMounted(() => { cols="12" sm="6" md="3" + > @@ -89,6 +93,7 @@ onMounted(() => { @@ -96,6 +101,7 @@ onMounted(() => { @@ -104,6 +110,7 @@ onMounted(() => { cols="12" sm="8" md="4" + style="display: none;" > @@ -112,11 +119,13 @@ onMounted(() => { cols="12" md="2" sm="4" + style="display: none;" > @@ -124,6 +133,7 @@ onMounted(() => { @@ -133,6 +143,7 @@ onMounted(() => { @@ -140,6 +151,7 @@ onMounted(() => { @@ -147,6 +159,7 @@ onMounted(() => { diff --git a/resources/js/pages/medicines/medicines.vue b/resources/js/pages/medicines/medicines.vue index ecbe9c0..ed8afdb 100644 --- a/resources/js/pages/medicines/medicines.vue +++ b/resources/js/pages/medicines/medicines.vue @@ -1,28 +1,45 @@ + diff --git a/resources/js/store.js b/resources/js/store.js index 96ec4e8..081da86 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -5,6 +5,11 @@ import { LABS_DELETE_API, LABS_LIST_API, LABS_UPDATE_API, + MEDICINE_ADD_QUESTIONERIES_EXCEL_API, + MEDICINE_DELETE_API, + MEDICINE_LIST_API, + MEDICINE_SAVE_API, + MEDICINE_UPDATE_API, MEETING_NOTES_API, MEETING_PRESCREPTIONS_API, PATIENT_DELETE_API, @@ -28,6 +33,8 @@ export default createStore({ singlePatientAppointment: null, patientPrescription:null, patientNotes: null, + medicineList: [], + questioneriesList: [] }, mutations: { setLoading(state, payload) { @@ -55,7 +62,12 @@ export default createStore({ setPatientNotes(state, payload) { state.patientNotes = payload }, - + setMedicineList(state, payload) { + state.medicineList = payload + }, + setQuestionersList(state, payload) { + state.questioneriesList = payload + } }, actions: { @@ -370,6 +382,138 @@ export default createStore({ console.error('Error:', error); }); }, + async medicineList({ commit }, payload) { + commit('setLoading', true) + console.log(localStorage.getItem('admin_access_token')) + await axios.post(MEDICINE_LIST_API, {}, { + headers: { + 'Authorization': `Bearer ${localStorage.getItem('admin_access_token')}`, + } + }) .then(response => { + commit('setLoading', false) + console.log('Response:', response.data); + let dataArray =[] + // for (let data of response.data.medicines) { + // let dataObject = {} + // dataObject.title = data.title + // dataObject.slug = data.slug + // dataObject.price = data.price + // dataObject.slot_time = data.slot_time + // dataObject.appointment_id = data.appointment_id + // dataObject.booking_time = data.booking_time + // dataObject.contact_no = data.contact_no + // dataObject.avatar = '', + // dataObject.id = data.id, + // dataArray.push(dataObject) + // } + console.log(dataArray) + commit('setMedicineList',response.data.medicines) + + }) + .catch(error => { + commit('setLoading', false) + console.error('Error:', error); + }); + }, + async medicineUpdate({ commit }, payload) { + commit('setLoading', true) + await axios.post(MEDICINE_UPDATE_API+payload.id, { + title: payload.title, + slug: payload.slug, + list_one_title: payload.list_one_title, + list_sub_title: payload.list_sub_title, + list_two_title: payload.list_two_title, + price: payload.price, + currency: payload.currency, + excel: payload.excel, + image:payload.image + }, { + headers: { + 'Authorization': `Bearer ${localStorage.getItem('admin_access_token')}`, + } + }) .then(response => { + commit('setLoading', false) + console.log('Response:', response.data); + + }) + .catch(error => { + commit('setLoading', false) + console.error('Error:', error); + }); + }, + async medicineDelete({ commit }, payload) { + commit('setLoading', true) + console.log(localStorage.getItem('admin_access_token')) + await axios.post(MEDICINE_DELETE_API+payload.id, {}, { + headers: { + 'Authorization': `Bearer ${localStorage.getItem('admin_access_token')}`, + } + }) .then(response => { + commit('setLoading', false) + console.log('Response:', response.data); + + }) + .catch(error => { + commit('setLoading', false) + console.error('Error:', error); + }); + }, + async questioneriesListExcel({ commit }, payload) { + commit('setLoading', true) + console.log(localStorage.getItem('admin_access_token')) + await axios.post(MEDICINE_ADD_QUESTIONERIES_EXCEL_API, {}, { + headers: { + 'Authorization': `Bearer ${localStorage.getItem('admin_access_token')}`, + } + }) .then(response => { + commit('setLoading', false) + console.log('Response:', response.data); + + commit('setQuestionersList',response.data.medicines) + + }) + .catch(error => { + commit('setLoading', false) + console.error('Error:', error); + }); + }, + async medicineAdd({ commit }, payload) { + commit('setLoading', true) + // const formData = new FormData() + // formData.append('title', defaultItem.value.title) + // formData.append('slug', defaultItem.value.slug) + // formData.append('list_one_title', defaultItem.value.list_one_title) + // formData.append('list_sub_title', defaultItem.value.list_sub_title) + // formData.append('list_two_title', defaultItem.value.list_two_title) + // formData.append('price', defaultItem.value.price) + // formData.append('currency', currencySign.value) + + // formData.append('image', imageBase64.value) + await axios.post(MEDICINE_SAVE_API, { + title: payload.title, + slug: payload.slug, + list_one_title: payload.list_one_title, + list_sub_title: payload.list_sub_title, + list_two_title: payload.list_two_title, + price: payload.price, + currency: payload.currency, + excel: payload.excel, + image:payload.image + }, { + headers: { + 'Content-Type': 'multipart/form-data', + 'Authorization': `Bearer ${localStorage.getItem('admin_access_token')}`, + } + }) .then(response => { + commit('setLoading', false) + console.log('Response:', response.data); + + }) + .catch(error => { + commit('setLoading', false) + console.error('Error:', error); + }); +}, }, getters: { getIsLoading(state){ @@ -397,5 +541,11 @@ export default createStore({ getPatientNotes(state){ return state.patientNotes }, + getMedcineList(state){ + return state.medicineList + }, + getQuestioneriesList(state){ + return state.questioneriesList + }, } })