<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
////////////////// Index file //////////////
/// Creates base routes and runs         ///
/// respective functions                 ///
////////////////////////////////////////////
require "../vendor/autoload.php";
require "utils/middleware.php";
require "timeline/timelineRoutes.php";
require "project/projectRoutes.php";
require "user/userRoutes.php";
require "blog/blogRoutes.php";

use api\blog\blogRoutes;
use api\project\projectRoutes;
use api\timeline\timelineRoutes;
use api\user\userRoutes;
use api\utils\middleware;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

// Start slim
$app = AppFactory::create();

// set base path for all routes
$app->setBasePath("/api");

// Add middleware
new middleware($app);

new timelineRoutes($app);
new projectRoutes($app);
new blogRoutes($app);
new userRoutes($app);

// misc routes
$app->post("/contact", function (Request $request, Response $response)
{
    $data = $request->getParsedBody();
    if(empty($data["fName"]) || empty($data["lName"]) || empty($data["email"]) || empty($data["subject"]) || empty($data["message"]))
    {
        $response->getBody()->write(json_encode(array("errorMessage" => "Please fill out all the fields")));
        return $response->withStatus(400);

    }

    if (!filter_var($data["email"], FILTER_VALIDATE_EMAIL))
    {
        $response->getBody()->write(json_encode(array("errorMessage" => "Email is not the correct format")));
        return $response->withStatus(400);
    }

    // email form filler/conatcter
    $headers1 = "From: noreply@rohitpai.co.uk\r\n";
    $headers1 .= "Reply-To: rohit@rohitpai.co.uk\r\n";
    $headers1 .= "MIME-Version: 1.0\r\n";
    $headers1 .= "Content-Type: text/html; charset=UTF-8\r\n";

    $message1 = <<<HEREA
    <html lang="en">
    <head>
    <title>{$data['subject']}</title>
    <style>
        @import url("https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Share+Tech+Mono&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap");
        body {
            font-family: Noto Sans KR, sans-serif;
            font-style: normal;
            font-weight: 500;
            font-size: var(--generalFS);
            line-height: 1.625rem;
        }
        
        table {
            border-collapse: collapse;
            width: 100%;
        }
        
        table td, table th {
            border: 1px solid #ddd;
            padding: 8px;
        }
        
        table tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        
        table tr:hover {
            background-color: #ddd;
        }
        
        table th {
            padding-top: 12px;
            padding-bottom: 12px;
            text-align: left;
            background-color: hsla(79, 62%, 59%, 1);
            color: white;
        }
        
        hr {
            border-color: hsla(0, 0%, 78%, 1);
        }
    </style>
    </head>
    <body>
        <p>Thank you for filling out the form on my website, I will try to respond to your query as soon as I can.</p>
        <br>
        <p>Below is what you filled in for your record</p>
        <table>
            <thead>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Email</th>
                <th>Subject</th>
                <th>message</th>
            </thead>
            <tr>
                <td>{$data['fName']}</td>
                <td>{$data['lName']}</td>         
                <td><a href="mailto:{$data['email']}">{$data['email']}</a></td>
                <td>{$data['subject']}</td>
                <td>{$data['message']}</td>
            </tr>
        </table>
        <br>
        <hr>
        <p>Regards, <br> Rohit Pai <br> <a href="mailto:rohit@rohitpai.co.uk">rohit@rohitpai.co.uk</a>
    </body>
    </html>
    HEREA;

    mail($data["email"], $data["subject"], $message1, $headers1);

    // email to me
    $headers2 = "From: noreply@rohitpai.co.uk\r\n";
    $headers2 .= "Reply-To: {$data['email']}\r\n";
    $headers2 .= "MIME-Version: 1.0\r\n";
    $headers2 .= "Content-Type: text/html; charset=UTF-8\r\n";

    $message2 = <<<HEREB
    <html lang="en">
    <head>
    <title>{$data['subject']}</title>
    <style>
        @import url("https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Share+Tech+Mono&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap");
        body {
            font-family: Noto Sans KR, sans-serif;
            font-style: normal;
            font-weight: 500;
            font-size: var(--generalFS);
            line-height: 1.625rem;
        }
        
        table {
            border-collapse: collapse;
            width: 100%;
        }
        
        table td, table th {
            border: 1px solid #ddd;
            padding: 8px;
        }
        
        table tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        
        table tr:hover {
            background-color: #ddd;
        }
        
        table th {
            padding-top: 12px;
            padding-bottom: 12px;
            text-align: left;
            background-color: hsla(79, 62%, 59%, 1);
            color: white;
        }
        
        hr {
            border-color: hsla(0, 0%, 78%, 1);
        }
    </style>
    </head>
    <body>
        <p>{$data['fName']} {$data['lName']} filled in the form on the website, here is what they sent.</p>
        <table>
            <thead>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Email</th>
                <th>Subject</th>
                <th>message</th>
            </thead>
            <tr>
                <td>{$data['fName']}</td>
                <td>{$data['lName']}</td>         
                <td><a href="mailto:{$data['email']}">{$data['email']}</a></td>
                <td>{$data['subject']}</td>
                <td>{$data['message']}</td>
            </tr>
        </table>
    </body>
    </html>
    HEREB;

    mail("rohit@rohitpai.co.uk", "{$data['fName']} {$data['lName']} filled in the form", $message2, $headers2);
    return $response->withStatus(201);
});

$app->run();
