Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Model;
- abstract class AddUserTransation extends Transation
- {
- private $name;
- private $email;
- private $password;
- private $phone;
- private $addRess;
- protected const nameStrlenMin = 4;
- protected const nameStrlenMax = 120;
- protected const phoneStrlenMin = 10;
- protected const phoneStrlenMax = 20;
- private const passwordStrlenMin = 6;
- private const passwordStrlenMax = 30;
- public function __construct(DataBase $dataBase, string $name, string $email, string $password, int $phone, string $addRess)
- {
- parent::__construct($dataBase);
- $this->validateName($name);
- $this->validateEmail($email);
- $this->validatePassword($password);
- $this->validatePhone($phone);
- $this->validateAddRess($addRess);
- }
- public function execute( ): void
- {
- if ($this->emailAlreadyExist()) throw new \Exception('emailAlreadyExist');
- if ($this->phoneAlreadyExist()) throw new \Exception('phoneAlreadyExist');
- $User = new User($this->name, $this->email, $this->password, $this->phone, $this->addRess);
- $User->type = $this->makeType();
- $this->DataBase->addUser($User);
- }
- protected abstract function makeType( );
- private function emailAlreadyExist( ): bool
- {
- $result = $this->DataBase->getUserByEmail($this->email);
- if ($this->validate->isObjectNullData($result)) return FALSE;
- return TRUE;
- }
- private function phoneAlreadyExist( ): bool
- {
- $result = $this->DataBase->phoneAlreadyExist($this->phone);
- if ($this->validate->isObjectNullData($result)) return FALSE;
- return TRUE;
- }
- private function validateName(string $name): void
- {
- if (! $this->validate->onlyStringAndSpace($name) || ! $this->validate->strlenMinAndMax(self::nameStrlenMin,
- self::nameStrlenMax, $name))
- {
- throw new \InvalidArgumentException('nameInvalid');
- }
- $this->name = $name;
- }
- private function validateEmail(string $email): void
- {
- if (! $this->validate->isEmail($email)) throw new \InvalidArgumentException('emailInvalid');
- $this->email = strtolower($email);
- }
- private function validatePassword(string $password): void
- {
- if (! $this->validate->onlyStringNumberUnderlineAndDot($password) ||
- ! $this->validate->strlenMinAndMax(self::passwordStrlenMin, self::passwordStrlenMax, $password))
- {
- throw new \InvalidArgumentException('passwordInvalid');
- }
- $this->password = $password;
- }
- private function validatePhone(int $phone): void
- {
- if (! $this->validate->strlenMinAndMax(self::phoneStrlenMin, self::phoneStrlenMax, $phone))
- {
- throw new \InvalidArgumentException('phoneInvalid');
- }
- $this->phone = $phone;
- }
- private function validateAddRess(string $addRess): void
- {
- if (! $this->validate->onlyStringAndSpace($addRess) || ! $this->validate->strlenMax(200, $addRess))
- {
- throw new \InvalidArgumentException('addRessInvalid');
- }
- $this->addRess = $addRess;
- }
Add Comment
Please, Sign In to add comment