42 lines
1.8 KiB
PHP
42 lines
1.8 KiB
PHP
<?php
|
|
function setup_database($pdo) {
|
|
try {
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
role ENUM('Admin', 'Sales Rep', 'Dispatch') NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)");
|
|
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS orders (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
order_number VARCHAR(255) NOT NULL UNIQUE,
|
|
order_date DATE NOT NULL,
|
|
order_text TEXT NOT NULL,
|
|
status ENUM('Pending', 'Query', 'Query Replied', 'Shipped', 'Cancelled') NOT NULL DEFAULT 'Pending',
|
|
sales_rep_id INT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (sales_rep_id) REFERENCES users(id)
|
|
)");
|
|
|
|
// Add a default admin user if one doesn't exist
|
|
$stmt = $pdo->query("SELECT COUNT(*) FROM users WHERE role = 'Admin'");
|
|
if ($stmt->fetchColumn() == 0) {
|
|
$admin_email = 'admin@example.com';
|
|
$admin_name = 'Admin';
|
|
// In a real app, use a more secure password policy
|
|
$admin_password = password_hash('password', PASSWORD_DEFAULT);
|
|
$admin_role = 'Admin';
|
|
|
|
$insert_stmt = $pdo->prepare("INSERT INTO users (name, email, password, role) VALUES (?, ?, ?, ?)");
|
|
$insert_stmt->execute([$admin_name, $admin_email, $admin_password, $admin_role]);
|
|
}
|
|
} catch (PDOException $e) {
|
|
// In a real app, you would log this error.
|
|
die("Database setup failed: " . $e->getMessage());
|
|
}
|
|
}
|