iFacility  1.0
Проект является реализацией ИС "Предприятие"
user.h
Go to the documentation of this file.
1 #ifndef USER_H
2 #define USER_H
3 
4 #include <QString>
5 #include <QUuid>
6 #include <QVector>
7 #include <QDate>
8 
9 #include "profession.h"
10 #include "userprofession.h"
11 
12 typedef QUuid UID; //< Тип для UUID пользователя
13 typedef QVector<UserProfession> ProfessionsList; //< Тип списка профессий пользователя
14 
16 enum class UserType {
17  ADMINISTRATOR = 0, //< Указывает, что пользователь является администратором
18  DISPATCHER = 1, //< Указывает, что пользователя является диспетчером
19  WORKER = 2 //< Указывает, что пользователь является рабочим
20 };
21 
26 class User {
27 private:
29  UID mUID;
31  QString mLogin;
33  QString mPassword;
35  UserType mUserType;
37  QString mFirstName;
39  QString mSecondName;
41  QString mPatronymic;
43  ProfessionsList mProfessions;
45  PID mCurrentProfession = 0;
46 
48  friend class RegistrationDialog;
49 
50 public:
55  User() = default;
56 
62  UID uID() const;
68  QString getLogin() const;
76  bool checkPassword(const QString &password);
82  UserType getUserType() const;
88  QString firstName() const;
94  QString secondName() const;
100  QString patronymic() const;
106  QString getFullName() const;
112  QString getFullNameShortForm() const;
124  PID getCurrentProfession() const;
125 
137  static User* createUser(QString login, QString password, UserType userType,
138  QString firstName, QString secondName, QString patronymic);
139 
147  bool hasProfession(PID pid);
156  bool addProfession(PID pid, ProfRank rank);
164  bool setCurrentProfession(PID pid);
170  void removeProfession(PID pid);
171 
180  friend bool operator==(const User &l, const User &r);
188  friend QDataStream& operator<<(QDataStream &stream, const User &usr);
196  friend QDataStream& operator>>(QDataStream &stream, User &usr);
197 };
198 
199 #endif // USER_H
Класс интерфейса диалога регистрации
Definition: registrationdialog.h:21
Класс сущности пользователя
Definition: user.h:26
friend QDataStream & operator<<(QDataStream &stream, const User &usr)
Определение оператора ввода в поток
Definition: user.cpp:114
QString getLogin() const
Возвращает логин пользователя
Definition: user.cpp:12
void removeProfession(PID pid)
Убирает профессию с
Definition: user.cpp:99
static User * createUser(QString login, QString password, UserType userType, QString firstName, QString secondName, QString patronymic)
Функция создания объекта пользователя
Definition: user.cpp:48
QString firstName() const
Возвращает имя пользователя
Definition: user.cpp:20
friend bool operator==(const User &l, const User &r)
Определения оператора сравнения для класса
Definition: user.cpp:110
User()=default
Стандартный конструктор объекта класса
PID getCurrentProfession() const
Возвращает уникальный идентификатор текущей профессии пользователя
Definition: user.cpp:44
bool hasProfession(PID pid)
Проверка, имеется и у пользователя профессия с данным
Definition: user.cpp:63
bool setCurrentProfession(PID pid)
Устанавливает текущую профессию пользователя по
Definition: user.cpp:90
friend QDataStream & operator>>(QDataStream &stream, User &usr)
Определение оператора ввода из потока
Definition: user.cpp:122
QString getFullNameShortForm() const
Возвращает краткую форму полного имени пользователя (Фамилия И.О.)
Definition: user.cpp:36
bool checkPassword(const QString &password)
Проверяет, совпадает ли
Definition: user.cpp:16
QString patronymic() const
Возвращает отчество пользователя
Definition: user.cpp:28
QString secondName() const
Возвращает фамилию пользователя
Definition: user.cpp:24
UID uID() const
Возвращает уникальный идентификатор пользователя
Definition: user.cpp:8
UserType getUserType() const
Возвращает тип аккаунта пользователя
Definition: user.cpp:3
bool addProfession(PID pid, ProfRank rank)
Добавляет профессию в список пользователя, вытесняя самую старую
Definition: user.cpp:73
ProfessionsList getProfessions() const
Возвращает список профессий пользователя
Definition: user.cpp:40
QString getFullName() const
Возвращает полное имя пользователя (Фамилия Имя Отчество)
Definition: user.cpp:32
QUuid PID
Definition: profession.h:8
UserType
Набор возможных типов аккаунта пользователя
Definition: user.h:16
QUuid UID
Definition: user.h:12
QVector< UserProfession > ProfessionsList
Definition: user.h:13
quint8 ProfRank
Definition: userprofession.h:8