/* tkpurchase-partner-portal.js - Partner portal logic (2-step flow) */ let portalSchedules = []; let portalRequests = []; let portalCheckins = {}; let partnerCompanyId = null; let companyWorkersCache = null; async function loadMySchedules() { try { const r = await api('/schedules/my'); const data = r.data || {}; portalSchedules = Array.isArray(data) ? data : (data.schedules || []); portalRequests = Array.isArray(data) ? [] : (data.requests || []); } catch(e) { console.warn('Load schedules error:', e); portalSchedules = []; portalRequests = []; } } async function loadMyCheckins() { try { const r = await api('/checkins/my'); const list = r.data || []; portalCheckins = {}; list.forEach(c => { if (c.schedule_id && !portalCheckins[c.schedule_id]) portalCheckins[c.schedule_id] = c; }); } catch(e) { console.warn('Load checkins error:', e); portalCheckins = {}; } } async function loadCompanyWorkers() { if (companyWorkersCache) return companyWorkersCache; try { const r = await api('/partners/' + partnerCompanyId + '/workers'); companyWorkersCache = (r.data || []).filter(w => w.is_active !== 0); return companyWorkersCache; } catch(e) { console.warn('Load workers error:', e); companyWorkersCache = []; return []; } } async function renderScheduleCards() { await Promise.all([loadMySchedules(), loadMyCheckins()]); const container = document.getElementById('scheduleCards'); const requestCardsEl = document.getElementById('requestCards'); const workRequestFormEl = document.getElementById('workRequestForm'); const today = new Date().toISOString().substring(0, 10); if (!portalSchedules.length) { container.innerHTML = ''; } else { container.innerHTML = portalSchedules.map(s => { const checkin = portalCheckins[s.id]; const isCheckedIn = checkin && !checkin.check_out_time; const isCheckedOut = checkin && checkin.check_out_time; const sStart = s.start_date ? s.start_date.substring(0, 10) : ''; const sEnd = s.end_date ? s.end_date.substring(0, 10) : ''; const isToday = sStart <= today && sEnd >= today; // 2-step indicators const step1Class = checkin ? 'text-emerald-600' : 'text-gray-400'; const step2Class = isCheckedOut ? 'text-emerald-600' : 'text-gray-400'; const dateBadge = isToday ? `오늘` : `${formatDate(s.start_date) === formatDate(s.end_date) ? formatDate(s.start_date) : formatDate(s.start_date) + ' ~ ' + formatDate(s.end_date)}`; return `
${escapeHtml(s.work_description)}
` : ''}