iFacilityProject/iFacility/objects/userprofession.h
2021-01-05 21:14:35 +07:00

92 lines
3.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef USERPROFESSION_H
#define USERPROFESSION_H
#include <QDate>
#include "profession.h"
typedef quint8 ProfRank; //< Тип для разряда владельца профессии
/**
* @brief Класс-обёртка сущности профессии
*
* Используется для хранения соответствия между пользователем, его профессией и разрядом
*/
class UserProfession {
private:
//! Уникальный идентификатор профессии
PID mProfession;
//! Дата получения профессии пользователем
QDate mAcquired;
//! Разряд профессии пользователя
ProfRank mRank;
public:
/**
* @brief Стандартный конструктор объекта класса
*
*/
UserProfession() = default;
/**
* @brief Конструктор объекта пользователя из \param pid профессии и разряда
*
* @param pid уникальный идентификатор профессии
* @param rank разряд профессии пользоваетля
*/
UserProfession(PID pid, ProfRank rank);
/**
* @brief Возвращает идентификатор соотносимой професии
*
* @return PID уникальный идентификатор професии
*/
PID getProfession() const;
/**
* @brief Возвращает дату получения профессии
*
* @return QDate дата получения професии
*/
QDate getAcquiredDate() const;
/**
* @brief Возвращает разряд пользователя
*
* @return ProfRank разряд пользователя
*/
ProfRank getRank() const;
/**
* @brief Устанавливает разряд данной профессии пользователя
*
* @param newRank новый разряд пользователя
* @return true успех
* @return false не успех (значение \param newRank < 1)
*/
bool setRank(quint8 newRank);
/**
* @brief Определения оператора сравнения для класса
*
* @param l левый операнд
* @param r правый операнд
* @return true объекты идентичны
* @return false объекты отличаются
*/
friend bool operator==(const UserProfession &l, const UserProfession &r);
/**
* @brief Определение оператора ввода в поток
*
* @param stream поток
* @param prof объект класса
* @return QDataStream& ссылка на поток
*/
friend QDataStream& operator<<(QDataStream &stream, const UserProfession &up);
/**
* @brief Определение оператора ввода из потока
*
* @param stream поток
* @param prof объект класса
* @return QDataStream& ссылка на поток
*/
friend QDataStream& operator>>(QDataStream &stream, UserProfession &up);
};
#endif // USERPROFESSION_H