import {
	defineStore
} from 'pinia';
import http from '@/jtools/request/index';
import {
	queryQuestion,
	getVersion,
	querySysConfig
} from '@/jtools/api/question';
import storage from '@/jtools/storage';

const question = defineStore({
	id: 'question',
	state: () => ({
		currentCartype: storage.get('carType') || '1001',
		currentCarName: storage.get('carName') || '小车C1/C2/C3',
		orderQuestion_subject1: storage.get('question_subject1') || [], //科目一顺序做题
		orderQuestion_subject4: storage.get('question_subject4') || [], //科目四顺序做题
		currentIndex_subject1: 0, //科目一索引 顺序做题
		currentIndex_subject4: 0, //科目四索引 顺序做题
		curSubject: storage.get('curSubject') || '1',
		loading_subject1: false,
		loading_subject4: false,
		version: storage.get('version') || ''
	}),

	actions: {
		resetStorage(){
			this.currentIndex_subject1=0
			this.currentIndex_subject4=0
			this.curSubject=0
			storage.remove('curSubject')
			storage.remove('wrongList_subject1')
			storage.remove('wrongList_subject4')
			storage.remove('rightList_subject1')
			storage.remove('rightList_subject4')
			this.getAllQuestion()
		},
		getAllQuestion() {
			this.currentCartype = storage.get('carType') || '1001'
			getVersion(this.currentCartype).then(resp => {
				if (resp.code === '0000') {
					querySysConfig(this.currentCartype, 'QuestionBank').then(res => {
						const urlList = JSON.parse(res.data.configJson)
						const urlOne = urlList.find(item => item.subject == '1').url
						const urlFour = urlList.find(item => item.subject == '4').url
						if (this.version != resp.data) {
							this.version = resp.data
							storage.set('version', resp.data)
							this.getOrderQuestion_sub1(true, urlOne)
							this.getOrderQuestion_sub4(true, urlFour)
						} else {
							this.getOrderQuestion_sub1(false, urlOne)
							this.getOrderQuestion_sub4(false, urlOne)
						}
					})

				}
			})
		},
		divideArray(array, numChunks) {
			var chunkSize = Math.ceil(array.length / numChunks);
			var dividedArray = [];
			for (var i = 0; i < array.length; i += chunkSize) {
				dividedArray.push(array.slice(i, i + chunkSize));
			}
			return dividedArray;
		},

		//改变当前科目
		changeSubject(val) {
			this.curSubject = val
			storage.set('curSubject', val)
		},
		// 获取顺序做题科目1
		getOrderQuestion_sub1(isUpdate, url) {
			if (isUpdate) {
				this.loading_subject1 = true
				const that = this
				uni.request({
					url: url,
					success(resp) {
						if (resp.data) {
							that.orderQuestion_subject1 = resp.data.data
							const diveList = that.divideArray(that.orderQuestion_subject1, 5)
							that.loading_subject1 = false
							uni.setStorageSync('questionOneSub1', diveList[0])
							uni.setStorageSync('questionOneSub2', diveList[1])
							uni.setStorageSync('questionOneSub3', diveList[2])
							uni.setStorageSync('questionOneSub4', diveList[3])
							uni.setStorageSync('questionOneSub5', diveList[4])
							const falseList = storage.get('wrongList_subject1') || []
							const trueList = storage.get('rightList_subject1') || []
							const falseArr = []
							const rightArr = []
							that.orderQuestion_subject1.forEach(item => {
								if (falseList.includes(item.questionId)) {
									falseArr.push(item.questionId)
								}
								if (trueList.includes(item.questionId)) {
									rightArr.push(item.questionId)
								}
							})
							storage.set('wrongList_subject1', falseArr)
							storage.set('rightList_subject1', rightArr)
						}
					}
				})
			} else {
				const list1 = uni.getStorageSync('questionOneSub1') || []
				const list2 = uni.getStorageSync('questionOneSub2') || []
				const list3 = uni.getStorageSync('questionOneSub3') || []
				const list4 = uni.getStorageSync('questionOneSub4') || []
				const list5 = uni.getStorageSync('questionOneSub5') || []
				this.orderQuestion_subject1 = [...list1, ...list2, ...list3, ...list4, ...list5]
				if (this.orderQuestion_subject1 && this.orderQuestion_subject1.length) {

				} else {
					this.loading_subject1 = true
					const that = this
					uni.request({
						url: url,
						success(resp) {
							if (resp.data) {
								that.orderQuestion_subject1 = resp.data.data
								const diveList = that.divideArray(that.orderQuestion_subject1, 5)
								that.loading_subject1 = false
								uni.setStorageSync('questionOneSub1', diveList[0])
								uni.setStorageSync('questionOneSub2', diveList[1])
								uni.setStorageSync('questionOneSub3', diveList[2])
								uni.setStorageSync('questionOneSub4', diveList[3])
								uni.setStorageSync('questionOneSub5', diveList[4])
								const falseList = storage.get('wrongList_subject1') || []
								const trueList = storage.get('rightList_subject1') || []
								const falseArr = []
								const rightArr = []
								that.orderQuestion_subject1.forEach(item => {
									if (falseList.includes(item.questionId)) {
										falseArr.push(item.questionId)
									}
									if (trueList.includes(item.questionId)) {
										rightArr.push(item.questionId)
									}
								})
								storage.set('wrongList_subject1', falseArr)
								storage.set('rightList_subject1', rightArr)
							}
						}
					})
				}
			}
		},
		// 获取顺序做题科目4
		getOrderQuestion_sub4(isUpdate, url) {
			if (isUpdate) {
				this.loading_subject4 = true
				const that = this
				uni.request({
					url: url,
					success(resp) {
						if (resp.data) {
							that.orderQuestion_subject4 = resp.data.data
							const diveList = that.divideArray(that.orderQuestion_subject4, 5)
							that.loading_subject4 = false
							uni.setStorageSync('questionFourSub1', diveList[0])
							uni.setStorageSync('questionFourSub2', diveList[1])
							uni.setStorageSync('questionFourSub3', diveList[2])
							uni.setStorageSync('questionFourSub4', diveList[3])
							uni.setStorageSync('questionFourSub5', diveList[4])
							const falseList = storage.get('wrongList_subject4') || []
							const trueList = storage.get('rightList_subject4') || []
							const falseArr = []
							const rightArr = []
							that.orderQuestion_subject4.forEach(item => {
								if (falseList.includes(item.questionId)) {
									falseArr.push(item.questionId)
								}
								if (trueList.includes(item.questionId)) {
									rightArr.push(item.questionId)
								}
							})
							storage.set('wrongList_subject4', falseArr)
							storage.set('rightList_subject4', rightArr)
						}
					}
				})
			} else {
				const list1 = uni.getStorageSync('questionFourSub1') || []
				const list2 = uni.getStorageSync('questionFourSub2') || []
				const list3 = uni.getStorageSync('questionFourSub3') || []
				const list4 = uni.getStorageSync('questionFourSub4') || []
				const list5 = uni.getStorageSync('questionFourSub5') || []
				this.orderQuestion_subject4 = [...list1, ...list2, ...list3, ...list4, ...list5]
				if (this.orderQuestion_subject4 && this.orderQuestion_subject4.length) {

				} else {
					this.loading_subject4 = true
					const that = this
					uni.request({
						url: url,
						success(resp) {
							if (resp.data) {
								that.orderQuestion_subject4 = resp.data.data
								const diveList = that.divideArray(that.orderQuestion_subject4, 5)
								that.loading_subject4 = false
								uni.setStorageSync('questionFourSub1', diveList[0])
								uni.setStorageSync('questionFourSub2', diveList[1])
								uni.setStorageSync('questionFourSub3', diveList[2])
								uni.setStorageSync('questionFourSub4', diveList[3])
								uni.setStorageSync('questionFourSub5', diveList[4])
								const falseList = storage.get('wrongList_subject4') || []
								const trueList = storage.get('rightList_subject4') || []
								const falseArr = []
								const rightArr = []
								that.orderQuestion_subject4.forEach(item => {
									if (falseList.includes(item.questionId)) {
										falseArr.push(item.questionId)
									}
									if (trueList.includes(item.questionId)) {
										rightArr.push(item.questionId)
									}
								})
								storage.set('wrongList_subject4', falseArr)
								storage.set('rightList_subject4', rightArr)
							}
						}
					})
				}
			}
		},
		//获取索引
		getCurrentIndex(index, val) {
			this[`currentIndex_subject${val}`] = index
		}
	}
});

export default question;