init project
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
package entity
|
||||
|
||||
import (
|
||||
"furtuna-be/internal/constants/role"
|
||||
"furtuna-be/internal/constants/userstatus"
|
||||
"time"
|
||||
)
|
||||
|
||||
type AuthData struct {
|
||||
Token string `json:"token"`
|
||||
UserID int64 `gorm:"column:user_id"`
|
||||
RoleID int `gorm:"column:role_id"`
|
||||
OrganizationID int64 `gorm:"column:organization_id"`
|
||||
}
|
||||
|
||||
type UserDB struct {
|
||||
ID int64 `gorm:"primary_key;column:id" json:"id"`
|
||||
Name string `gorm:"column:name" json:"name"`
|
||||
Email string `gorm:"column:email" json:"email"`
|
||||
Password string `gorm:"column:password" json:"-"`
|
||||
Status userstatus.UserStatus `gorm:"column:status" json:"status"`
|
||||
UserType string `gorm:"column:user_type" json:"user_type"`
|
||||
PhoneNumber string `gorm:"column:phone_number" json:"phone_number"`
|
||||
NIK string `gorm:"column:nik" json:"nik"`
|
||||
RoleID int64 `gorm:"column:role_id" json:"role_id"`
|
||||
RoleName string `gorm:"column:role_name" json:"role_name"`
|
||||
BranchID *int64 `gorm:"column:partner_id" json:"partner_id"`
|
||||
BranchName string `gorm:"column:partner_name" json:"partner_name"`
|
||||
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
||||
DeletedAt *time.Time `gorm:"column:deleted_at" json:"deleted_at"`
|
||||
CreatedBy int64 `gorm:"column:created_by" json:"created_by"`
|
||||
UpdatedBy int64 `gorm:"column:updated_by" json:"updated_by"`
|
||||
}
|
||||
|
||||
func (u *UserDB) ToUser() *User {
|
||||
if u == nil {
|
||||
return &User{}
|
||||
}
|
||||
|
||||
userEntity := &User{
|
||||
ID: u.ID,
|
||||
Name: u.Name,
|
||||
Email: u.Email,
|
||||
Status: u.Status,
|
||||
CreatedAt: u.CreatedAt,
|
||||
UpdatedAt: u.UpdatedAt,
|
||||
RoleID: role.Role(u.RoleID),
|
||||
RoleName: u.RoleName,
|
||||
PartnerID: u.BranchID,
|
||||
BranchName: u.BranchName,
|
||||
}
|
||||
|
||||
return userEntity
|
||||
}
|
||||
|
||||
func (u *UserDB) ToUserRoleDB() *UserRoleDB {
|
||||
if u == nil {
|
||||
return &UserRoleDB{}
|
||||
}
|
||||
|
||||
userRole := &UserRoleDB{
|
||||
ID: 0,
|
||||
UserID: u.ID,
|
||||
RoleID: u.RoleID,
|
||||
PartnerID: u.BranchID,
|
||||
CreatedAt: u.CreatedAt,
|
||||
UpdatedAt: u.UpdatedAt,
|
||||
}
|
||||
|
||||
return userRole
|
||||
}
|
||||
|
||||
func (UserDB) TableName() string {
|
||||
return "users"
|
||||
}
|
||||
|
||||
func (u *UserDB) ToUserAuthenticate(signedToken string) *AuthenticateUser {
|
||||
return &AuthenticateUser{
|
||||
Token: signedToken,
|
||||
Name: u.Name,
|
||||
RoleID: role.Role(u.RoleID),
|
||||
RoleName: u.RoleName,
|
||||
BranchID: u.BranchID,
|
||||
BranchName: u.BranchName,
|
||||
}
|
||||
}
|
||||
|
||||
type UserSearch struct {
|
||||
Search string
|
||||
Name string
|
||||
RoleID int64
|
||||
PartnerID int64
|
||||
Limit int
|
||||
Offset int
|
||||
}
|
||||
|
||||
type UserList []*UserDB
|
||||
|
||||
func (b *UserList) ToUserList() []*User {
|
||||
var users []*User
|
||||
for _, user := range *b {
|
||||
users = append(users, user.ToUser())
|
||||
}
|
||||
return users
|
||||
}
|
||||
|
||||
func (u *UserDB) ToUpdatedUser(req User) error {
|
||||
|
||||
if req.Name != "" {
|
||||
u.Name = req.Name
|
||||
}
|
||||
|
||||
if req.Email != "" {
|
||||
u.Email = req.Email
|
||||
}
|
||||
|
||||
if *req.PartnerID > 0 {
|
||||
u.BranchID = req.PartnerID
|
||||
}
|
||||
|
||||
if req.RoleID > 0 {
|
||||
u.RoleID = int64(req.RoleID)
|
||||
}
|
||||
|
||||
if req.Password != "" {
|
||||
hashedPassword, err := req.HashedPassword(req.Password)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
u.Password = hashedPassword
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *UserDB) SetDeleted(updatedby int64) {
|
||||
currentTime := time.Now()
|
||||
o.DeletedAt = ¤tTime
|
||||
o.UpdatedBy = updatedby
|
||||
o.Status = userstatus.Inactive
|
||||
}
|
||||
Reference in New Issue
Block a user