Implement transaction service
This commit is contained in:
44
src/services/transactionService.ts
Normal file
44
src/services/transactionService.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { IndJob } from '@/lib/types';
|
||||
import type { IndTransactionRecord, IndTransactionRecordNoId } from '../lib/pbtypes';
|
||||
import pb from '../lib/pocketbase';
|
||||
import { getJob, updateJob } from './jobService';
|
||||
|
||||
export async function createTransaction(
|
||||
job: IndJob,
|
||||
transaction: IndTransactionRecordNoId,
|
||||
type: 'expenditure' | 'income'
|
||||
): Promise<void> {
|
||||
console.log('Adding transaction:', transaction);
|
||||
// Create the transaction
|
||||
transaction.job = job.id;
|
||||
const createdTransaction = await pb.collection<IndTransactionRecord>('ind_transaction').create(transaction);
|
||||
|
||||
// Update the job to include the new transaction
|
||||
const field = type === 'expenditure' ? 'expenditures' : 'income';
|
||||
const currentIds = job[field] || [];
|
||||
|
||||
await updateJob(job.id, {
|
||||
[field]: [...currentIds, createdTransaction.id]
|
||||
});
|
||||
}
|
||||
|
||||
export async function updateTransaction(
|
||||
transactionId: string,
|
||||
updates: Partial<IndTransactionRecord>
|
||||
): Promise<void> {
|
||||
await pb.collection<IndTransactionRecord>('ind_transaction').update(transactionId, updates);
|
||||
}
|
||||
|
||||
export async function deleteTransaction(job: IndJob, transactionId: string): Promise<void> {
|
||||
// Delete the transaction
|
||||
await pb.collection<IndTransactionRecord>('ind_transaction').delete(transactionId);
|
||||
|
||||
// Remove from both expenditures and income arrays
|
||||
const expenditures = job.expenditures.filter(ex => ex.id !== transactionId);
|
||||
const income = job.income.filter(pero => pero.id !== transactionId);
|
||||
|
||||
await updateJob(job.id, {
|
||||
expenditures: expenditures.map(ex => ex.id),
|
||||
income: income.map(pero => pero.id)
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user