Many Changes

This commit is contained in:
2024-02-01 21:00:59 +01:00
parent fe74e7d91b
commit 34d1eb9c71
18 changed files with 493 additions and 374 deletions

View File

@@ -80,7 +80,7 @@ export const useDataStore = defineStore('data', () => {
label: "Benutzer",
labelSingle: "Benutzer"
},
createdDocuments: {
createddocuments: {
label: "Dokumente",
labelSingle: "Dokument"
},
@@ -154,7 +154,7 @@ export const useDataStore = defineStore('data', () => {
const inventoryItems = ref([])
const chats = ref([])
const messages = ref([])
const createdDocuments = ref([])
const createddocuments = ref([])
async function initializeData () {
await fetchProfiles()
@@ -176,7 +176,7 @@ export const useDataStore = defineStore('data', () => {
async function fetchData () {
await fetchProfiles()
fetchDocuments()
await fetchDocuments()
await fetchOwnTenant()
await fetchEvents()
await fetchTasks()
@@ -189,7 +189,6 @@ export const useDataStore = defineStore('data', () => {
await fetchFormSubmits()
await fetchProducts()
await fetchUnits()
//await fetchDocuments()
await fetchMovements()
await fetchSpaces()
await fetchVehicles()
@@ -245,7 +244,7 @@ export const useDataStore = defineStore('data', () => {
inventoryItems.value = []
chats.value = []
messages.value = []
createdDocuments.value = []
createddocuments.value = []
}
//Realtime Update
@@ -278,7 +277,7 @@ export const useDataStore = defineStore('data', () => {
const numberRange = useNumberRange(dataType)
data[dataTypes[dataType].numberRangeHolder] = await numberRange.useNextNumber()
} else if(dataType === "createdDocuments") {
} else if(dataType === "createddocuments") {
console.log(data.type)
const numberRange = useNumberRange(data.type)
data.documentNumber = await numberRange.useNextNumber()
@@ -296,6 +295,7 @@ export const useDataStore = defineStore('data', () => {
await eval( dataType + '.value.push(' + JSON.stringify(...supabaseData) + ')')
toast.add({title: `${dataTypes[dataType].labelSingle} hinzugefügt`})
if(dataTypes[dataType].redirect) await router.push(`/${dataType}/show/${supabaseData[0].id}`)
return supabaseData
}
}
@@ -312,8 +312,72 @@ export const useDataStore = defineStore('data', () => {
await eval(dataType + '.value[' + dataType + '.value.findIndex(i => i.id === ' + JSON.stringify(data.id) + ')] = ' + JSON.stringify(supabaseData[0]))
toast.add({title: `${dataTypes[dataType].labelSingle} gespeichert`})
if(dataTypes[dataType].redirect) await router.push(`/${dataType}/show/${supabaseData[0].id}`)
return supabaseData
}
}
const uploadFiles = async (formData, files, upsert) => {
let documentsToInsert = []
const uploadSingleFile = async (file) => {
const {data, error} = await supabase
.storage
.from("files")
.upload(`${currentTenant.value}/${file.name}`, file, {upsert})
if (error) {
console.log(error)
console.log(error.statusCode)
if(error.statusCode === '400') {
console.log("is 400")
toast.add({title: "Hochladen fehlgeschlagen", description: "Die Datei enthält ungültige Zeichen", icon: "i-heroicons-x-circle", color: "rose", timeout: 10000})
} else if(error.statusCode === '409') {
console.log("is 409")
toast.add({title: "Hochladen fehlgeschlagen", description: "Es existiert bereits eine Datei mit diesem Namen", icon: "i-heroicons-x-circle", color: "rose", timeout: 10000})
} else {
toast.add({title: "Hochladen fehlgeschlagen", icon: "i-heroicons-x-circle", color: "rose", timeout: 10000})
}
} else if (data) {
const returnPath = data.path
documentsToInsert.push({...formData, path: returnPath})
}
}
//uploadInProgress.value = true
if(files.length === 1) {
await uploadSingleFile(files[0])
} else if( files.length > 1) {
for(let i = 0; i < files.length; i++){
uploadSingleFile(files[i])
}
}
const {data, error} = await supabase
.from("documents")
.insert(documentsToInsert)
.select()
if(error) console.log(error)
else {
console.log(data)
fetchDocuments()
//documents.value.push(...data)
}
//uploadModalOpen.value = false;
//uploadInProgress.value = false;
}
async function fetchOwnTenant () {
@@ -409,21 +473,28 @@ export const useDataStore = defineStore('data', () => {
messages.value = (await supabase.from("messages").select().eq('tenant', currentTenant.value).order('created_at', {ascending:true})).data
}
async function fetchCreatedDocuments() {
createdDocuments.value = (await supabase.from("createddocuments").select().eq('tenant', currentTenant.value).order('created_at', {ascending:true})).data
createddocuments.value = (await supabase.from("createddocuments").select().eq('tenant', currentTenant.value).order('created_at', {ascending:true})).data
}
async function fetchDocuments () {
let tempDocuments = (await supabase.from("documents").select().eq('tenant', currentTenant.value)).data
if(tempDocuments.length > 0) {
for(const [index,doc] of tempDocuments.entries()){
// @ts-ignore
tempDocuments[index].url = (await supabase.storage.from('files').createSignedUrl(doc.path, 60 * 60)).data.signedUrl
let paths = []
tempDocuments.forEach(doc => {
paths.push(doc.path)
})
const {data,error} = await supabase.storage.from('files').createSignedUrls(paths,3600)
tempDocuments = tempDocuments.map((doc,index) => {
return {
...doc,
url: data[index].signedUrl
}
}
})
documents.value = tempDocuments
}
async function addHistoryItem(text, user, elementId, resourceType) {
@@ -473,7 +544,11 @@ export const useDataStore = defineStore('data', () => {
})
const getDocumentsByProjectId = computed(() => (projectId) => {
return documents.value.filter(item => item.project === projectId)
return documents.value.filter(item => item.project === projectId && !item.tags.includes("Archiviert"))
})
const getDocumentsByPlantId = computed(() => (itemId) => {
return documents.value.filter(item => item.plant === itemId && !item.tags.includes("Archiviert"))
})
const getEventsByProjectId = computed(() => (projectId) => {
@@ -730,7 +805,7 @@ export const useDataStore = defineStore('data', () => {
})
const getCreatedDocumentById = computed(() => (documentId) => {
return createdDocuments.value.find(item => item.id === documentId)
return createddocuments.value.find(item => item.id === documentId)
})
const getProjectById = computed(() => (itemId) => {
@@ -760,6 +835,8 @@ export const useDataStore = defineStore('data', () => {
ownTenant,
initializeData,
changeTenant,
uploadFiles,
//Data
profiles,
@@ -792,7 +869,7 @@ export const useDataStore = defineStore('data', () => {
inventoryItems,
chats,
messages,
createdDocuments,
createddocuments,
documentTypesForCreation,
//Functions
createNewItem,
@@ -836,6 +913,7 @@ export const useDataStore = defineStore('data', () => {
getContactsByCustomerId,
getContactsByVendorId,
getDocumentsByProjectId,
getDocumentsByPlantId,
getEventsByProjectId,
getTimesByProjectId,
getTasksByProjectId,