Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sibir.mkd.entity.user.dbo
- import org.hibernate.annotations.*
- import sibir.mkd.core.dbo.*
- import sibir.mkd.entity.holder.dbo.*
- import java.util.*
- import javax.persistence.*
- import javax.persistence.Entity
- import javax.persistence.NamedQueries
- import javax.persistence.NamedQuery
- import javax.persistence.Table
- /**
- * Пользователь системы
- *
- * Created on 04.04.2018
- * @author UkolovRI
- */
- @Entity
- @Table(name = "portal_user")
- @NamedQueries(
- NamedQuery(
- name = "User.findByLogin",
- query = "select u from User u where u.login = :login"
- )
- )
- class User: LoadDateEntity() {
- /**
- * ID
- */
- @Id
- @GeneratedValue(generator = "system-uuid")
- @GenericGenerator(name = "system-uuid", strategy = "org.hibernate.id.UUIDHexGenerator")
- @Column(name = "id", unique = true, nullable = false)
- lateinit var id: String
- /**
- * Логин
- */
- @Column(name = "login", nullable = false)
- lateinit var login: String
- /**
- * Пароль
- */
- @Column(name = "password")
- var password: String? = null
- /**
- * Фамилия
- */
- @Column(name = "last_name", nullable = false)
- lateinit var lastName: String
- /**
- * Имя
- */
- @Column(name = "first_name", nullable = false)
- lateinit var firstName: String
- /**
- * Отчество
- */
- @Column(name = "second_name", nullable = false)
- lateinit var secondName: String
- /**
- * Email
- */
- @Column(name = "email")
- var email: String? = null
- /**
- * Номер телефона
- */
- @Column(name = "phone", nullable = false)
- lateinit var phone: String
- /**
- * Email подтвержден
- */
- @Column(name = "email_confirm", nullable = false)
- var emailConfirm: Boolean = false
- /**
- * Телефон подтвержден
- */
- @Column(name = "phone_confirm", nullable = false)
- var phoneConfirm: Boolean = false
- /**
- * Дата подтверждения номера телефона и регистрации пароля пользователя
- */
- @Column(name = "confirm_date")
- var confirmDate: Date? = null
- /**
- * Дата блокировки
- */
- @Column(name = "lock_date")
- var lockDate: Date? = null
- /**
- * Дата последнего входа
- */
- @Column(name = "login_date")
- var loginDate: Date? = null
- /**
- * Дата последнего входа
- */
- @OneToOne(mappedBy = "portalUser")
- var authKey: UserAuthKey? = null
- /**
- * Настройки пользователя
- */
- @OneToOne(mappedBy = "portalUser")
- var settings: UserSettings? = null
- /**
- * Список доверенностей, где текущий пользователь как доверенное лицо
- */
- @OneToMany(mappedBy = "confidant", fetch = FetchType.LAZY)
- var powerOfAttorneys: List<PowerOfAttorney> = listOf()
- /**
- * Роли пользователя
- */
- @ManyToMany(fetch = FetchType.EAGER)
- @JoinTable(name = "portal_user_in_role",
- joinColumns = arrayOf(JoinColumn(name = "user_id")),
- inverseJoinColumns = arrayOf(JoinColumn(name = "role_id")))
- var roles: Set<Role> = mutableSetOf()
- /**
- * Список собственностей в МКД
- */
- @OneToMany(mappedBy = "portalUser", fetch = FetchType.LAZY)
- lateinit var holders: List<Holder>
- fun getFio(): String = "$lastName ${firstName.first()}.${secondName.first()}."
- fun getFullFio(): String = "$lastName $firstName $secondName"
- fun isPortalAdmin(): Boolean = roles.any { it.id == "ADMIN" }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement