<?php
require_once __DIR__ . '/../config/db.php';
require_once __DIR__ . '/../includes/auth.php';
$pageTitle = "Browse Factory Jobs";
$pageDescription = "Browse open factory jobs near you — filter by skill, area and job type. New openings posted daily by local factories on The Umbergaon Jobs.";

$q = trim($_GET['q'] ?? '');
$area = trim($_GET['area'] ?? '');
$jobType = trim($_GET['job_type'] ?? '');
$category = trim($_GET['category'] ?? '');
$userLat = isset($_GET['lat']) && $_GET['lat'] !== '' ? (float)$_GET['lat'] : null;
$userLng = isset($_GET['lng']) && $_GET['lng'] !== '' ? (float)$_GET['lng'] : null;
$nearMe = $userLat !== null && $userLng !== null;

$where = "WHERE jobs.status = 'open'";
$params = [];

if ($q) {
    $where .= " AND (jobs.title LIKE ? OR jobs.skills_required LIKE ? OR jobs.department LIKE ?)";
    $params[] = "%$q%"; $params[] = "%$q%"; $params[] = "%$q%";
}
if ($area) {
    $where .= " AND (jobs.area LIKE ? OR jobs.city LIKE ?)";
    $params[] = "%$area%"; $params[] = "%$area%";
}
if ($jobType) {
    $where .= " AND jobs.job_type = ?";
    $params[] = $jobType;
}
if ($category) {
    $where .= " AND jobs.category = ?";
    $params[] = $category;
}

// count total for pagination
$countSql = "SELECT COUNT(*) FROM jobs JOIN factories ON jobs.factory_id = factories.id $where";
$countStmt = $pdo->prepare($countSql);
$countStmt->execute($params);
$totalJobs = $countStmt->fetchColumn();

$perPage = 12;
$page = max(1, (int)($_GET['page'] ?? 1));
$totalPages = max(1, ceil($totalJobs / $perPage));
$page = min($page, $totalPages);
$offset = ($page - 1) * $perPage;

$sql = "SELECT jobs.*, factories.factory_name, factories.status AS factory_status, factories.premium_status,
    (SELECT COUNT(*) FROM jobs j2 WHERE j2.factory_id = factories.id AND j2.status = 'open') AS factory_open_jobs,
    (SELECT AVG(rating) FROM factory_reviews WHERE factory_reviews.factory_id = factories.id) AS avg_rating,
    (SELECT COUNT(*) FROM factory_reviews WHERE factory_reviews.factory_id = factories.id) AS review_count";

$distanceParams = [];
if ($nearMe) {
    $sql .= ", (6371 * ACOS(
        COS(RADIANS(?)) * COS(RADIANS(factories.latitude)) * COS(RADIANS(factories.longitude) - RADIANS(?)) +
        SIN(RADIANS(?)) * SIN(RADIANS(factories.latitude))
    )) AS distance_km";
    $distanceParams = [$userLat, $userLng, $userLat];
}

$sql .= " FROM jobs JOIN factories ON jobs.factory_id = factories.id
    $where";

if ($nearMe) {
    $sql .= " ORDER BY (factories.latitude IS NULL) ASC, distance_km ASC";
} else {
    $sql .= " ORDER BY jobs.is_featured DESC, jobs.created_at DESC";
}
$sql .= " LIMIT $perPage OFFSET $offset";

$stmt = $pdo->prepare($sql);
$stmt->execute(array_merge($distanceParams, $params));
$jobs = $stmt->fetchAll();

$savedJobIds = [];
if (isEmployeeLoggedIn()) {
    $s = $pdo->prepare("SELECT job_id FROM saved_jobs WHERE employee_id = ?");
    $s->execute([$_SESSION['employee_id']]);
    $savedJobIds = array_column($s->fetchAll(), 'job_id');
}

// quick-filter chips: most common areas among open jobs
$areaChips = $pdo->query("SELECT area, COUNT(*) AS cnt FROM jobs WHERE status = 'open' AND area IS NOT NULL AND area != '' GROUP BY area ORDER BY cnt DESC LIMIT 8")->fetchAll();

$showDashChrome = isEmployeeLoggedIn();
$isDashboardPage = $showDashChrome;
require_once __DIR__ . '/../includes/header.php';
?>
<?php if ($showDashChrome): ?>
<div class="dash-shell">
    <aside class="sidebar">
        <?php echo employeeSidebar('browse'); ?>
    </aside>
    <main class="dash-main">
<?php else: ?>
<section style="padding-top:36px;">
    <div class="container">
<?php endif; ?>
        <h2 class="section-title">Browse Jobs</h2>
        <p class="section-sub">Find factory jobs near your area</p>

        <form method="get" class="search-box" style="max-width:100%; margin-bottom:16px;">
            <input type="text" name="q" placeholder="Job title or skill" value="<?php echo e($q); ?>">
            <input type="text" name="area" placeholder="Area / locality" value="<?php echo e($area); ?>">
            <select name="category">
                <option value="">All Categories</option>
                <?php foreach (jobCategories() as $cat): ?>
                <option value="<?php echo e($cat); ?>" <?php echo $category===$cat?'selected':''; ?>><?php echo e($cat); ?></option>
                <?php endforeach; ?>
            </select>
            <select name="job_type">
                <option value="">All Job Types</option>
                <?php foreach(['Full Time','Part Time','Contract'] as $t): ?>
                <option value="<?php echo $t; ?>" <?php echo $jobType===$t?'selected':''; ?>><?php echo $t; ?></option>
                <?php endforeach; ?>
            </select>
            <button type="submit" class="btn btn-primary">Search</button>
        </form>

        <div style="margin-bottom:24px;">
            <button type="button" class="btn btn-dark btn-sm" onclick="findJobsNearMe()">📍 Find Jobs Near Me</button>
            <?php if ($nearMe): ?>
                <a href="?<?php $qp = $_GET; unset($qp['lat'], $qp['lng']); echo http_build_query($qp); ?>" style="margin-left:10px; font-size:0.85rem; color:var(--ink-soft);">Clear location filter</a>
            <?php endif; ?>
            <span id="nearMeStatus" style="margin-left:10px; font-size:0.85rem; color:var(--ink-soft);"></span>
        </div>

        <?php if (count($areaChips) > 0): ?>
        <div style="margin-bottom:20px;">
            <?php foreach ($areaChips as $ac): ?>
                <a href="?area=<?php echo urlencode($ac['area']); ?>" class="tag" style="margin:0 6px 6px 0; display:inline-block; <?php echo ($area === $ac['area']) ? 'background:var(--navy); color:#fff;' : ''; ?>"><?php echo e($ac['area']); ?> (<?php echo $ac['cnt']; ?>)</a>
            <?php endforeach; ?>
        </div>
        <?php endif; ?>

        <p style="color:var(--ink-soft); margin-bottom:20px;"><?php echo (int)$totalJobs; ?> job(s) found<?php echo $totalPages > 1 ? " — page $page of $totalPages" : ""; ?></p>

        <div class="grid-3">
            <?php if (count($jobs) === 0): ?>
                <p style="grid-column:1/-1; text-align:center; color:var(--ink-soft);">No jobs match your search. Try different keywords.</p>
            <?php endif; ?>
            <?php foreach ($jobs as $job): ?>
                <div class="job-card">
                    <span class="job-type-tag"><?php echo e($job['job_type']); ?></span>
                    <?php echo featuredBadge($job['is_featured']); ?>
                    <h3><?php echo e($job['title']); ?></h3>
                    <div class="factory-name"><a href="factory_detail.php?id=<?php echo $job['factory_id']; ?>" style="color:inherit;"><?php echo e($job['factory_name']); ?></a><?php echo verifiedBadge($job['factory_status']); ?> <?php echo premiumBadge($job['premium_status']); ?></div>
                    <?php echo hiringNowBadge($job['factory_open_jobs']); ?>
                    <?php if ($job['review_count'] > 0): ?>
                        <div><?php echo renderStars($job['avg_rating'], $job['review_count']); ?></div>
                    <?php endif; ?>
                    <div class="meta">
                        <span>🏭 <?php echo e($job['category']); ?></span>
                        <?php if ($nearMe && isset($job['distance_km']) && $job['distance_km'] !== null): ?>
                            <span style="color:var(--green); font-weight:700;">📍 <?php echo number_format($job['distance_km'], 1); ?> km away</span>
                        <?php else: ?>
                            <span>📍 <?php echo e($job['area'] ?: $job['city']); ?></span>
                        <?php endif; ?>
                        <span>🕐 <?php echo e($job['shift']); ?> Shift</span>
                        <span>👥 <?php echo (int)$job['positions']; ?> openings</span>
                    </div>
                    <div class="apply-row">
                        <span class="salary"><?php echo $job['salary_min'] ? '₹' . number_format($job['salary_min']) . ' - ₹' . number_format($job['salary_max']) : 'As per experience'; ?></span>
                        <div class="apply-row-actions">
                            <?php echo saveJobButton($job['id'], $savedJobIds, '/jobs/browse.php'); ?>
                            <a href="job_detail.php?id=<?php echo $job['id']; ?>" class="btn btn-dark btn-sm">View</a>
                        </div>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>

        <?php if ($totalPages > 1): ?>
        <div class="pagination">
            <?php
            $queryParams = $_GET;
            for ($p = 1; $p <= $totalPages; $p++):
                $queryParams['page'] = $p;
                $url = '?' . http_build_query($queryParams);
            ?>
                <a href="<?php echo e($url); ?>" class="<?php echo $p === $page ? 'active' : ''; ?>"><?php echo $p; ?></a>
            <?php endfor; ?>
        </div>
        <?php endif; ?>
<?php if ($showDashChrome): ?>
    </main>
</div>
<?php else: ?>
    </div>
</section>
<?php endif; ?>
<script>
function findJobsNearMe() {
    const status = document.getElementById('nearMeStatus');
    if (!navigator.geolocation) {
        status.textContent = 'Geolocation not supported by your browser.';
        return;
    }
    status.textContent = 'Getting your location...';
    navigator.geolocation.getCurrentPosition(
        function (pos) {
            const params = new URLSearchParams(window.location.search);
            params.set('lat', pos.coords.latitude);
            params.set('lng', pos.coords.longitude);
            params.delete('page');
            window.location.search = params.toString();
        },
        function () {
            status.textContent = 'Could not get your location. Please allow location access and try again.';
        }
    );
}
</script>
<?php require_once __DIR__ . '/../includes/footer.php'; ?>
