diff --git a/src/lib/types.ts b/src/lib/types.ts new file mode 100644 index 0000000..ced5bf8 --- /dev/null +++ b/src/lib/types.ts @@ -0,0 +1,20 @@ +import { IndJobStatusOptions, IndTransactionRecord } from "./pbtypes" +import { IsoDateString } from "./pbtypes" +import { IndBillitemRecord } from "./pbtypes" + +export type IndJob = { + billOfMaterials?: IndBillitemRecord[] + consumedMaterials?: IndBillitemRecord[] + created?: IsoDateString + expenditures?: IndTransactionRecord[] + id: string + income?: IndTransactionRecord[] + jobEnd?: IsoDateString + jobStart?: IsoDateString + outputItem: string + outputQuantity: number + saleEnd?: IsoDateString + saleStart?: IsoDateString + status: IndJobStatusOptions + updated?: IsoDateString +} \ No newline at end of file diff --git a/src/services/jobDataService.ts b/src/services/jobDataService.ts index 7802bfc..565fe6c 100644 --- a/src/services/jobDataService.ts +++ b/src/services/jobDataService.ts @@ -1,30 +1,23 @@ - import * as jobService from './jobService'; -import * as facilityService from './facilityService'; -import { IndJobResponse, IndTransactionResponse, IndBillitemResponse } from '@/lib/pbtypes'; +import { IndTransactionRecord, IndBillitemRecord, IndJobRecord } from '@/lib/pbtypes'; +import pb from '@/lib/pocketbase'; +import { IndJob } from '@/lib/types'; -export interface JobWithRelations extends IndJobResponse { - expenditures: IndTransactionResponse[]; - income: IndTransactionResponse[]; - billOfMaterials: IndBillitemResponse[]; - consumedMaterials: { name: string; required: number }[]; -} - -export async function getJobsWithRelations(): Promise { - const jobs = await jobService.getJobs(); - const jobsWithRelations: JobWithRelations[] = []; +export async function getJobsWithRelations(): Promise { + const jobs: IndJobRecord[] = await jobService.getJobs(); + const jobsWithRelations: IndJob[] = []; for (const job of jobs) { - const expenditures: IndTransactionResponse[] = []; - const income: IndTransactionResponse[] = []; - const billOfMaterials: IndBillitemResponse[] = []; + const expenditures: IndTransactionRecord[] = []; + const income: IndTransactionRecord[] = []; + const billOfMaterials: IndBillitemRecord[] = []; // Fetch related transactions if (job.expenditures) { for (const txId of job.expenditures) { try { const tx = await pb.collection('ind_transaction').getOne(txId); - expenditures.push(tx as IndTransactionResponse); + expenditures.push(tx as IndTransactionRecord); } catch (e) { console.warn('Failed to fetch expenditure transaction:', txId); } @@ -35,7 +28,7 @@ export async function getJobsWithRelations(): Promise { for (const txId of job.income) { try { const tx = await pb.collection('ind_transaction').getOne(txId); - income.push(tx as IndTransactionResponse); + income.push(tx as IndTransactionRecord); } catch (e) { console.warn('Failed to fetch income transaction:', txId); } @@ -47,7 +40,7 @@ export async function getJobsWithRelations(): Promise { for (const itemId of job.billOfMaterials) { try { const item = await pb.collection('ind_billItem').getOne(itemId); - billOfMaterials.push(item as IndBillitemResponse); + billOfMaterials.push(item as IndBillitemRecord); } catch (e) { console.warn('Failed to fetch bill item:', itemId); } @@ -66,13 +59,13 @@ export async function getJobsWithRelations(): Promise { return jobsWithRelations; } -export async function getJobWithRelations(id: string): Promise { +export async function getJobWithRelations(id: string): Promise { const job = await jobService.getJob(id); if (!job) return null; - const expenditures: IndTransactionResponse[] = []; - const income: IndTransactionResponse[] = []; - const billOfMaterials: IndBillitemResponse[] = []; + const expenditures: IndTransactionRecord[] = []; + const income: IndTransactionRecord[] = []; + const billOfMaterials: IndBillitemRecord[] = []; // Fetch related data similar to above // ... (similar logic as in getJobsWithRelations)