Projekt

Obecné

Profil

Stáhnout (2.98 KB) Statistiky
| Větev: | Tag: | Revize:
1
<?php
2

    
3

    
4
namespace App\Model\Facade;
5

    
6
use App\AdminModule\Components\UserEditForm;
7
use App\Model\Repository\UserRepository;
8
use App\Model\Repository\UserRoleRepository;
9
use Nette\Utils\ArrayHash;
10

    
11
class UserFacade
12
{
13
    /**
14
     * @var UserRepository
15
     */
16
    private $userRepository;
17
    /**
18
     * @var UserRoleRepository
19
     */
20
    private $userRoleRepository;
21

    
22
    public function __construct(UserRepository $userRepository,
23
                                UserRoleRepository $userRoleRepository
24
    )
25
    {
26
        $this->userRepository = $userRepository;
27
        $this->userRoleRepository = $userRoleRepository;
28
    }
29

    
30
    /**
31
     * Uloží informace o uživateli do DB
32
     *
33
     * @param array $values : hodnoty z formuláře UserEditForm
34
     * @param int|null $userId : ID uživatele, pokud se edituje
35
     * @return bool|false|int|\Nette\Database\Table\ActiveRow
36
     */
37
    public function saveUser(array $values, int $userId = NULL)
38
    {
39
        $roleId = $values[UserRoleRepository::COLUMN_ROLE_ID];
40
        unset($values[UserRoleRepository::COLUMN_ROLE_ID]);
41
        unset($values[UserEditForm::PASSWORD_CONFIRM]);
42

    
43
        if (empty($values[UserRepository::COLUMN_PASSWORD]))
44
        {
45
            unset($values[UserRepository::COLUMN_PASSWORD]);
46
        } else
47
        {
48
            $values[UserRepository::COLUMN_PASSWORD] = md5($values[UserRepository::COLUMN_PASSWORD]);
49
        }
50

    
51
        if (!empty($userId))
52
        {
53
            $userRow = $this->userRepository->findById($userId)->fetch();
54

    
55
            if ($userRow)
56
            {
57
                $userRow->update($values);
58
            }
59

    
60
            $roleRow = $userRow->related(UserRoleRepository::TABLE_NAME, UserRoleRepository::COLUMN_USER_ID)->fetch();
61

    
62
            if ($roleRow)
63
            {
64
                $roleRow->update([UserRoleRepository::COLUMN_ROLE_ID => $roleId]);
65
            }
66
        } else
67
        {
68
            $userRow = $this->userRepository->insert($values);
69
            $this->userRoleRepository->addNew($userRow->{UserRepository::COLUMN_ID}, $roleId);
70
        }
71

    
72
        return $userRow;
73
    }
74

    
75
    /**
76
     * Uložení nastavení uživatele
77
     *
78
     * @param array $values
79
     * @param int $id
80
     * @return false|\Nette\Database\Table\ActiveRow
81
     */
82
    public function saveUserSettings(array $values, int $id)
83
    {
84
        unset($values[UserEditForm::PASSWORD_CONFIRM]);
85

    
86

    
87
        if (empty($values[UserRepository::COLUMN_PASSWORD]))
88
        {
89
            unset($values[UserRepository::COLUMN_PASSWORD]);
90
        } else
91
        {
92
            $values[UserRepository::COLUMN_PASSWORD] = md5($values[UserRepository::COLUMN_PASSWORD]);
93
        }
94

    
95
        $userRow = $this->userRepository->findById($id)->fetch();
96

    
97
        if ($userRow)
98
        {
99
            $userRow->update($values);
100
        }
101

    
102
        return $userRow;
103
    }
104

    
105
    /**
106
     * Odstraní uživatele
107
     *
108
     * @param int $userId
109
     * @return int
110
     */
111
    public function deleteUser(int $userId)
112
    {
113
        return $this->userRepository->delete($userId);
114
    }
115
}
(4-4/4)