101 lines
4.3 KiB
PHP
101 lines
4.3 KiB
PHP
<?php
|
|
require_once __DIR__ . '/mail/MailService.php';
|
|
$page_title = 'Request a Service';
|
|
$message = '';
|
|
$message_type = '';
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$name = trim($_POST['name'] ?? '');
|
|
$email = trim($_POST['email'] ?? '');
|
|
$service_message = trim($_POST['message'] ?? '');
|
|
|
|
if (empty($name) || empty($email) || empty($service_message) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
$message = 'Please fill in all fields correctly.';
|
|
$message_type = 'danger';
|
|
} else {
|
|
try {
|
|
$pdo = db();
|
|
$stmt = $pdo->prepare(
|
|
'INSERT INTO service_requests (name, email, message) VALUES (?, ?, ?)'
|
|
);
|
|
$stmt->execute([$name, $email, $service_message]);
|
|
|
|
// Notify Admin
|
|
$admin_email = getenv('MAIL_TO') ?: 'admin@example.com';
|
|
$subject = 'New Service Request from ' . $name;
|
|
$html_content = "
|
|
<h1>New Service Request</h1>
|
|
<p><strong>Name:</strong> {$name}</p>
|
|
<p><strong>Email:</strong> {$email}</p>
|
|
<p><strong>Message:</strong></p>
|
|
<p>{$service_message}</p>
|
|
<p>This request is now pending approval in the admin dashboard.</p>
|
|
";
|
|
$text_content = strip_tags($html_content);
|
|
|
|
MailService::sendMail($admin_email, $subject, $html_content, $text_content);
|
|
|
|
$message = 'Thank you! Your service request has been submitted successfully. An account manager will review it shortly.';
|
|
$message_type = 'success';
|
|
} catch (PDOException $e) {
|
|
// In a real app, log this error.
|
|
$message = 'Sorry, there was an error submitting your request. Please try again later.';
|
|
$message_type = 'danger';
|
|
} catch (Exception $e) {
|
|
$message = 'Sorry, there was an error sending the notification. Please try again later.';
|
|
$message_type = 'danger';
|
|
}
|
|
}
|
|
}
|
|
|
|
require_once __DIR__ . '/header.php';
|
|
?>
|
|
|
|
<div class="row justify-content-center">
|
|
<div class="col-lg-8">
|
|
<div class="card shadow-sm">
|
|
<div class="card-body p-5">
|
|
<h1 class="card-title text-center mb-4"><?php echo $page_title; ?></h1>
|
|
|
|
<?php if ($message): ?>
|
|
<div class="alert alert-<?php echo $message_type; ?> alert-dismissible fade show" role="alert">
|
|
<?php echo htmlspecialchars($message); ?>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($message_type !== 'success'): ?>
|
|
<form action="request-service.php" method="POST" class="needs-validation" novalidate>
|
|
<div class="mb-3">
|
|
<label for="name" class="form-label">Full Name</label>
|
|
<input type="text" class="form-control" id="name" name="name" required>
|
|
<div class="invalid-feedback">
|
|
Please enter your full name.
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="email" class="form-label">Email Address</label>
|
|
<input type="email" class="form-control" id="email" name="email" required>
|
|
<div class="invalid-feedback">
|
|
Please enter a valid email address.
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="message" class="form-label">Describe the service you need</label>
|
|
<textarea class="form-control" id="message" name="message" rows="5" required></textarea>
|
|
<div class="invalid-feedback">
|
|
Please describe the service you require.
|
|
</div>
|
|
</div>
|
|
<div class="text-center">
|
|
<button type="submit" class="btn btn-primary btn-lg px-5">Submit Request</button>
|
|
</div>
|
|
</form>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php require_once __DIR__ . '/footer.php'; ?>
|