/**
  * Creates user
  *
  * @param array $array Array of parameters
  * @throws ModelException
  */
 public function create(array $array)
 {
     $user = new User();
     $this->convertDates($array, ['birth_date']);
     $user->populate($array);
     $existingUser = $this->dao->getUserByLogin($user->login);
     if (!is_null($existingUser)) {
         throw new ModelException('This login already exists');
     }
     $passwordManager = new PasswordManager();
     $salt = $passwordManager->getRandomSalt();
     $password = $passwordManager->getHash($array['password'], $salt);
     $user->password = $password;
     $user->salt = $salt;
     $this->dao->save($user);
 }
 /**
  * Gets user by login
  *
  * @param string $login Login
  * @return User|null User entity or null
  * @throws \db\DatabaseException
  */
 public function getUserByLogin($login)
 {
     $array = $this->db->getRow('select * from ' . DB_TABLE_USERS_VIEW . ' where login = ?', [$login]);
     if (!is_null($array)) {
         $entity = new User();
         $entity->populate($array);
         return $entity;
     }
     return null;
 }