<?php
//sāk sesiju un iekļauj datubāzes savienojuma failu
session_start(); 
include 'database.php';

//pārbauda, vai pieprasījuma metode ir POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    exit('Invalid request');
}

//Formā ievadītie dati tiek piešķirti mainīgajiem
$email = $_POST['email'] ?? '';
$fname = $_POST['first_name'] ?? '';
$lname = $_POST['last_name'] ?? '';
$password = $_POST['password'] ?? '';
$password_confirm = $_POST['confirm_password'] ?? '';

//Ja kāds no laukiem ir tukšs, tiek atgriezta kļūda 'fields missing'
if (!$email || !$fname || !$lname || !$password || !$password_confirm) {
    echo 'fields_missing';
    exit();
}

//ja parole neatbilst kritērijie, tiek atgriezta kļūda 'password_criteria_not_met'
if (strlen($password) < 9 || !preg_match('/[A-Z]/', $password) || !preg_match('/[a-z]/', $password) || !preg_match('/[0-9]/', $password) || !preg_match('/[\W_]/', $password)) {
    echo 'password_criteria_not_met';
    exit;
}

//ja paroles nesakrīt, tiek atgriezta kļūda 'password_mismatch'
if ($password !== $password_confirm) {
    echo 'password_mismatch';
    exit();
}

//tiek atlasīti visi epasti no datubāzes, kas atbilst formā ievadītajam epastam
$stmt = $conn->prepare("SELECT COUNT(*) FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();

//ja datubāzē atrodas ievadītais epasts, tiek atgriezta kļūda 'email_exists'
if ($count > 0) {
    echo 'email_exists';
    exit();
}

//parole tiek hashota
$hashed_pass = password_hash($password, PASSWORD_DEFAULT);

//lietotāja dati tiek ievietoti datubāzē
$stmt = $conn->prepare("INSERT INTO users (email, fname, lname, pass) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $email, $fname, $lname, $hashed_pass);

//ja ievietošana ir veiksmīga, tiek izveidota sesija un atgriezts 'success', else 'signup_failed'
if ($stmt->execute()) {
    $user_id = $conn->insert_id;
    
    $_SESSION['user_id'] = $user_id;
    $_SESSION['last_activity'] = time();
    
    echo 'success';
} else {
    echo 'signup_failed';
}

//statement un savienojums tiek aizvērti
$stmt->close();
$conn->close();
?>