import { sleep } from '@/lib/helper'; import { BaseApiService } from '@/services/api/base'; import { BaseApiResponse } from '@/types/api/api-general'; import { CreateTransferToLayingPayload, TransferToLaying, UpdateTransferToLayingPayload, } from '@/types/api/production/transfer-to-laying'; import { FlockWithKandangs } from '@/types/api/master-data/flock'; // TODO: delete this dummy data const GET_ALL_TRANSFER_TO_LAYING_DUMMY_DATA: BaseApiResponse< TransferToLaying[] > = { code: 200, status: 'success', message: 'Successfully get all transfer to laying data!', meta: { page: 1, limit: 10, total_pages: 1, total_results: 8, }, data: [ { id: 201, transfer_date: '2025-10-10', flock_source: { id: 1, name: 'Flock A' }, flock_destination: { id: 10, name: 'Laying House 1' }, quantity: 1200, kandangs: [ { kandang: { id: 11, name: 'KDG-11', status: 'ACTIVE', location: { id: 101, name: 'Farm Alpha', address: 'Jl. Raya Alpha No. 1', area: { id: 1001, name: 'Area Utara' }, }, pic: { id: 501, id_user: 501, email: 'rina@farm.co', name: 'Rina Setiawan', }, created_user: { id: 9001, id_user: 9001, email: 'admin@farm.co', name: 'System Admin', }, created_at: '2025-09-01T08:00:00Z', updated_at: '2025-10-01T08:00:00Z', }, quantity: 600, }, { kandang: { id: 12, name: 'KDG-12', status: 'ACTIVE', location: { id: 101, name: 'Farm Alpha', address: 'Jl. Raya Alpha No. 1', area: { id: 1001, name: 'Area Utara' }, }, pic: { id: 502, id_user: 502, email: 'budi@farm.co', name: 'Budi Hartono', }, created_user: { id: 9002, id_user: 9002, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-08-25T08:00:00Z', updated_at: '2025-09-20T08:00:00Z', }, quantity: 600, }, ], reason: 'Start laying cycle', created_user: { id: 9100, id_user: 9100, email: 'planner@farm.co', name: 'Planning', }, created_at: '2025-10-10T06:00:00Z', updated_at: '2025-10-10T06:00:00Z', }, { id: 202, transfer_date: '2025-10-11', flock_source: { id: 2, name: 'Flock B' }, flock_destination: { id: 10, name: 'Laying House 1' }, quantity: 950, kandangs: [ { kandang: { id: 13, name: 'KDG-13', status: 'ACTIVE', location: { id: 102, name: 'Farm Beta', address: 'Jl. Melati 2', area: { id: 1002, name: 'Area Selatan' }, }, pic: { id: 503, id_user: 503, email: 'sari@farm.co', name: 'Sari Wulandari', }, created_user: { id: 9003, id_user: 9003, email: 'system@farm.co', name: 'System', }, created_at: '2025-09-05T08:00:00Z', updated_at: '2025-10-02T08:00:00Z', }, quantity: 500, }, { kandang: { id: 14, name: 'KDG-14', status: 'MAINTENANCE', location: { id: 102, name: 'Farm Beta', address: 'Jl. Melati 2', area: { id: 1002, name: 'Area Selatan' }, }, pic: { id: 504, id_user: 504, email: 'agus@farm.co', name: 'Agus Pratama', }, created_user: { id: 9003, id_user: 9003, email: 'system@farm.co', name: 'System', }, created_at: '2025-07-15T08:00:00Z', updated_at: '2025-09-15T08:00:00Z', }, quantity: 450, }, ], reason: 'Capacity balancing', created_user: { id: 9101, id_user: 9101, email: 'planner@farm.co', name: 'Planning', }, created_at: '2025-10-11T06:00:00Z', updated_at: '2025-10-11T06:00:00Z', }, { id: 203, transfer_date: '2025-10-12', flock_source: { id: 3, name: 'Flock C' }, flock_destination: { id: 11, name: 'Laying House 2' }, quantity: 1100, kandangs: [ { kandang: { id: 21, name: 'KDG-21', status: 'ACTIVE', location: { id: 103, name: 'Farm Gamma', address: 'Dusun Gamma', area: { id: 1003, name: 'Area Timur' }, }, pic: { id: 505, id_user: 505, email: 'dewi@farm.co', name: 'Dewi Lestari', }, created_user: { id: 9004, id_user: 9004, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-10T08:00:00Z', updated_at: '2025-10-05T08:00:00Z', }, quantity: 700, }, { kandang: { id: 22, name: 'KDG-22', status: 'ACTIVE', location: { id: 103, name: 'Farm Gamma', address: 'Dusun Gamma', area: { id: 1003, name: 'Area Timur' }, }, pic: { id: 506, id_user: 506, email: 'hadi@farm.co', name: 'Hadi Santoso', }, created_user: { id: 9004, id_user: 9004, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-12T08:00:00Z', updated_at: '2025-10-06T08:00:00Z', }, quantity: 400, }, ], reason: 'Align age group', created_user: { id: 9102, id_user: 9102, email: 'scheduler@farm.co', name: 'Scheduler', }, created_at: '2025-10-12T06:00:00Z', updated_at: '2025-10-12T06:00:00Z', }, { id: 204, transfer_date: '2025-10-13', flock_source: { id: 1, name: 'Flock A' }, flock_destination: { id: 12, name: 'Laying House 3' }, quantity: 800, kandangs: [ { kandang: { id: 15, name: 'KDG-15', status: 'ACTIVE', location: { id: 101, name: 'Farm Alpha', address: 'Jl. Raya Alpha No. 1', area: { id: 1001, name: 'Area Utara' }, }, pic: { id: 507, id_user: 507, email: 'nadia@farm.co', name: 'Nadia Putri', }, created_user: { id: 9001, id_user: 9001, email: 'admin@farm.co', name: 'System Admin', }, created_at: '2025-08-01T08:00:00Z', updated_at: '2025-09-28T08:00:00Z', }, quantity: 800, }, ], reason: 'Open capacity in LH3', created_user: { id: 9103, id_user: 9103, email: 'opslead@farm.co', name: 'Ops Lead', }, created_at: '2025-10-13T06:00:00Z', updated_at: '2025-10-13T06:00:00Z', }, { id: 205, transfer_date: '2025-10-14', flock_source: { id: 4, name: 'Flock D' }, flock_destination: { id: 11, name: 'Laying House 2' }, quantity: 650, kandangs: [ { kandang: { id: 23, name: 'KDG-23', status: 'ACTIVE', location: { id: 104, name: 'Farm Delta', address: 'Jl. Delta 4', area: { id: 1004, name: 'Area Barat' }, }, pic: { id: 508, id_user: 508, email: 'yoga@farm.co', name: 'Yoga Prabowo', }, created_user: { id: 9005, id_user: 9005, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-20T08:00:00Z', updated_at: '2025-10-10T08:00:00Z', }, quantity: 350, }, { kandang: { id: 24, name: 'KDG-24', status: 'ACTIVE', location: { id: 104, name: 'Farm Delta', address: 'Jl. Delta 4', area: { id: 1004, name: 'Area Barat' }, }, pic: { id: 509, id_user: 509, email: 'mega@farm.co', name: 'Mega Anggraini', }, created_user: { id: 9005, id_user: 9005, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-21T08:00:00Z', updated_at: '2025-10-10T08:00:00Z', }, quantity: 300, }, ], reason: 'Fill remaining LH2 slots', created_user: { id: 9104, id_user: 9104, email: 'scheduler@farm.co', name: 'Scheduler', }, created_at: '2025-10-14T06:00:00Z', updated_at: '2025-10-14T06:00:00Z', }, { id: 206, transfer_date: '2025-10-15', flock_source: { id: 2, name: 'Flock B' }, flock_destination: { id: 12, name: 'Laying House 3' }, quantity: 720, kandangs: [ { kandang: { id: 16, name: 'KDG-16', status: 'ACTIVE', location: { id: 102, name: 'Farm Beta', address: 'Jl. Melati 2', area: { id: 1002, name: 'Area Selatan' }, }, pic: { id: 510, id_user: 510, email: 'rizky@farm.co', name: 'Rizky Maulana', }, created_user: { id: 9003, id_user: 9003, email: 'system@farm.co', name: 'System', }, created_at: '2025-08-12T08:00:00Z', updated_at: '2025-10-01T08:00:00Z', }, quantity: 420, }, { kandang: { id: 17, name: 'KDG-17', status: 'ACTIVE', location: { id: 102, name: 'Farm Beta', address: 'Jl. Melati 2', area: { id: 1002, name: 'Area Selatan' }, }, pic: { id: 511, id_user: 511, email: 'tia@farm.co', name: 'Tia Safitri', }, created_user: { id: 9003, id_user: 9003, email: 'system@farm.co', name: 'System', }, created_at: '2025-08-18T08:00:00Z', updated_at: '2025-10-01T08:00:00Z', }, quantity: 300, }, ], reason: 'Stage-by-stage transfer', created_user: { id: 9105, id_user: 9105, email: 'opslead@farm.co', name: 'Ops Lead', }, created_at: '2025-10-15T06:00:00Z', updated_at: '2025-10-15T06:00:00Z', }, { id: 207, transfer_date: '2025-10-16', flock_source: { id: 5, name: 'Flock E' }, flock_destination: { id: 10, name: 'Laying House 1' }, quantity: 500, kandangs: [ { kandang: { id: 18, name: 'KDG-18', status: 'ACTIVE', location: { id: 105, name: 'Farm Epsilon', address: 'Kp. Epsilon', area: { id: 1005, name: 'Area Tengah' }, }, pic: { id: 512, id_user: 512, email: 'lukas@farm.co', name: 'Lukas Aditya', }, created_user: { id: 9006, id_user: 9006, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-01T08:00:00Z', updated_at: '2025-10-12T08:00:00Z', }, quantity: 250, }, { kandang: { id: 19, name: 'KDG-19', status: 'ACTIVE', location: { id: 105, name: 'Farm Epsilon', address: 'Kp. Epsilon', area: { id: 1005, name: 'Area Tengah' }, }, pic: { id: 513, id_user: 513, email: 'maya@farm.co', name: 'Maya Kartika', }, created_user: { id: 9006, id_user: 9006, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-03T08:00:00Z', updated_at: '2025-10-12T08:00:00Z', }, quantity: 250, }, ], reason: 'Trial batch', created_user: { id: 9106, id_user: 9106, email: 'planner@farm.co', name: 'Planning', }, created_at: '2025-10-16T06:00:00Z', updated_at: '2025-10-16T06:00:00Z', }, { id: 208, transfer_date: '2025-10-17', flock_source: { id: 6, name: 'Flock F' }, flock_destination: { id: 13, name: 'Laying House 4' }, quantity: 1300, kandangs: [ { kandang: { id: 25, name: 'KDG-25', status: 'ACTIVE', location: { id: 106, name: 'Farm Zeta', address: 'Jl. Zeta 6', area: { id: 1006, name: 'Area Tenggara' }, }, pic: { id: 514, id_user: 514, email: 'rara@farm.co', name: 'Rara Pertiwi', }, created_user: { id: 9007, id_user: 9007, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-07T08:00:00Z', updated_at: '2025-10-13T08:00:00Z', }, quantity: 700, }, { kandang: { id: 26, name: 'KDG-26', status: 'ACTIVE', location: { id: 106, name: 'Farm Zeta', address: 'Jl. Zeta 6', area: { id: 1006, name: 'Area Tenggara' }, }, pic: { id: 515, id_user: 515, email: 'doni@farm.co', name: 'Doni Firmansyah', }, created_user: { id: 9007, id_user: 9007, email: 'ops@farm.co', name: 'Ops Bot', }, created_at: '2025-09-09T08:00:00Z', updated_at: '2025-10-13T08:00:00Z', }, quantity: 600, }, ], reason: 'Open new house', created_user: { id: 9107, id_user: 9107, email: 'scheduler@farm.co', name: 'Scheduler', }, created_at: '2025-10-17T06:00:00Z', updated_at: '2025-10-17T06:00:00Z', }, ], }; // TODO: delete this dummy data const FLOCK_SOURCE_DUMMY_DATA: BaseApiResponse = { code: 200, status: 'success', message: 'Get all projectflocks successfully', meta: { page: 1, limit: 10, total_pages: 1, total_results: 2, }, data: [ { id: 2, name: 'Flock Banten', totalQuantity: 300, kandangs: [ { kandang: { id: 3, name: 'Cikaum 1', status: 'ACTIVE', location: { id: 1, name: 'Singaparna', address: 'Tasik', area: { id: 1, name: 'test area', }, }, pic: { id: 1, id_user: 1, email: 'admin@mbugroup.id', name: 'Super Admin', }, }, quantity: 100, }, { kandang: { id: 4, name: 'Cikaum 2', status: 'ACTIVE', location: { id: 1, name: 'Singaparna', address: 'Tasik', area: { id: 1, name: 'test area', }, }, pic: { id: 1, id_user: 1, email: 'admin@mbugroup.id', name: 'Super Admin', }, }, quantity: 150, }, { kandang: { id: 5, name: 'Cikaum 3', status: 'ACTIVE', location: { id: 1, name: 'Singaparna', address: 'Tasik', area: { id: 1, name: 'test area', }, }, pic: { id: 1, id_user: 1, email: 'admin@mbugroup.id', name: 'Super Admin', }, }, quantity: 50, }, ], }, { id: 3, name: 'Flock Priangan', totalQuantity: 200, kandangs: [ { kandang: { id: 3, name: 'Cikaum 1', status: 'ACTIVE', location: { id: 1, name: 'Singaparna', address: 'Tasik', area: { id: 1, name: 'Priangan', }, }, pic: { id: 1, id_user: 1, email: 'admin@mbugroup.id', name: 'Super Admin', }, }, quantity: 100, }, { kandang: { id: 4, name: 'Cikaum 2', status: 'ACTIVE', location: { id: 1, name: 'Singaparna', address: 'Tasik', area: { id: 1, name: 'test area', }, }, pic: { id: 1, id_user: 1, email: 'admin@mbugroup.id', name: 'Super Admin', }, }, quantity: 100, }, ], }, ], }; export class TransferToLayingService extends BaseApiService< TransferToLaying, CreateTransferToLayingPayload, UpdateTransferToLayingPayload > { constructor(basePath: string = '') { super(basePath); } // TODO: remove dummy data and integrate to real API override async getAllFetcher( endpoint: string ): Promise> { // return await httpClientFetcher>(endpoint); await sleep(750); return GET_ALL_TRANSFER_TO_LAYING_DUMMY_DATA; } // TODO: remove dummy data and integrate to real API async getFlockSource(): Promise< BaseApiResponse | undefined > { try { // const getFlockSourcePath = `${this.basePath}/${flockSourcePath}`; // const getSingleRes = await httpClient(getFlockSourcePath); // return getSingleRes; await sleep(500); return FLOCK_SOURCE_DUMMY_DATA; } catch (error) { // if (axios.isAxiosError>(error)) { // return error.response?.data; // } return undefined; } } // TODO: remove dummy data and integrate to real API async bulkApprove( ids: number[] ): Promise | undefined> { try { await sleep(750); return { code: 200, status: 'success', message: 'Berhasil approve data transfer ke laying!', data: { message: 'Berhasil approve data transfer ke laying!', }, }; } catch (error) { // if (axios.isAxiosError>(error)) { // return error.response?.data; // } return undefined; } } // TODO: remove dummy data and integrate to real API async bulkReject( ids: number[] ): Promise | undefined> { try { await sleep(750); return { code: 200, status: 'success', message: 'Berhasil reject data transfer ke laying!', data: { message: 'Berhasil reject data transfer ke laying!', }, }; } catch (error) { // if (axios.isAxiosError>(error)) { // return error.response?.data; // } return undefined; } } } export const TransferToLayingApi = new TransferToLayingService('');