Changes in RLS and Tenants
Many Changes in Invoice Editor Page Loading Rebuilt Started Rights Management
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import {defineStore} from 'pinia'
|
||||
import dayjs from "dayjs"
|
||||
import {typeOf} from "uri-js/dist/esnext/util";
|
||||
import {useNumberRange} from "~/composables/useNumberRange.js";
|
||||
|
||||
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
|
||||
|
||||
@@ -21,7 +22,8 @@ export const useDataStore = defineStore('data', () => {
|
||||
customers: {
|
||||
label: "Kunden",
|
||||
labelSingle: "Kunde",
|
||||
redirect:true
|
||||
redirect:true,
|
||||
numberRangeHolder: "customerNumber"
|
||||
},
|
||||
contacts: {
|
||||
label: "Kontakte",
|
||||
@@ -61,7 +63,8 @@ export const useDataStore = defineStore('data', () => {
|
||||
vendors: {
|
||||
label: "Lieferanten",
|
||||
labelSingle: "Lieferant",
|
||||
redirect:true
|
||||
redirect:true,
|
||||
numberRangeHolder: "vendorNumber"
|
||||
},
|
||||
messages: {
|
||||
label: "Nachrichten",
|
||||
@@ -70,29 +73,58 @@ export const useDataStore = defineStore('data', () => {
|
||||
spaces: {
|
||||
label: "Lagerplätze",
|
||||
labelSingle: "Lagerplatz",
|
||||
redirect: true
|
||||
redirect: true,
|
||||
numberRangeHolder: "spaceNumber"
|
||||
},
|
||||
users: {
|
||||
label: "Benutzer",
|
||||
labelSingle: "Benutzer"
|
||||
},
|
||||
createdDocuments: {
|
||||
label: "Dokumente",
|
||||
labelSingle: "Dokument"
|
||||
},
|
||||
incomingInvoices: {
|
||||
label: "Eingangsrechnungen",
|
||||
labelSingle: "Eingangsrechnung"
|
||||
}
|
||||
}
|
||||
|
||||
const documentTypesForCreation = ref({
|
||||
invoices: {
|
||||
label: "Rechnungen",
|
||||
labelSingle: "Rechnung",
|
||||
|
||||
},
|
||||
quotes: {
|
||||
label: "Angebote",
|
||||
labelSingle: "Angebot"
|
||||
},
|
||||
deliveryNotes: {
|
||||
label: "Lieferscheine",
|
||||
labelSingle: "Lieferschein"
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
const loaded = ref(false)
|
||||
const ownTenant = ref({
|
||||
calendarConfig: {
|
||||
eventTypes: [] as any[]
|
||||
eventTypes: []
|
||||
},
|
||||
timeConfig: {
|
||||
timeTypes: [] as any[]
|
||||
timeTypes: []
|
||||
},
|
||||
tags: {
|
||||
documents: [] as any[],
|
||||
products: [] as any[]
|
||||
documents: [] ,
|
||||
products: []
|
||||
},
|
||||
measures: [] as {name:String, short:String}[]
|
||||
measures: []
|
||||
})
|
||||
|
||||
|
||||
const profiles = ref([])
|
||||
const currentTenant = ref(null)
|
||||
const events = ref([])
|
||||
const customers = ref([])
|
||||
const tasks = ref([])
|
||||
@@ -122,11 +154,30 @@ export const useDataStore = defineStore('data', () => {
|
||||
const inventoryItems = ref([])
|
||||
const chats = ref([])
|
||||
const messages = ref([])
|
||||
const createdDocuments = ref([])
|
||||
|
||||
async function initializeData () {
|
||||
await fetchProfiles()
|
||||
currentTenant.value = profiles.value.find(i => i.id === user.value.id).tenants[0].id
|
||||
|
||||
await fetchData()
|
||||
|
||||
}
|
||||
|
||||
async function changeTenant() {
|
||||
loaded.value = false
|
||||
await clearStore()
|
||||
await fetchData()
|
||||
router.push("/")
|
||||
loaded.value = true
|
||||
|
||||
}
|
||||
|
||||
async function fetchData () {
|
||||
await fetchProfiles()
|
||||
|
||||
fetchDocuments()
|
||||
await fetchOwnTenant()
|
||||
await fetchProfiles()
|
||||
await fetchEvents()
|
||||
await fetchTasks()
|
||||
await fetchProjects()
|
||||
@@ -156,6 +207,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
await fetchInventoryItems()
|
||||
await fetchChats()
|
||||
await fetchMessages()
|
||||
await fetchCreatedDocuments()
|
||||
loaded.value = true
|
||||
}
|
||||
|
||||
@@ -193,6 +245,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
inventoryItems.value = []
|
||||
chats.value = []
|
||||
messages.value = []
|
||||
createdDocuments.value = []
|
||||
}
|
||||
|
||||
//Realtime Update
|
||||
@@ -218,7 +271,20 @@ export const useDataStore = defineStore('data', () => {
|
||||
)
|
||||
.subscribe()
|
||||
|
||||
async function createNewItem (dataType:string,data:Array){
|
||||
async function createNewItem (dataType,data){
|
||||
console.log(dataType)
|
||||
if(dataTypes[dataType].numberRangeHolder) {
|
||||
|
||||
const numberRange = useNumberRange(dataType)
|
||||
data[dataTypes[dataType].numberRangeHolder] = await numberRange.useNextNumber()
|
||||
|
||||
} else if(dataType === "createdDocuments") {
|
||||
console.log(data.type)
|
||||
const numberRange = useNumberRange(data.type)
|
||||
data.documentNumber = await numberRange.useNextNumber()
|
||||
|
||||
}
|
||||
|
||||
const {data:supabaseData,error:supabaseError} = await supabase
|
||||
.from(dataType)
|
||||
.insert(typeOf(data) === 'Object' ? [data] : data)
|
||||
@@ -233,7 +299,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
}
|
||||
}
|
||||
|
||||
async function updateItem (dataType:string, data:Object) {
|
||||
async function updateItem (dataType, data) {
|
||||
const {data:supabaseData,error: supabaseError} = await supabase
|
||||
.from(dataType)
|
||||
.update(data)
|
||||
@@ -251,108 +317,116 @@ export const useDataStore = defineStore('data', () => {
|
||||
}
|
||||
|
||||
async function fetchOwnTenant () {
|
||||
ownTenant.value = (await supabase.from("tenants").select().eq('id', user.value?.app_metadata.tenant)).data[0]
|
||||
ownTenant.value = (await supabase.from("tenants").select().eq('id', currentTenant.value)).data[0]
|
||||
}
|
||||
|
||||
async function fetchProfiles () {
|
||||
profiles.value = (await supabase.from("profiles").select()).data
|
||||
profiles.value = (await supabase.from("profiles").select('* , tenants (id, name)')).data
|
||||
}
|
||||
async function fetchBankAccounts () {
|
||||
bankAccounts.value = (await supabase.from("bankAccounts").select()).data
|
||||
bankAccounts.value = (await supabase.from("bankaccounts").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchBankStatements () {
|
||||
bankStatements.value = (await supabase.from("bankStatements").select().order("date", {ascending:false})).data
|
||||
bankStatements.value = (await supabase.from("bankstatements").select().eq('tenant', currentTenant.value).order("date", {ascending:false})).data
|
||||
}
|
||||
async function fetchEvents () {
|
||||
events.value = (await supabase.from("events").select()).data
|
||||
events.value = (await supabase.from("events").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchContracts () {
|
||||
contracts.value = (await supabase.from("contracts").select()).data
|
||||
contracts.value = (await supabase.from("contracts").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchContacts () {
|
||||
contacts.value = (await supabase.from("contacts").select()).data
|
||||
contacts.value = (await supabase.from("contacts").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchCustomers () {
|
||||
customers.value = (await supabase.from("customers").select().order("customerNumber", {ascending:true})).data
|
||||
customers.value = (await supabase.from("customers").select().eq('tenant', currentTenant.value).order("customerNumber", {ascending:true})).data
|
||||
}
|
||||
async function fetchTasks () {
|
||||
tasks.value = (await supabase.from("tasks").select()).data
|
||||
tasks.value = (await supabase.from("tasks").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchForms () {
|
||||
forms.value = (await supabase.from("forms").select()).data
|
||||
forms.value = (await supabase.from("forms").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchFormSubmits () {
|
||||
formSubmits.value = (await supabase.from("formSubmits").select()).data
|
||||
formSubmits.value = (await supabase.from("formSubmits").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchProducts () {
|
||||
products.value = (await supabase.from("products").select()).data
|
||||
products.value = (await supabase.from("products").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchUnits () {
|
||||
units.value = (await supabase.from("units").select()).data
|
||||
}
|
||||
async function fetchProjects () {
|
||||
projects.value = (await supabase.from("projects").select()).data
|
||||
projects.value = (await supabase.from("projects").select().eq("tenant",currentTenant.value)).data
|
||||
}
|
||||
async function fetchSpaces () {
|
||||
spaces.value = (await supabase.from("spaces").select().order("spaceNumber", {ascending:true})).data
|
||||
spaces.value = (await supabase.from("spaces").select().eq('tenant', currentTenant.value).order("spaceNumber", {ascending:true})).data
|
||||
}
|
||||
async function fetchMovements () {
|
||||
movements.value = (await supabase.from("movements").select()).data
|
||||
movements.value = (await supabase.from("movements").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchVehicles () {
|
||||
vehicles.value = (await supabase.from("vehicles").select()).data
|
||||
vehicles.value = (await supabase.from("vehicles").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchTimes () {
|
||||
times.value = (await supabase.from("times").select().order("start", {ascending:false})).data
|
||||
times.value = (await supabase.from("times").select().eq('tenant', currentTenant.value).order("start", {ascending:false})).data
|
||||
}
|
||||
async function fetchHistoryItems () {
|
||||
|
||||
historyItems.value = (await supabase.from("historyItems").select()).data
|
||||
historyItems.value = (await supabase.from("historyitems").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchVendors () {
|
||||
vendors.value = (await supabase.from("vendors").select().order("vendorNumber", {ascending:true})).data
|
||||
vendors.value = (await supabase.from("vendors").select().eq('tenant', currentTenant.value).order("vendorNumber", {ascending:true})).data
|
||||
}
|
||||
async function fetchIncomingInvoices () {
|
||||
incomingInvoices.value = (await supabase.from("incomingInvoices").select()).data
|
||||
incomingInvoices.value = (await supabase.from("incominginvoices").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchNumberRanges () {
|
||||
numberRanges.value = (await supabase.from("numberRanges").select()).data
|
||||
numberRanges.value = (await supabase.from("numberranges").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchNotifications () {
|
||||
notifications.value = (await supabase.from("notifications").select().order("created_at", {ascending: false})).data
|
||||
notifications.value = (await supabase.from("notifications").select().eq('tenant', currentTenant.value).order("created_at", {ascending: false})).data
|
||||
}
|
||||
async function fetchAbsenceRequests () {
|
||||
absenceRequests.value = (await supabase.from("absenceRequests").select()).data
|
||||
absenceRequests.value = (await supabase.from("absencerequests").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchAccounts () {
|
||||
accounts.value = (await supabase.from("accounts").select()).data
|
||||
}
|
||||
async function fetchTaxTypes () {
|
||||
taxTypes.value = (await supabase.from("taxTypes").select()).data
|
||||
taxTypes.value = (await supabase.from("taxtypes").select()).data
|
||||
}
|
||||
async function fetchPlants () {
|
||||
plants.value = (await supabase.from("plants").select()).data
|
||||
plants.value = (await supabase.from("plants").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchInventoryItems () {
|
||||
inventoryItems.value = (await supabase.from("inventoryItems").select()).data
|
||||
inventoryItems.value = (await supabase.from("inventoryitems").select().eq('tenant', currentTenant.value)).data
|
||||
}
|
||||
async function fetchChats() {
|
||||
chats.value = (await supabase.from("chats").select()).data
|
||||
}
|
||||
async function fetchMessages() {
|
||||
messages.value = (await supabase.from("messages").select().order('created_at', {ascending:true})).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
|
||||
}
|
||||
|
||||
async function fetchDocuments () {
|
||||
documents.value = (await supabase.from("documents").select()).data
|
||||
let tempDocuments = (await supabase.from("documents").select().eq('tenant', currentTenant.value)).data
|
||||
|
||||
for(const [index,doc] of documents.value.entries()){
|
||||
// @ts-ignore
|
||||
documents.value[index].url = (await supabase.storage.from('files').createSignedUrl(doc.path, 60 * 60)).data.signedUrl
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
documents.value = tempDocuments
|
||||
|
||||
}
|
||||
|
||||
async function addHistoryItem(text: String, user: String, elementId: String, resourceType: String) {
|
||||
async function addHistoryItem(text, user, elementId, resourceType) {
|
||||
let data = {
|
||||
user: user,
|
||||
text: text
|
||||
@@ -382,55 +456,59 @@ export const useDataStore = defineStore('data', () => {
|
||||
return tasks.value.filter(task => task.categorie != "Erledigt").length
|
||||
})
|
||||
|
||||
const getMovementsBySpace = computed(() => (spaceId:string) => {
|
||||
const getOwnProfile = computed(() => {
|
||||
return profiles.value.find(profile => profile.id === user.value.id)
|
||||
})
|
||||
|
||||
const getMovementsBySpace = computed(() => (spaceId) => {
|
||||
return movements.value.filter(movement => movement.spaceId === spaceId)
|
||||
})
|
||||
|
||||
const getContactsByCustomerId = computed(() => (customerId:string) => {
|
||||
const getContactsByCustomerId = computed(() => (customerId) => {
|
||||
return contacts.value.filter(item => item.customer === customerId)
|
||||
})
|
||||
|
||||
const getContactsByVendorId = computed(() => (vendorId:string) => {
|
||||
const getContactsByVendorId = computed(() => (vendorId) => {
|
||||
return contacts.value.filter(item => item.vendor === vendorId)
|
||||
})
|
||||
|
||||
const getDocumentsByProjectId = computed(() => (projectId:string) => {
|
||||
const getDocumentsByProjectId = computed(() => (projectId) => {
|
||||
return documents.value.filter(item => item.project === projectId)
|
||||
})
|
||||
|
||||
const getEventsByProjectId = computed(() => (projectId:string) => {
|
||||
const getEventsByProjectId = computed(() => (projectId) => {
|
||||
return events.value.filter(item => item.project === projectId)
|
||||
})
|
||||
|
||||
const getTimesByProjectId = computed(() => (projectId:string) => {
|
||||
const getTimesByProjectId = computed(() => (projectId) => {
|
||||
return times.value.filter(time => time.projectId === projectId)
|
||||
})
|
||||
|
||||
const getTasksByProjectId = computed(() => (projectId:string) => {
|
||||
const getTasksByProjectId = computed(() => (projectId) => {
|
||||
return tasks.value.filter(item => item.project === projectId)
|
||||
})
|
||||
|
||||
const getTasksByPlantId = computed(() => (plantId:string) => {
|
||||
const getTasksByPlantId = computed(() => (plantId) => {
|
||||
return tasks.value.filter(item => item.plant === plantId)
|
||||
})
|
||||
|
||||
const getProjectsByPlantId = computed(() => (plantId:string) => {
|
||||
const getProjectsByPlantId = computed(() => (plantId) => {
|
||||
return projects.value.filter(item => item.plant === plantId)
|
||||
})
|
||||
|
||||
const getIncomingInvoicesByVehicleId = computed(() => (vehicleId:string) => {
|
||||
const getIncomingInvoicesByVehicleId = computed(() => (vehicleId) => {
|
||||
return incomingInvoices.value.filter(i => i.accounts.find(a => a.costCentre === vehicleId))
|
||||
})
|
||||
|
||||
const getMovementsBySpaceId = computed(() => (spaceId:string) => {
|
||||
const getMovementsBySpaceId = computed(() => (spaceId) => {
|
||||
return movements.value.filter(movement => movement.spaceId === spaceId)
|
||||
})
|
||||
|
||||
const getMessagesByChatId = computed(() => (chatId:string) => {
|
||||
const getMessagesByChatId = computed(() => (chatId) => {
|
||||
return messages.value.filter(i => i.destination === chatId)
|
||||
})
|
||||
|
||||
const getStockByProductId = computed(() => (productId:string) => {
|
||||
const getStockByProductId = computed(() => (productId) => {
|
||||
let productMovements = movements.value.filter(movement => movement.productId === productId)
|
||||
|
||||
let count = 0
|
||||
@@ -595,63 +673,67 @@ export const useDataStore = defineStore('data', () => {
|
||||
|
||||
|
||||
//Get Item By Id
|
||||
const getProductById = computed(() => (itemId:string) => {
|
||||
const getProductById = computed(() => (itemId) => {
|
||||
return products.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getVendorById = computed(() => (itemId:string) => {
|
||||
const getVendorById = computed(() => (itemId) => {
|
||||
return vendors.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getIncomingInvoiceById = computed(() => (itemId:string) => {
|
||||
const getIncomingInvoiceById = computed(() => (itemId) => {
|
||||
return incomingInvoices.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getContractById = computed(() => (itemId:string) => {
|
||||
const getContractById = computed(() => (itemId) => {
|
||||
return contracts.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getContactById = computed(() => (itemId:string) => {
|
||||
const getContactById = computed(() => (itemId) => {
|
||||
return contacts.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getVehicleById = computed(() => (itemId:string) => {
|
||||
const getVehicleById = computed(() => (itemId) => {
|
||||
return vehicles.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getDocumentById = computed(() => (itemId:string) => {
|
||||
const getDocumentById = computed(() => (itemId) => {
|
||||
return documents.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getSpaceById = computed(() => (itemId:string) => {
|
||||
const getSpaceById = computed(() => (itemId) => {
|
||||
return spaces.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getCustomerById = computed(() => (itemId:number) => {
|
||||
const getCustomerById = computed(() => (itemId) => {
|
||||
return customers.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getTaskById = computed(() => (itemId:string) => {
|
||||
const getTaskById = computed(() => (itemId) => {
|
||||
return tasks.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getAbsenceRequestById = computed(() => (itemId:string) => {
|
||||
const getAbsenceRequestById = computed(() => (itemId) => {
|
||||
return absenceRequests.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getProfileById = computed(() => (itemId:string) => {
|
||||
const getProfileById = computed(() => (itemId) => {
|
||||
return profiles.value.find(item => item.id === itemId)
|
||||
})
|
||||
|
||||
const getAccountById = computed(() => (accountId:string) => {
|
||||
const getAccountById = computed(() => (accountId) => {
|
||||
return accounts.value.find(item => item.id === accountId)
|
||||
})
|
||||
|
||||
const getPlantById = computed(() => (plantId:string) => {
|
||||
const getPlantById = computed(() => (plantId) => {
|
||||
return plants.value.find(item => item.id === plantId)
|
||||
})
|
||||
|
||||
const getProjectById = computed(() => (itemId:string) => {
|
||||
const getCreatedDocumentById = computed(() => (documentId) => {
|
||||
return createdDocuments.value.find(item => item.id === documentId)
|
||||
})
|
||||
|
||||
const getProjectById = computed(() => (itemId) => {
|
||||
if(projects.value.find(i => i.id === itemId)) {
|
||||
let project = projects.value.find(project => project.id === itemId)
|
||||
|
||||
@@ -672,8 +754,14 @@ export const useDataStore = defineStore('data', () => {
|
||||
})
|
||||
|
||||
return {
|
||||
//General
|
||||
currentTenant,
|
||||
loaded,
|
||||
ownTenant,
|
||||
initializeData,
|
||||
changeTenant,
|
||||
|
||||
//Data
|
||||
profiles,
|
||||
events,
|
||||
customers,
|
||||
@@ -704,6 +792,8 @@ export const useDataStore = defineStore('data', () => {
|
||||
inventoryItems,
|
||||
chats,
|
||||
messages,
|
||||
createdDocuments,
|
||||
documentTypesForCreation,
|
||||
//Functions
|
||||
createNewItem,
|
||||
updateItem,
|
||||
@@ -741,6 +831,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
addHistoryItem,
|
||||
//Getters
|
||||
getOpenTasksCount,
|
||||
getOwnProfile,
|
||||
getMovementsBySpace,
|
||||
getContactsByCustomerId,
|
||||
getContactsByVendorId,
|
||||
@@ -776,7 +867,8 @@ export const useDataStore = defineStore('data', () => {
|
||||
getProjectById,
|
||||
getProfileById,
|
||||
getAccountById,
|
||||
getPlantById
|
||||
getPlantById,
|
||||
getCreatedDocumentById
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user