|
|
<?php
session_start();
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: /login.php");
exit;
}
$clientid = $_SESSION["id"];
$username = $_SESSION["username"];
$type = $_SESSION["type"];
require_once "config.php";
// Get services
$sql = "SELECT id, name, type, billing, description FROM services";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$services = $result->fetch_all(MYSQLI_ASSOC);
// POST actions
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// add entry
$sql = "INSERT INTO orders (service, name, client, billing, comments) VALUES (?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "sssss", $param_service, $param_name, $param_client, $param_billing, $param_comments);
$param_service = $_POST["service"];
$param_name = $_POST["name"];
$param_client = $clientid;
$param_billing = $_POST["billing"];
$param_comments = $_POST["comments"];
if (!mysqli_stmt_execute($stmt) || (mysqli_stmt_affected_rows($stmt) != 1)) {
echo "SQL error.";
} else {
// send admin mail
// Get admin mails
$sql = "SELECT email FROM users WHERE type = 'admin'";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$admins = $result->fetch_all(MYSQLI_ASSOC);
foreach ($admins as $admin) {
$mailer->addAddress($admin["email"]);
}
$mailer->Subject = "New service order request";
$mailer->Body = "Admins,\n\nUser $username requested service ".getservicebyid($_POST["service"])["name"]."\n\n"
."Instance name: ".$_POST["name"]."\n"
."Calculated billing: ".$_POST["billing"]."\n"
."Comments:\n"
.$_POST["comments"]
."\n\n--\nARFNET Client, Service, Ticket and Invoice Management System\nhttps://arf20.com";
if (!$mailer->send()) {
echo 'Mailer Error [ask arf20]: ' . $mailer->ErrorInfo;
} else header("location: ".$_SERVER['SCRIPT_NAME']);
}
}
function getservicebyid($id) {
global $services;
foreach ($services as $service) {
if ($service["id"] == $id) {
return $service;
}
}
}
function genoption($id, $name) {
return "<input type=\"radio\" name=\"service\" id=\"$id\" onclick=\"selectservice($id)\" value=\"$id\">"
."<label for=\"$id\">$name</label><br>\n";
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/style.css">
<title>ARFNET CSTIMS</title>
<script type="text/javascript">
var services = <?php echo json_encode($services); ?>;
var service;
function selectservice(id) {
service = services.find((element) => element["id"] == id);
document.getElementById("pricelabel").innerHTML = "Price: " + service["billing"];
document.getElementById("description").innerHTML = service["description"];
if (service["name"] == "vps") {
document.getElementById("extraform").innerHTML
= `<label><b>Options</b></label><br><label>Cores</label><br><select id=\"cpus\" onclick=\"update()\"><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option></select><br>
<label>Memory</label><br><select id=\"mem\" onclick=\"update()\"><option value=\"0.5\">512MB</option><option value=\"1\">1GB</option><option value=\"2\">2GB</option><option value=\"4\">4GB</option><option value=\"8\">8GB</option></select><br>
<label>SSD</label><br><select id=\"ssd\" onclick=\"update()\"><option value=\"5\">5GB</option><option value=\"10\">10GB</option><option value=\"15\">15GB</option><option value=\"20\">20GB</option><option value=\"30\">30GB</option></select><br>
<br><label id=\"calculated\">Calculated price: </label>`;
} else document.getElementById("extraform").innerHTML = "";
update();
}
function update() {
var comment = document.getElementById("commentbox").value;
if (service["name"] == "vps") {
var cpus = document.getElementById("cpus").value;
var mem = document.getElementById("mem").value;
var ssd = document.getElementById("ssd").value;
document.getElementById("comments").value = "Options:\ncpus: " + cpus + "\nmem: " + mem + "GB\nssd: " + ssd + "GB\n\nClient comment:\n" + comment;
var price = (1*Number(cpus)**2) + (0.5*Number(mem)**2) + (0.02*Number(ssd)**2);
document.getElementById("calculated").innerHTML = "Calculated price: " + price + " €/mo";
document.getElementById("billing").value = price + " €/mo";
} else {
document.getElementById("comments").value = "Client comment:\n" + comment;
document.getElementById("billing").value = service["billing"];
}
}
</script>
</head>
<body>
<header><a href="https://arf20.com/">
<img src="arfnet_logo.png" width="64"><span class="title"><strong>ARFNET</strong></span>
</a></header>
<hr>
<main>
<div class="row">
<div class="col8">
<h2>ARFNET Client Service Ticket and Invoice Management System</h2>
<h3><?php echo strtoupper($type[0]).substr($type, 1); ?> panel</h3>
<div class="form">
<h3>Order a new service</h3>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="border">
<label><b>Service</b></label><br>
<div class="row">
<div class="col">
<label>Premium</dev><br>
<?php
foreach ($services as $service) {
if ($service["type"] != "premium") continue;
echo genoption($service["id"], $service["name"]);
}
?>
</div>
<div class="col">
<label>Standard</dev><br>
<?php
foreach ($services as $service) {
if ($service["type"] != "standard") continue;
echo genoption($service["id"], $service["name"]);
}
?>
</div>
<div class="col">
<label>Free</dev><br>
<?php
foreach ($services as $service) {
if ($service["type"] != "free") continue;
echo genoption($service["id"], $service["name"]);
}
?>
</div>
</div>
</div>
<br><label>Description</label><pre id="description"></pre>
<label id="pricelabel">Price: </label><br>
<br><div class="border" id="extraform"></div>
<br><label>Instance name</label><br>
<input type=text name="name"><br>
<div id="commentcontainer">
<br><label>Comments (describe use case and requirements)</label><br>
<textarea id="commentbox" rows="10" cols="80" onchange="update()"></textarea><br>
</div>
<input type="hidden" name="billing" id="billing">
<input type="hidden" name="comments" id="comments">
<br><input type="submit" value="Place order">
</form>
</div>
</div>
<div class="col2">
<h3>Logged as <?php echo $username; ?></h3>
<h3><a href="/logout.php">Logout</a></h2>
<h3><a href="/client.php">Back to dashboard</a></h2>
</div>
</div>
</main>
</body>
</html>
|