Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.80 KB | None | 0 0
  1. package sibir.mkd.entity.user.dbo
  2.  
  3. import org.hibernate.annotations.*
  4. import sibir.mkd.core.dbo.*
  5. import sibir.mkd.entity.holder.dbo.*
  6. import java.util.*
  7. import javax.persistence.*
  8. import javax.persistence.Entity
  9. import javax.persistence.NamedQueries
  10. import javax.persistence.NamedQuery
  11. import javax.persistence.Table
  12.  
  13. /**
  14.  * Пользователь системы
  15.  *
  16.  * Created on 04.04.2018
  17.  * @author UkolovRI
  18.  */
  19. @Entity
  20. @Table(name = "portal_user")
  21. @NamedQueries(
  22.         NamedQuery(
  23.                 name = "User.findByLogin",
  24.                 query = "select u from User u where u.login = :login"
  25.         )
  26. )
  27. class User: LoadDateEntity() {
  28.     /**
  29.      * ID
  30.      */
  31.     @Id
  32.     @GeneratedValue(generator = "system-uuid")
  33.     @GenericGenerator(name = "system-uuid", strategy = "org.hibernate.id.UUIDHexGenerator")
  34.     @Column(name = "id", unique = true, nullable = false)
  35.     lateinit var id: String
  36.  
  37.     /**
  38.      * Логин
  39.      */
  40.     @Column(name = "login", nullable = false)
  41.     lateinit var login: String
  42.  
  43.     /**
  44.      * Пароль
  45.      */
  46.     @Column(name = "password")
  47.     var password: String? = null
  48.  
  49.     /**
  50.      * Фамилия
  51.      */
  52.     @Column(name = "last_name", nullable = false)
  53.     lateinit var lastName: String
  54.  
  55.     /**
  56.      * Имя
  57.      */
  58.     @Column(name = "first_name", nullable = false)
  59.     lateinit var firstName: String
  60.  
  61.     /**
  62.      * Отчество
  63.      */
  64.     @Column(name = "second_name", nullable = false)
  65.     lateinit var secondName: String
  66.  
  67.     /**
  68.      * Email
  69.      */
  70.     @Column(name = "email")
  71.     var email: String? = null
  72.  
  73.     /**
  74.      * Номер телефона
  75.      */
  76.     @Column(name = "phone", nullable = false)
  77.     lateinit var phone: String
  78.  
  79.     /**
  80.      * Email подтвержден
  81.      */
  82.     @Column(name = "email_confirm", nullable = false)
  83.     var emailConfirm: Boolean = false
  84.  
  85.     /**
  86.      * Телефон подтвержден
  87.      */
  88.     @Column(name = "phone_confirm", nullable = false)
  89.     var phoneConfirm: Boolean = false
  90.  
  91.     /**
  92.      * Дата подтверждения номера телефона и регистрации пароля пользователя
  93.      */
  94.     @Column(name = "confirm_date")
  95.     var confirmDate: Date? = null
  96.  
  97.     /**
  98.      * Дата блокировки
  99.      */
  100.     @Column(name = "lock_date")
  101.     var lockDate: Date? = null
  102.  
  103.     /**
  104.      * Дата последнего входа
  105.      */
  106.     @Column(name = "login_date")
  107.     var loginDate: Date? = null
  108.  
  109.     /**
  110.      * Дата последнего входа
  111.      */
  112.     @OneToOne(mappedBy = "portalUser")
  113.     var authKey: UserAuthKey? = null
  114.  
  115.     /**
  116.      * Настройки пользователя
  117.      */
  118.     @OneToOne(mappedBy = "portalUser")
  119.     var settings: UserSettings? = null
  120.  
  121.     /**
  122.      * Список доверенностей, где текущий пользователь как доверенное лицо
  123.      */
  124.     @OneToMany(mappedBy = "confidant", fetch = FetchType.LAZY)
  125.     var powerOfAttorneys: List<PowerOfAttorney> = listOf()
  126.  
  127.     /**
  128.      * Роли пользователя
  129.      */
  130.     @ManyToMany(fetch = FetchType.EAGER)
  131.     @JoinTable(name = "portal_user_in_role",
  132.             joinColumns = arrayOf(JoinColumn(name = "user_id")),
  133.             inverseJoinColumns = arrayOf(JoinColumn(name = "role_id")))
  134.     var roles: Set<Role> = mutableSetOf()
  135.  
  136.     /**
  137.      * Список собственностей в МКД
  138.      */
  139.     @OneToMany(mappedBy = "portalUser", fetch = FetchType.LAZY)
  140.     lateinit var holders: List<Holder>
  141.  
  142.     fun getFio(): String = "$lastName ${firstName.first()}.${secondName.first()}."
  143.  
  144.     fun getFullFio(): String = "$lastName $firstName $secondName"
  145.  
  146.     fun isPortalAdmin(): Boolean = roles.any { it.id == "ADMIN" }
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement