import { defineStore } from 'pinia'
import { computed, ref } from 'vue'
import { ScenarioService } from '../service/ScenarioService'
import { LoadingStore } from './LoadingStore'
import { UserPrefStore } from './UserPrefStore'

export const ScenarioStore = defineStore('scenario_store', () => {


    const projectScenarios = ref([])
    const globalScenarios = ref([])
    const applicationScenarios = ref([])
    const filterString = ref('')
    const allScenarios = ref([])
    const typeFilter = ref({ name: 'All', value: 'all' })

    const userPrefStore  = UserPrefStore()
    const loadingStore = LoadingStore()


    async function fetchScenarios() {
        loadingStore.scenario_loading = true;
        await ScenarioService.getScenariosProject(userPrefStore.selectedProject).then(resp => {
            projectScenarios.value = resp.data;
            allScenarios.value = [...projectScenarios.value]
            loadingStore.scenario_loading = false;
        });
        
    }

    async function fetchScenariosCross() {
        loadingStore.scenario_loading = true;
        await ScenarioService.getScenariosCross().then(resp => {
            globalScenarios.value = resp.data;
            allScenarios.value = [...globalScenarios.value]
            loadingStore.scenario_loading = false;
        });
        
    }


    async function fetchApplicationScenarios() {
        loadingStore.scenario_loading = true;
        console.log("fetchApplicationScenarios >= selectedApp", userPrefStore.selectedApp)  ;
        await  ScenarioService.getScenariosApplication(userPrefStore.selectedApp).then(resp=>{
            console.log("response scenari", resp);
            applicationScenarios.value = resp.data
            allScenarios.value = [...projectScenarios.value, ...applicationScenarios.value]
            loadingStore.scenario_loading = false;

        })
    }

    const scenarios = computed(() => {
        return allScenarios.value
    })

    const filteredScenarios = computed(() => {
        console.log("scenarios", allScenarios.value);
        var filteredScenario = []

        if(typeFilter.value.value === 'all') {
            filteredScenario = [...projectScenarios.value, ...applicationScenarios.value, ...globalScenarios.value]   
        }
        if(typeFilter.value.value === 'project') {
            filteredScenario = [...projectScenarios.value]
        }
        if(typeFilter.value.value === 'application') {
            filteredScenario = [...applicationScenarios.value]
        }
        if(typeFilter.value.value === 'cross') {
            filteredScenario = [...globalScenarios.value]
        }

        return filteredScenario.filter((item) => {
            return filterString.value
                .toLowerCase()
                .split(" ")
                .every((v) => item.name.toLowerCase().includes(v));
        });
    })


    return {filteredScenarios, 
            projectScenarios, 
            applicationScenarios, 
            fetchScenarios,
            fetchApplicationScenarios,
            scenarios,
            filterString , typeFilter, fetchScenariosCross, globalScenarios}
  })