import { defineStore } from "pinia";
import axios from "axios";

export const useGroupStore = defineStore('Group', {
    state: () => ({
        data: [],
        list: [],
    }),

    actions: {
        //=======================================================
        //  Pobieranie grupy ze store
        //=======================================================
        GetData() {
            return this.data;
        },

        //=======================================================
        //  Dodawanie id grupy do listy
        //=======================================================
        AddToList(id) {
            this.list.push(id);
        },

        //=======================================================
        //  Usuwanie id grupy z listy
        //=======================================================
        RemoveFromList(id) {
            let index = null;
            for (let i = 0; i < this.list.length; ++i) {
                if (this.list[i] === id) {
                    index = i;
                    break;
                }
            }

            if (index != null) {
                this.list.splice(index);
            }
        },

        //=======================================================
        // Pobierz listę grup
        //=======================================================
        async Get(){
            try {
                const res = await axios.get('/api/content/group', {withCredentials: true});
                this.data = res.data;
            }
            catch(e) {
                if (e.res.status === 400 || e.res.status === 401) {
                    console.warn('Nie udało się pobrać listy grup!');
                }
                else {
                    console.error('Server nie odpowiada!');
                }
            }
        },

        //=======================================================
        // Dodawanie nowej grupy
        //=======================================================
        async Add(data) {
            try {
                const res = await axios.post('/api/content/group', data, {withCredentials: true});
                console.log(res.data.data);
                if (res.data.data) {
                    this.data = res.data.data;
                }
            }
            catch(e) {
                if (e.res.status === 400 || e.res.status === 401) {
                    console.warn('Nie udało się pobrać listy grup!');
                }
                else {
                    console.error('Server nie odpowiada!');
                }
            }
        },

        //=======================================================
        // Edytowanie nazwy grupy
        //=======================================================
        async Edit(data) {
            try {
                const res = await axios.patch('/api/content/group', {name: data.name}, {params: {id: data.id}, withCredentials: true});
                this.data = res.data;
            }
            catch(e) {
                if (e.res.status === 400 || e.res.status === 401) {
                    console.warn('Nie udało się pobrać listy grup!');
                }
                else {
                    console.error('Server nie odpowiada!');
                }
            }
        },

        //=======================================================
        // Kasowanie grupy
        //=======================================================
        async Delete() {
            try {
                const data = {id: this.list};
                const res = await axios.delete('/api/content/group', {params: data, withCredentials: true});
                this.data = res;
            }
            catch(e) {
                if (e.res.status === 400 || e.res.status === 401) {
                    console.warn('Nie udało się pobrać listy grup!');
                }
                else {
                    console.error('Server nie odpowiada!');
                }
            }
        }
        
    }
});