import { BaseApiService } from '@/services/api/base'; import { BaseApiResponse } from '@/types/api/api-general'; import { Uniformity, UniformityDetail, VerifyUniformityPayload, VerifyUniformityResponse, CreateUniformityPayload, } from '@/types/api/uniformity/uniformity'; export class UniformityApiService extends BaseApiService< Uniformity, CreateUniformityPayload, VerifyUniformityPayload > { constructor(basePath: string) { super(basePath); } async getUniformity(): Promise | undefined> { return await this.customRequest>(''); } async getUniformityDetail( id: number ): Promise | undefined> { return await this.customRequest>( `/${id}` ); } async createUniformity( payload: CreateUniformityPayload ): Promise | undefined> { const formData = new FormData(); formData.append('date', payload.date); formData.append('week', payload.week.toString()); formData.append( 'project_flock_kandang_id', payload.project_flock_kandang_id.toString() ); if (payload.file) { formData.append('file', payload.file); } return await this.create(formData as unknown as CreateUniformityPayload); } async verifyUniformity( payload: VerifyUniformityPayload ): Promise | undefined> { const formData = new FormData(); formData.append('date', payload.date); formData.append('week', payload.week.toString()); formData.append( 'project_flock_kandang_id', payload.project_flock_kandang_id.toString() ); if (payload.file) { formData.append('file', payload.file); } return await this.customRequest>( '/verify', { method: 'POST', payload: formData as unknown as Record, } ); } async approve( idOrIds: number | number[], notes?: string ): Promise | undefined> { const approvable_ids = Array.isArray(idOrIds) ? idOrIds : [idOrIds]; return await this.customRequest>( 'approvals', { method: 'POST', payload: { action: 'APPROVED', approvable_ids, notes, }, } ); } async reject( idOrIds: number | number[], notes: string = '' ): Promise | undefined> { const approvable_ids = Array.isArray(idOrIds) ? idOrIds : [idOrIds]; return await this.customRequest>( 'approvals', { method: 'POST', payload: { action: 'REJECTED', approvable_ids, notes, }, } ); } async bulkDelete( ids: number[] ): Promise | undefined> { return await this.customRequest>( 'bulk-delete', { method: 'POST', payload: { ids, }, } ); } } export const UniformityApi = new UniformityApiService( 'http://localhost:4010/api/production/uniformities' );