"error", "message" => "Unknown error"];
try {
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$projectname = $_POST["projectname"] ?? '';
$erfno = $_POST["erfno"] ?? '';
$allotment = $_POST["allotment"] ?? '';
$client = $_POST["client"] ?? '';
$deposit = $_POST["deposit"] ?? '';
$totalfees = $_POST["totalfees"] ?? '';
if (strpos($projectname, '&') !== false) {
$projectname = str_replace('&', '-LBR', $projectname);
}
if (strpos($projectname, '
') !== false) {
$projectname = preg_replace('/
/i', '', $projectname);
}
date_default_timezone_set('Africa/Johannesburg');
$currentDateTime = date('Y-m-d H:i');
$clientprogress = $currentDateTime;
$db2 = new SQLite3('database/clients.db');
$query2 = "SELECT name, id FROM clients";
$result2 = $db2->query($query2);
$clientid = null;
while ($row2 = $result2->fetchArray()) {
if ($row2['name'] == $client) {
$clientid = $row2['id'];
break;
}
}
$db2->close();
if ($clientid === null) {
throw new Exception("Client ID not found for client: $client");
}
$db = new SQLite3('database/projects.db');
$insertQuery = "INSERT INTO projects (projectname, erfno, allotment, client, clientid, clientprogress)
VALUES ('$projectname', '$erfno', '$allotment', '$client', $clientid, '$clientprogress')";
if (!$db->exec($insertQuery)) {
throw new Exception("Insert failed: " . $db->lastErrorMsg());
}
$newRowID = $db->lastInsertRowID();
$currentDate = date('Y-m-d');
$currentYear = date('Y');
$numericPartTotalfees = preg_replace('/[^0-9.]/', '', $totalfees);
$phaseFeeValueTotalfees = floatval($numericPartTotalfees);
$numericPartDeposit = preg_replace('/[^0-9.]/', '', $deposit);
$phaseFeeValueDeposit = floatval($numericPartDeposit);
$Fees = $phaseFeeValueTotalfees - $phaseFeeValueDeposit;
// You might want to move this function definition outside
function formatNumberWithSpaces($number) {
return number_format($number, 2, '.', ' ');
}
$formattedFees = formatNumberWithSpaces($Fees);
$formattedDeposit = formatNumberWithSpaces($deposit);
$clientprogress = $currentDate . "«" . $projectname . "«" . $currentYear . $newRowID . "«" . "50%" . "«" .
"Project Started, Coming Soon" . "«" . "100%, 0%" . "«" .
$currentDate . " - Started., Not Started" . "«" .
$currentDateTime . ", " . $currentDateTime . "«" .
$formattedDeposit . ", " . $formattedFees;
$updateQuery = "UPDATE projects SET clientprogress = '$clientprogress' WHERE rowid = $newRowID";
if (!$db->exec($updateQuery)) {
throw new Exception("Update failed: " . $db->lastErrorMsg());
}
$db->close();
$ftp_server = "blackhoundenterprises.myqnapcloud.com";
$ftp_username = "BHDomain02";
$ftp_password = "h&92#8C7g92d}&B";
$ftp_port = 21;
$directory = "/2025/";
// Establish FTP connection
$conn_id = ftp_connect($ftp_server, $ftp_port);
if (!$conn_id) {
die("Couldn't connect to FTP server.");
}
if ($conn_id && ftp_login($conn_id, $ftp_username, $ftp_password)) {
ftp_pasv($conn_id, true); // Enable passive mode if needed
$items = ftp_nlist($conn_id, $directory);
$maxNumber = 0;
$nextNumber = 0;
foreach ($items as $item) {
if (preg_match('/x0*(\d+)\s*-\s*/', $item, $matches)) {
$number = (int)$matches[1]; // Already trimmed leading zeros
if ($number > $maxNumber) {
$maxNumber = $number;
}
}
}
ftp_close($conn_id);
foreach ($items as $item) {
if (preg_match('/x(\d+)\s*-\s*(.+)/', $item, $matches)) {
$textPart = $matches[2];
//echo "Text: " . $textPart . "\n";
} else {
}
}
} else {
// echo "Couldn't connect or login to FTP server.";
}
if (!empty($_FILES['files']['name'][0])) {
$nextNumber = $maxNumber + 1;
//echo $nextNumber;
$formatted = 'x' . str_pad($nextNumber, 3, '0', STR_PAD_LEFT);
$remote_directory1 = "/" . $currentYear;
$remote_directory2 = "/" . $formatted . " - " . $projectname;
$remote_directory3 = "/Received";
// Establish FTP connection
$conn_id = ftp_connect($ftp_server, $ftp_port);
if (!$conn_id) {
die("Couldn't connect to FTP server.");
}
// Login to FTP
$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);
if (!$login_result) {
ftp_close($conn_id);
die("Couldn't log in to FTP server.");
}
// Set passive mode
ftp_pasv($conn_id, true);
// Check if the upload folder exists
$remote_folder_exists = ftp_chdir($conn_id, $remote_directory1);
if (!$remote_folder_exists) {
// Folder doesn't exist, so create it
if (!ftp_mkdir($conn_id, $remote_directory1)) {
ftp_close($conn_id);
die("Failed to create 'Upload' directory on FTP server.");
}
// Change to the newly created directory
ftp_chdir($conn_id, $remote_directory1);
}
// Check if the upload folder exists
$remote_folder_exists = ftp_chdir($conn_id, $remote_directory1 . $remote_directory2);
if (!$remote_folder_exists) {
// Folder doesn't exist, so create it
if (!ftp_mkdir($conn_id, $remote_directory1 . $remote_directory2)) {
ftp_close($conn_id);
die("Failed to create 'Upload' directory on FTP server.");
}
// Change to the newly created directory
ftp_chdir($conn_id, $remote_directory1 . $remote_directory2);
}
// Check if the upload folder exists
$remote_folder_exists = ftp_chdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3);
if (!$remote_folder_exists) {
// Folder doesn't exist, so create it
if (!ftp_mkdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3)) {
ftp_close($conn_id);
die("Failed to create 'Upload' directory on FTP server.");
}
// Change to the newly created directory
ftp_chdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3);
}
// Ensure files are uploaded
if (!empty($_FILES['files']['name'][0])) {
foreach ($_FILES['files']['name'] as $key => $name) {
$tmpName = $_FILES['files']['tmp_name'][$key];
$remote_file = $remote_directory1 . $remote_directory2 . $remote_directory3 . "/" . basename($name);
// Upload file to FTP server
if (ftp_put($conn_id, $remote_file, $tmpName, FTP_BINARY)) {
// echo "$name uploaded successfully to FTP.\n";
} else {
//echo "Failed to upload $name to FTP.\n";
}
}
} else {
echo "No files selected.";
}
// Close FTP connection
ftp_close($conn_id);
}
$response = ["status" => "success", "message" => "Project saved successfully.", "rowid" => $newRowID];
}
} catch (Exception $e) {
$response["message"] = $e->getMessage();
}
echo json_encode($response);
?>