import type { PageServerLoad } from './$types';
import { getAuthTokens, authenticatedFetch } from '$lib/server/api';

export const load: PageServerLoad = async ({ cookies, fetch, url, parent }) => {
    const parentData = await parent();
    const { accessToken } = getAuthTokens(cookies);

    if (!accessToken) {
        return { 
            error: 'No authenticated', 
            items: { items: [], total: 0, page: 1, page_size: 50, pages: 0 } 
        };
    }

    try {
        const page = Number(url.searchParams.get('page')) || 1;
        const pageSize = Number(url.searchParams.get('pageSize')) || 50;
        
        const cookieCompanyId = cookies.get('active_company_id');
        const companyId = cookieCompanyId ? parseInt(cookieCompanyId) : parentData.companies?.[0]?.id;

        if (!companyId) {
            return { 
                error: 'No company selected', 
                items: { items: [], total: 0, page, page_size: pageSize, pages: 0 } 
            };
        }

        const queryParams = new URLSearchParams({ 
            page: page.toString(), 
            page_size: pageSize.toString(), 
            company_id: companyId.toString()
        });
        
        const response = await authenticatedFetch(`v1/a76/drivers?${queryParams.toString()}`, { method: 'GET' }, cookies, fetch);

        if (!response.ok) {
            return { 
                error: 'Failed to load drivers', 
                status: response.status, 
                items: { items: [], total: 0, page, page_size: pageSize, pages: 0 } 
            };
        }

        const data = await response.json();
        return { 
            items: data, 
            status: 200 
        };
    } catch (error: any) {
        return { 
            error: error.message || 'Error loading drivers', 
            status: 500, 
            items: { items: [], total: 0, page: 1, page_size: 50, pages: 0 } 
        };
    }
};
