Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Entity;
- use Doctrine\ORM\Mapping as ORM;
- use Doctrine\DBAL\Driver\Connection;
- use http\Params;
- use Symfony\Component\HttpFoundation\Session\Session;
- use Symfony\Component\HttpFoundation\Request;
- /**
- * User
- *
- * @ORM\Table(name="user")
- * @ORM\Entity
- */
- class User
- {
- /**
- * @var int
- *
- * @ORM\Column(name="user_sid", type="integer", nullable=false)
- * @ORM\Id
- * @ORM\GeneratedValue(strategy="IDENTITY")
- */
- private $userSid;
- /**
- * @var string|null
- *
- * @ORM\Column(name="first_name", type="string", length=40, nullable=true)
- */
- private $firstName;
- /**
- * @var string|null
- *
- * @ORM\Column(name="last_name", type="string", length=40, nullable=true)
- */
- private $lastName;
- /**
- * @var string|null
- *
- * @ORM\Column(name="password", type="string", length=255, nullable=true)
- */
- private $password;
- /**
- * @var int|null
- *
- * @ORM\Column(name="position_sid", type="integer", nullable=true)
- */
- private $positionSid;
- /**
- * @var string|null
- *
- * @ORM\Column(name="email", type="string", length=64, nullable=true)
- */
- private $email;
- /**
- * @var int|null
- *
- * @ORM\Column(name="available_days", type="integer", nullable=true)
- */
- private $availableDays;
- /**
- * @var int|null
- *
- * @ORM\Column(name="role_sid", type="integer", nullable=true)
- */
- private $roleSid;
- /**
- * @var int|null
- *
- * @ORM\Column(name="contract_id", type="integer", nullable=true)
- */
- private $contractId;
- /**
- * @var bool|null
- *
- * @ORM\Column(name="deleted", type="boolean", nullable=true)
- */
- private $deleted = '0';
- private $conn;
- private $request;
- public $session;
- public function __construct(Connection $conn, Request $request)
- {
- $this->conn = $conn;
- $this->request = $request;
- $this->session = $request->getSession();
- $this->session->start();
- }
- public function isLogged()
- {
- $session = $this->request->getSession();
- $session->start();
- if ($session->get('logged') == TRUE) {
- return TRUE;
- }
- return FALSE;
- }
- public function userExists($email)
- {
- $sql = "SELECT count(*) as count, user_sid FROM user WHERE `email`=:email";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['email' => $email]);
- return ($stmt->fetch());
- }
- public function hasPasswordMatch($pass, $id)
- {
- $sql = "SELECT password FROM user WHERE `user_sid`=:id";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['id' => $id]);
- $dbPass = $stmt->fetch()['password'];
- return $dbPass === hash('sha256',$pass);
- }
- public function getUserFirstName($id)
- {
- $id = (int) $id;
- $sql = "SELECT first_name FROM user WHERE `user_sid`=:id LIMIT 1";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['id' => $id]);
- #var_dump($stmt->fetchAll());
- return $stmt->fetchAll()[0]['first_name'];
- }
- public function isAdmin($id)
- {
- $id = (int) $id;
- $sql = "SELECT role_sid FROM user WHERE `user_sid`=:id LIMIT 1";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['id' => $id]);
- if ($stmt->fetch()['role_sid'] == 1) {
- return TRUE;
- }
- return FALSE;
- }
- public function insertUser($firstName,
- $lastName,
- $email,
- $password,
- $confirmPassword,
- $availableDays,
- $contractID,
- $positionSID,
- $roleSID)
- {
- $firstName = trim($firstName);
- $lastName = trim($lastName);
- $email = trim($email);
- // $password = $password;
- $availableDays = (int) $availableDays;
- $contractID = (int) $contractID;
- $positionSID = (int) $positionSID;
- $error = $this->validateUserData($firstName, $lastName, $email, $password, $confirmPassword, $availableDays, $contractID, $positionSID, 'insert', $this->conn);
- if (count($error) != 0) {
- /*
- * Foreach all errors collected by array and displaying them throught flash.
- */
- $errorLog = "Some problems appears: ";
- foreach ($error as $err) {
- $errorLog .= $err . ' ';
- }
- return array('status' => FALSE, 'error' => $errorLog);
- } else {
- $sql = <<<SQL
- INSERT INTO user (
- `first_name`,
- `last_name`,
- `password`,
- `position_sid`,
- `email`,
- `available_days`,
- `role_sid`,
- `contract_id`
- )
- VALUES
- (
- :firstname,
- :lastname,
- :password,
- :positionSid,
- :email,
- :availableDays,
- :roleSid,
- :contractId
- )
- SQL;
- $password = hash('sha256', $password);
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['firstname' => $firstName, 'lastname' => $lastName, 'password' => $password,
- 'email' => $email, 'availableDays' => $availableDays, 'positionSid' => $positionSID,
- 'roleSid' => $roleSID, 'contractId' => $contractID]);
- return array('status' => TRUE, 'error' => "No errors");
- }
- }
- /*public function login($email, $password, Connection $conn){
- if($this->userExists($email, $password, $conn) == 1){
- }
- }*/
- public function getAllEmployees()
- {
- $sql = "select user_sid,first_name ,last_name, email, available_days,
- contract_id,deleted from user where role_sid = 2;";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute();
- return $stmt->fetchAll();
- }
- public function deleteEmployee(int $userSid)
- {
- $sql = "update user set deleted = 1 where user_sid = :user_sid";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(["user_sid" => $userSid]);
- }
- public function getInfo(int $id)
- {
- $id = (int) $id;
- $sql = "select user_sid,first_name ,last_name, email, available_days,
- contract_id, user.role_sid, role.role_name, pos.position_name from user
- LEFT JOIN `role` ON user.role_sid = role.role_sid
- LEFT JOIN `position` AS pos ON user.position_sid = pos.position_sid
- where user_sid = :id;";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['id' => $id]);
- return $stmt->fetchAll();
- }
- public function activateEmployee(int $userSid)
- {
- $sql = "update `user` set deleted = 0 where user_sid = :user_sid";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(["user_sid" => $userSid]);
- }
- public function updateUser($firstName, $lastName, $email, $password, $confirmPassword, $availableDays,
- $contractID, $positionSID, $roleSID, $userSID)
- {
- $error = $this->validateUserData($firstName, $lastName, $email, $password, $confirmPassword,
- $availableDays, $contractID, $positionSID, 'edit');
- if (count($error) != 0) {
- /*
- * Foreach all errors collected by array and displaying them through flash.
- */
- $errorLog = "Some problems appears: ";
- foreach ($error as $err) {
- $errorLog .= $err . ' ';
- }
- return array('status' => FALSE, 'error' => $errorLog);
- } else {
- if ($password == '' && $confirmPassword == '') {
- $sql = "update `user` set first_name = :firstName, last_name = :lastName, email = :email,
- available_days = :availableDays, contract_id = :contractID, position_sid = :positionSID,
- role_sid = :roleSID where user_sid = :userSID";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['firstName' => $firstName, 'lastName' => $lastName, 'email' => $email,
- 'availableDays' => $availableDays, 'positionSID' => $positionSID,
- 'roleSID' => $roleSID, 'contractID' => $contractID, 'userSID' => $userSID]);
- } else {
- $sql = "update `user` set first_name = :firstName, last_name = :lastName, email = :email,
- password = :password,available_days = :availableDays, position_sid = :positionSID,
- role_sid = :roleSID, contract_id = :contractID where user_sid = :userSID";
- $stmt = $this->conn->prepare($sql);
- $password = hash('sha256',$this->password);
- $stmt->execute(['firstName' => $firstName, 'lastName' => $lastName, 'email' => $email,
- 'password' => $password, 'availableDays' => $availableDays, 'positionSID' => $positionSID,
- 'roleSID' => $roleSID, 'contractID' => $contractID, 'userSID' => $userSID]);
- }
- return array('status' => TRUE, 'error' => "No errors");
- }
- }
- public function getUser(int $id)
- {
- $sql = "select user.*,pos.position_name from `user` left join `position` as pos
- on `user`.position_sid = pos.position_sid where user_sid = :id limit 1";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(["id" => $id]);
- return $stmt->fetchAll()[0];
- }
- public function isEmailAdded($email)
- {
- $sql = "SELECT count(*) as count FROM user WHERE email=:email";
- $stmt = $this->conn->prepare($sql);
- $stmt->execute(['email' => $email]);
- $count = $stmt->fetchAll()[0]['count'];
- if ((int) $count > 0) {
- return TRUE;
- } else {
- return FALSE;
- }
- }
- public function validateUserData($firstName, $lastName, $email, $password, $confirmPassword,
- $availableDays, $contractID, $positionSID, $type)
- {
- $error = array();
- if ($firstName == NULL || $firstName == "") {
- $error[] = "Add first name.";
- }
- if ($lastName == NULL || $lastName == "") {
- $error[] = "Add last name.";
- }
- if ($email == NULL || $email == "") {
- $error[] = "Add email address.";
- }
- if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
- $error[] = "Enter valid email.";
- }
- if ($type == 'insert') {
- if ($this->isEmailAdded($email)) {
- $error[] = "Email is already taken.";
- }
- if ($positionSID == NULL || $positionSID == "") {
- $error[] = "Add position.";
- }
- if ($password == NULL) {
- $error[] = "Add password.";
- }
- if ($confirmPassword == NULL || $password != $confirmPassword) {
- $error[] = "Passwords does not match.";
- }
- } else if ($type == 'edit') {
- if ($password == '' && $confirmPassword == '') {
- if ($positionSID == NULL || $positionSID == "") {
- $error[] = "Add position.";
- }
- } else {
- if ($password == NULL) {
- $error[] = "Add password.";
- }
- if ($confirmPassword == NULL || $password != $confirmPassword) {
- $error[] = "Passwords does not match.";
- }
- }
- }
- if ($availableDays == NULL) {
- $error[] = "Add available days.";
- }
- if (!filter_var($availableDays, FILTER_VALIDATE_INT)) {
- $error[] = "Enter valid available days.";
- }
- if ($contractID == NULL) {
- $error[] = "Add contract id.";
- }
- if (!filter_var($contractID, FILTER_VALIDATE_INT)) {
- $error[] = "Enter valid contract id.";
- }
- return $error;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement