| | |
| | | import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators' |
| | | import { ClientInfo, getMyAppointmentList, getMyReviewLog, allAppointmentsView } from '~/assets/ts/api/appointment'; |
| | | // import * as consultant from '~/assets/ts/api/consultant'; |
| | | import { ClientInfo, getMyAppointmentList, getMyReviewLog } from '~/assets/ts/api/appointment'; |
| | | import { recommend, AgentOfStrictQuery, getFavoriteConsultant, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant'; |
| | | import { Consultants } from '~/assets/ts/models/consultant.model'; |
| | | import { isLogin } from '~/assets/ts/auth'; |
| | | import { Consultant } from '~/assets/ts/models/consultant.model'; |
| | | import { AppointmentLog } from '~/assets/ts/models/appointment.model'; |
| | | import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant'; |
| | | import { Role } from '~/assets/ts/models/enum/Role'; |
| | | |
| | | @Module |
| | | export default class Store extends VuexModule { |
| | | recommendList: Consultants[] = []; |
| | | recommendList: Consultant[] = []; |
| | | strictQueryList: AgentOfStrictQuery[] = []; |
| | | myConsultantList: Consultants[] = []; |
| | | myConsultantList: Consultant[] = []; |
| | | |
| | | myAppointmentList: ClientInfo[] = []; |
| | | |
| | | myAppointmentReviewLogList: AppointmentLog[] = []; |
| | | |
| | | @Mutation updateRecommend(data: Consultants[]) { |
| | | get isUserLogin() { |
| | | return this.context.getters['localStorage/isUserLogin']; |
| | | } |
| | | |
| | | @Mutation updateRecommend(data: Consultant[]) { |
| | | this.recommendList = data; |
| | | } |
| | | |
| | | @Mutation updateConsultantList(data: Consultants[]) { |
| | | @Mutation updateConsultantList(data: Consultant[]) { |
| | | this.myConsultantList = data; |
| | | } |
| | | |
| | |
| | | @Action |
| | | async storeConsultantList() { |
| | | const localData = getFavoriteFromStorage(); |
| | | if (!isLogin()) { |
| | | |
| | | if (!this.isUserLogin) { |
| | | this.context.commit('updateConsultantList', localData) |
| | | return; |
| | | }; |
| | |
| | | // no agent was removed |
| | | if (left.length === this.myConsultantList.length) return false; |
| | | |
| | | if (!isLogin()) { |
| | | if (!this.isUserLogin) { |
| | | setFavoriteToStorage(left); |
| | | } else { |
| | | await deleteConsultant(agentNo) |
| | |
| | | } |
| | | |
| | | @Action |
| | | async addToMyConsultantList(consultantToAdd: Consultants) { |
| | | async addToMyConsultantList(consultantToAdd: Consultant) { |
| | | if (consultantToAdd) { |
| | | const found = this.myConsultantList.find(item => item.agentNo === consultantToAdd.agentNo); |
| | | if (!found) { |
| | | const newData = [consultantToAdd].concat(this.myConsultantList); |
| | | |
| | | if (isLogin()) { |
| | | if (this.isUserLogin) { |
| | | await addFavoriteConsultant([consultantToAdd.agentNo]) |
| | | } else { |
| | | setFavoriteToStorage(newData); |
| | |
| | | @Action |
| | | storeMyAppointmentReviewLog() { |
| | | getMyReviewLog().then((data) => { |
| | | this.context.commit('updateMyAppointmentReviewLog', data); |
| | | const dataWithLatestDate = data.map((item) => { |
| | | return { |
| | | ...item, |
| | | compareDate: new Date(item.lastModifiedDate) |
| | | } |
| | | }); |
| | | const sortedData = dataWithLatestDate.sort((a, b) => +b.compareDate - +a.compareDate); |
| | | this.context.commit('updateMyAppointmentReviewLog', sortedData); |
| | | }); |
| | | } |
| | | |