prepare("SELECT u.full_name, p.company_name FROM users u LEFT JOIN shipper_profiles p ON u.id = p.user_id WHERE u.id = ?"); $stmt->execute([$_SESSION['user_id']]); $profile = $stmt->fetch(); if ($profile) { $prefillName = $profile['full_name']; $prefillCompany = $profile['company_name'] ?? ''; } } catch (Throwable $e) {} } if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'create_shipment') { $shipperName = trim($_POST['shipper_name'] ?? ''); $shipperCompany = trim($_POST['shipper_company'] ?? ''); $origin = trim($_POST['origin_city'] ?? ''); $destination = trim($_POST['destination_city'] ?? ''); $cargo = trim($_POST['cargo_description'] ?? ''); $weight = trim($_POST['weight_tons'] ?? ''); $pickupDate = trim($_POST['pickup_date'] ?? ''); $deliveryDate = trim($_POST['delivery_date'] ?? ''); $payment = $_POST['payment_method'] ?? 'thawani'; if ($shipperName === '' || $shipperCompany === '' || $origin === '' || $destination === '' || $cargo === '' || $weight === '' || $pickupDate === '' || $deliveryDate === '') { $errors[] = t('error_required'); } elseif (!is_numeric($weight)) { $errors[] = t('error_invalid'); } if (!$errors) { $stmt = db()->prepare( "INSERT INTO shipments (shipper_name, shipper_company, origin_city, destination_city, cargo_description, weight_tons, pickup_date, delivery_date, payment_method) VALUES (:shipper_name, :shipper_company, :origin_city, :destination_city, :cargo_description, :weight_tons, :pickup_date, :delivery_date, :payment_method)" ); $stmt->execute([ ':shipper_name' => $shipperName, ':shipper_company' => $shipperCompany, ':origin_city' => $origin, ':destination_city' => $destination, ':cargo_description' => $cargo, ':weight_tons' => $weight, ':pickup_date' => $pickupDate, ':delivery_date' => $deliveryDate, ':payment_method' => $payment, ]); $_SESSION['shipper_name'] = $shipperName; $_SESSION['shipper_company_session'] = $shipperCompany; // for rudimentary filtering set_flash('success', t('success_shipment')); header('Location: ' . url_with_lang('shipper_dashboard.php')); exit; } } $shipments = []; $filterCompany = $_SESSION['shipper_company_session'] ?? $prefillCompany; try { if ($filterCompany) { $stmt = db()->prepare("SELECT * FROM shipments WHERE shipper_company = ? ORDER BY created_at DESC LIMIT 20"); $stmt->execute([$filterCompany]); } else { $stmt = db()->query("SELECT * FROM shipments ORDER BY created_at DESC LIMIT 20"); } $shipments = $stmt->fetchAll(); } catch (Throwable $e) { $shipments = []; } $stats = [ 'total' => 0, 'active' => 0, 'delivered' => 0, ]; try { if ($filterCompany) { $stats['total'] = (int)db()->prepare("SELECT COUNT(*) FROM shipments WHERE shipper_company = ?")->execute([$filterCompany]) ? (int)db()->query("SELECT COUNT(*) FROM shipments WHERE shipper_company = " . db()->quote($filterCompany))->fetchColumn() : 0; $stats['active'] = (int)db()->query("SELECT COUNT(*) FROM shipments WHERE shipper_company = " . db()->quote($filterCompany) . " AND status != 'delivered'")->fetchColumn(); $stats['delivered'] = (int)db()->query("SELECT COUNT(*) FROM shipments WHERE shipper_company = " . db()->quote($filterCompany) . " AND status = 'delivered'")->fetchColumn(); } else { $stats['total'] = (int)db()->query("SELECT COUNT(*) FROM shipments")->fetchColumn(); $stats['active'] = (int)db()->query("SELECT COUNT(*) FROM shipments WHERE status != 'delivered'")->fetchColumn(); $stats['delivered'] = (int)db()->query("SELECT COUNT(*) FROM shipments WHERE status = 'delivered'")->fetchColumn(); } } catch (Throwable $e) {} // Fetch countries for dropdowns $countries = []; try { $countries = db()->query("SELECT * FROM countries ORDER BY name_en ASC")->fetchAll(); } catch (Throwable $e) {} render_header(t('shipper_dashboard'), 'shipper'); $flash = get_flash(); ?>
= e(t('welcome_back') ?? 'Welcome to your dashboard. Manage your cargo shipments here.') ?>
= e(t('total_shipments_posted')) ?>
= e(t('active_shipments')) ?>
= e(t('delivered_shipments')) ?>
= e(t('no_shipments')) ?>
| = e(t('route_label') ?? 'Route') ?> | = e(t('status')) ?> | = e(t('offer')) ?> | = e(t('actions')) ?> |
|---|---|---|---|
|
= e($row['origin_city']) ?>
= e($row['destination_city']) ?>
= e(date('M d', strtotime($row['pickup_date']))) ?>
|
= e(status_label($row['status'])) ?> |
$= e($row['offer_price']) ?>
= e($row['offer_owner']) ?>
= e(t('no_offers')) ?>
|
= e(t('view')) ?> |