Files
2026-03-08 16:33:24 -04:00

134 lines
4.0 KiB
PHP

<?php
namespace App\Controllers\View;
use App\Controllers\BaseController;
use App\Controllers\View\EmailController;
use App\Models\SupportRequestModel;
use App\Models\UserModel;
class SupportController extends BaseController
{
public function __construct()
{
helper(['form']);
}
public function index()
{
return view('/support');
}
public function submit()
{
// Retrieve user_id from session
$session = session();
$user_id = $session->get('user_id');
// If no user_id is found in the session, redirect with an error
if (!$user_id) {
return redirect()->back()->with('error', 'You must be logged in to submit a support request.');
}
// Load the UserModel to retrieve user information
$userModel = new UserModel();
$user = $userModel->find($user_id);
// If the user does not exist, redirect with an error
if (!$user) {
return redirect()->back()->with('error', 'User not found. Please contact support.');
}
// Retrieve form data
$subject = $this->request->getPost('subject');
$message = $this->request->getPost('message');
// Get the user's full name using firstname and lastname
$full_name = $user['firstname'] . ' ' . $user['lastname'];
// Call the function to send an email using SMTP (configured via Email.php or .env)
$sendStatus = $this->sendSupportEmail($user['email'], $full_name, $subject, $message);
if ($sendStatus === true) {
return redirect()->back()->with('success', 'Your support request has been submitted successfully.');
} else {
// If email fails, log the error and display a message
log_message('error', $sendStatus);
return redirect()->back()->with('error', 'Failed to send your support request. Please try again later.');
}
}
/**
* Function to send an email via SMTP from user to support@domain.org
*
* @param string $user_email - The email address of the user sending the request.
* @param string $user_name - The name of the user sending the request.
* @param string $subject - The subject of the support request.
* @param string $message - The body of the support request.
* @return bool|string - Returns true if email sent successfully, otherwise error message.
*/
public function sendSupportEmail($user_email, $full_name, $subject, $message)
{
$mailer = new EmailController();
$ok = $mailer->sendEmail(
'support@alrahmaisgl.org',
$subject,
nl2br($message),
null,
$user_email,
$full_name
);
return $ok === true ? true : 'Failed to send support email.';
}
public function requests()
{
$supportModel = new SupportRequestModel();
$userId = session()->get('user_id');
$data['requests'] = $supportModel->where('user_id', $userId)->findAll();
return view('/support_requests', $data);
}
public function supportTeacher()
{
return view('/teacher/teacher_support');
}
}
/*
public function submit()
{
$validation = \Config\Services::validation();
// Define validation rules
$validation->setRules([
'subject' => 'required|min_length[3]',
'message' => 'required|min_length[10]',
]);
if (!$validation->withRequest($this->request)->run()) {
return view('/support', [
'validation' => $validation
]);
}
$supportModel = new SupportRequestModel();
$supportModel->save([
'user_id' => session()->get('user_id'),
'subject' => $this->request->getPost('subject'),
'message' => $this->request->getPost('message'),
'status' => 'open'
]);
session()->setFlashdata('success', 'Your support request has been submitted.');
return redirect()->to('/support');
}
*/