PascalHonegger/M151

View on GitHub
model/RegisterModel.php

Summary

Maintainability
A
35 mins
Test Coverage
<?php

require_once "Database.inc";
require_once "LoginModel.php";

/**
 * Created by PhpStorm.
 * User: Pascal
 * Date: 14.03.2016
 * Time: 20:12
 */

/**
 * Model für die Registrierung
 */
class RegisterModel
{
    /**
     * Fügt einen neuen User der Person hinzu.
     * @param string $username
     * @param string $password
     * @param string $surname
     * @param string $name
     * @param string $mail
     * @return array|false|null
     */
    public function insert(string $username, string $password, string $surname, string $name, string $mail)
    {
        $loginModel = new LoginModel();

        $user = $loginModel->load($username);

        //User already exists
        if($user != null)
        {
            return false;
        }

        $connection = Database::getConnection();
        $hashedPassword = password_hash($password, PASSWORD_BCRYPT);
        $query = "INSERT INTO person(username, password, surname, name, mail) VALUES(?, ?, ?, ?, ?); SELECT SCOPE_IDENTITY() as ID;";

        //Execute Query
        $stmt = sqlsrv_query($connection, $query, array($username, $hashedPassword, $surname, $name, $mail));

        if (sqlsrv_errors()) {
            http_response_code(500);
        }

        //Select next Result (SCOPE_IDENTITY)
        sqlsrv_next_result($stmt);

        $res = sqlsrv_fetch_array($stmt);

        //Load inserted Row
        $query = 'SELECT * FROM person WHERE id_person = '.$res['ID'];

        $stmt = sqlsrv_query($connection, $query);

        return sqlsrv_fetch_array($stmt);
    }
}