You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							93 lines
						
					
					
						
							2.4 KiB
						
					
					
				| <?php | |
|  | |
| namespace core\services\user; | |
|  | |
| use core\entities\user\User; | |
| use core\forms\user\UserForm; | |
| use core\repositories\user\UserRepository; | |
| //use shop\services\newsletter\Newsletter; | |
| use core\services\RoleManager; | |
| use core\services\TransactionManager; | |
|  | |
| class UserManageService | |
| { | |
|     private $repository; | |
|     private $roles; | |
|     private $transaction; | |
|     /** | |
|      * @var //Newsletter | |
|      */ | |
|     //private $newsletter; | |
|  | |
|     /** | |
|      * UserManageService constructor. | |
|      * | |
|      * @param UserRepository $repository | |
|      * @param RoleManager $roles | |
|      * @param TransactionManager $transaction | |
|      */ | |
|     public function __construct( | |
|         UserRepository $repository, | |
|         RoleManager $roles, | |
|         TransactionManager $transaction | |
|         //Newsletter $newsletter | |
|     ) | |
|     { | |
|         $this->repository  = $repository; | |
|         $this->roles       = $roles; | |
|         $this->transaction = $transaction; | |
|         //$this->newsletter = $newsletter; | |
|     } | |
|  | |
|     public function create(UserForm $form): User | |
|     { | |
|         $user = User::create( | |
|             $form->username, | |
|             $form->email, | |
|             $form->password | |
|         ); | |
|         $this->transaction->wrap(function () use ($user, $form) { | |
|             $this->repository->save($user); | |
|             $this->roles->assign($user->id, $form->role); | |
|             //$this->newsletter->subscribe($user->email); | |
|         }); | |
|  | |
|         return $user; | |
|     } | |
|  | |
|     public function edit($id, UserForm $form): void | |
|     { | |
|         $user = $this->repository->get($id); | |
|         $user->edit( | |
|             $form->username, | |
|             $form->email, | |
|             $form->password | |
|         ); | |
|         $this->transaction->wrap(function () use ($user, $form) { | |
|             $this->repository->save($user); | |
|             $this->roles->assign($user->id, $form->role); | |
|         }); | |
|     } | |
|  | |
|     public function setBackendLanguage($language): void | |
|     { | |
|         if (in_array($language, array_keys(\Yii::$app->params['backendTranslatedLanguages']))) { | |
|             $user                   = $this->repository->get(\Yii::$app->user->id); | |
|             $user->backend_language = $language; | |
|             $this->repository->save($user); | |
|         } | |
|     } | |
|  | |
|     public function assignRole($id, $role): void | |
|     { | |
|         $user = $this->repository->get($id); | |
|         $this->roles->assign($user->id, $role); | |
|     } | |
|  | |
|     public function remove($id): void | |
|     { | |
|         $user = $this->repository->get($id); | |
|         $this->repository->remove($user); | |
|         //$this->newsletter->unsubscribe($user->email); | |
|     } | |
| } |