catalog.php setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Require login if (!isset($_COOKIE['SIM_id']) || !($SIMinfo = get_user_code())) { //exit('You need to log in.'); $currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $loginUrl = '/login-app/auth/auth-modal.php?mode=login&return_url='.urlencode($currentUrl); ?>

Please log in to continue

You need to be logged in to request a proposal. Once you’re in, you’ll be brought right back here.

prepare("SELECT user_code, user_type, first_name, last_name, email_address, company_name, phone_number FROM simeya_users WHERE user_code=? LIMIT 1"); $stmt->execute([$current_user_code]); $me = $stmt->fetch(PDO::FETCH_ASSOC); //if (!$me) exit('User not found.'); $isSuper = (strtoupper($me['user_type'] ?? 'S') === 'A'); $entity = $_GET['entity'] ?? 'services'; // categories|services|addons $action = $_GET['action'] ?? 'list'; // list|new|edit|save|delete $id = (int)($_GET['id'] ?? 0); $msg = $_GET['msg'] ?? ''; function h($s){ return htmlspecialchars($s ?? '', ENT_QUOTES, 'UTF-8'); } function redirect_entity($e, $m=''){ header("Location: ?entity=$e".($m ? "&msg=".urlencode($m) : '')); exit; } // ---------- POST handlers ---------- if ($_SERVER['REQUEST_METHOD']==='POST') { if ($entity==='categories' && $action==='save') { $id = (int)($_POST['id'] ?? 0); $name = trim($_POST['name'] ?? ''); $desc = trim($_POST['description'] ?? ''); $act = isset($_POST['is_active']) ? 1 : 0; $sort = (int)($_POST['sort_order'] ?? 0); if ($id) { $st=$pdo->prepare("UPDATE website_categories SET name=?, description=?, is_active=?, sort_order=? WHERE id=?"); $st->execute([$name,$desc,$act,$sort,$id]); redirect_entity('categories','Category updated'); } else { $st=$pdo->prepare("INSERT INTO website_categories (name,description,is_active,sort_order) VALUES (?,?,?,?)"); $st->execute([$name,$desc,$act,$sort]); redirect_entity('categories','Category added'); } } if ($entity==='services' && $action==='save') { $id = (int)($_POST['id'] ?? 0); $cat = (int)($_POST['category_id'] ?? 0); $name = trim($_POST['name'] ?? ''); $desc = trim($_POST['short_desc'] ?? ''); $price = (float)($_POST['base_price'] ?? 0); $note = trim($_POST['price_note'] ?? ''); $act = isset($_POST['is_active']) ? 1 : 0; $sort = (int)($_POST['sort_order'] ?? 0); if ($id) { $st=$pdo->prepare("UPDATE website_services SET category_id=?,name=?,short_desc=?,base_price=?,price_note=?,is_active=?,sort_order=? WHERE id=?"); $st->execute([$cat,$name,$desc,$price,$note,$act,$sort,$id]); redirect_entity('services','Service updated'); } else { $st=$pdo->prepare("INSERT INTO website_services (category_id,name,short_desc,base_price,price_note,is_active,sort_order) VALUES (?,?,?,?,?,?,?)"); $st->execute([$cat,$name,$desc,$price,$note,$act,$sort]); redirect_entity('services','Service added'); } } if ($entity==='addons' && $action==='save') { $id = (int)($_POST['id'] ?? 0); $name = trim($_POST['name'] ?? ''); $desc = trim($_POST['short_desc'] ?? ''); $price = (float)($_POST['price'] ?? 0); $act = isset($_POST['is_active']) ? 1 : 0; $sort = (int)($_POST['sort_order'] ?? 0); if ($id) { $st=$pdo->prepare("UPDATE website_service_addons SET name=?,short_desc=?,price=?,is_active=?,sort_order=? WHERE id=?"); $st->execute([$name,$desc,$price,$act,$sort,$id]); redirect_entity('addons','Add-on updated'); } else { $st=$pdo->prepare("INSERT INTO website_service_addons (name,short_desc,price,is_active,sort_order) VALUES (?,?,?,?,?)"); $st->execute([$name,$desc,$price,$act,$sort]); redirect_entity('addons','Add-on added'); } } } // ---------- Delete handlers ---------- if ($action==='delete' && $id) { if ($entity==='categories') { $pdo->prepare("DELETE FROM website_categories WHERE id=?")->execute([$id]); redirect_entity('categories','Category deleted'); } if ($entity==='services') { $pdo->prepare("DELETE FROM website_services WHERE id=?")->execute([$id]); redirect_entity('services','Service deleted'); } if ($entity==='addons') { $pdo->prepare("DELETE FROM website_service_addons WHERE id=?")->execute([$id]); redirect_entity('addons','Add-on deleted'); } } // ---------- Load lists ---------- $cats = $pdo->query("SELECT * FROM website_categories ORDER BY sort_order, name")->fetchAll(PDO::FETCH_ASSOC); $srvc = $pdo->query("SELECT s.*, c.name AS cat_name FROM website_services s LEFT JOIN website_categories c ON c.id=s.category_id ORDER BY s.sort_order, s.name")->fetchAll(PDO::FETCH_ASSOC); $adds = $pdo->query("SELECT * FROM website_service_addons ORDER BY sort_order, name")->fetchAll(PDO::FETCH_ASSOC); // ---------- Load one row for edit/new ---------- $row = null; $isNew = ($action==='new'); if ($action==='edit' && $id) { if ($entity==='categories') { $st=$pdo->prepare("SELECT * FROM website_categories WHERE id=?"); $st->execute([$id]); $row=$st->fetch(PDO::FETCH_ASSOC); } elseif ($entity==='services') { $st=$pdo->prepare("SELECT * FROM website_services WHERE id=?"); $st->execute([$id]); $row=$st->fetch(PDO::FETCH_ASSOC); } else { $st=$pdo->prepare("SELECT * FROM website_service_addons WHERE id=?"); $st->execute([$id]); $row=$st->fetch(PDO::FETCH_ASSOC); } } if ($isNew) { $row = []; } // blank form ?> Website Catalog Admin

Simeya Catalog Manager

Website Catalog Admin

+ Add Category
> Active
Cancel
> Active
Cancel
IDNameDescriptionSortActiveActions
>
Edit Delete
+ Add Service
> Active
Cancel
No categories yet — add a category first.
IDCategoryNameShort DescPriceSortActiveActions
$
>
Edit Delete
+ Add Add-on
> Active
Cancel
IDNameShort DescPriceSortActiveActions
$
>
Edit Delete
proposal.php Simeya – Web App Service Request

Please log in to continue

You need to be logged in to request a proposal. Once you’re in, you’ll be brought right back here.

prepare("SELECT user_code, user_type, first_name, last_name, email_address, company_name, phone_number FROM simeya_users WHERE user_code=? LIMIT 1"); $stmt->execute([$current_user_code]); $me = $stmt->fetch(PDO::FETCH_ASSOC); //if (!$me) exit('User not found.'); $isSuper = (strtoupper($me['user_type'] ?? 'S') === 'A'); // Default “target” user = self $target = $me; // Fetch categories, services, addons $cats = $pdo->query("SELECT id,name,description FROM website_service_categories WHERE is_active=1 ORDER BY sort_order, name")->fetchAll(PDO::FETCH_ASSOC); $svcStmt = $pdo->query(" SELECT s.id, s.category_id, s.name, s.short_desc, s.base_price, s.price_note FROM website_services s JOIN website_service_categories c ON c.id=s.category_id AND c.is_active=1 WHERE s.is_active=1 ORDER BY c.sort_order, s.sort_order, s.name "); $services = $svcStmt->fetchAll(PDO::FETCH_ASSOC); $addOns = $pdo->query("SELECT id,name,short_desc,price FROM website_service_addons WHERE is_active=1 ORDER BY sort_order, name")->fetchAll(PDO::FETCH_ASSOC); // Group services by category $svcByCat = []; foreach ($services as $s) $svcByCat[$s['category_id']][] = $s; function h($s){ return htmlspecialchars($s ?? '', ENT_QUOTES, 'UTF-8'); } $prefName = trim(($target['first_name'] ?? '').' '.($target['last_name'] ?? '')); $prefEmail = $target['email_address'] ?? ''; $prefComp = $target['company_name'] ?? ''; $prefPhone = $target['phone_number'] ?? ''; ?>

Simeya Propposal Request

Web Application Service Request

Select the services you need. We’ll generate a proposal instantly.

Select Client (Super User)
Start typing; click a result to prefill the form for that user.
General Information
No services in this category yet.
Add-ons
Budget & Timeline
Summary
Services Subtotal $0.00
Add-ons $0.00

Total $0.00