aboutsummaryrefslogblamecommitdiff
path: root/order.php
blob: 9e465ad450dc612d1d08ef54114793ab83cc1980 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                    
                                                                   




                                             













                                                                                                                        























                                                                                                                       

 








                                     




                                                                                                            







                                                                 

                                                                 
                        
                                        
                                                                          



                                                                                                 
                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                           
                                                                                 
                                                                           
                         

             
                               





                                                                                                                                                                      
                                                                                                   
                                                                                                               
                                                                                 
                        
                                                                                              

                                                                                  

                 












                                                                                                    
                                                                                            

                                                                 




























                                                                                             
                                  




                                                                                      

                                                                                                    
                                                                                                                 
                                  

                                                                               





                                                                         

                                                                        




                      
<?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>