wms-be/modules/user/dto/user_dto.go

178 lines
7.6 KiB
Go

package dto
import (
"errors"
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
"github.com/Caknoooo/go-gin-clean-starter/pkg/dto"
"github.com/google/uuid"
)
const (
// Failed
MESSAGE_FAILED_GET_DATA_FROM_BODY = "failed get data from body"
MESSAGE_FAILED_REGISTER_USER = "failed create user"
MESSAGE_FAILED_GET_LIST_USER = "failed get list user"
MESSAGE_FAILED_TOKEN_NOT_VALID = "token not valid"
MESSAGE_FAILED_TOKEN_NOT_FOUND = "token not found"
MESSAGE_FAILED_GET_USER = "failed get user"
MESSAGE_FAILED_LOGIN = "failed login"
MESSAGE_FAILED_UPDATE_USER = "failed update user"
MESSAGE_FAILED_DELETE_USER = "failed delete user"
MESSAGE_FAILED_PROSES_REQUEST = "failed proses request"
MESSAGE_FAILED_DENIED_ACCESS = "denied access"
MESSAGE_FAILED_VERIFY_EMAIL = "failed verify email"
// Success
MESSAGE_SUCCESS_REGISTER_USER = "success create user"
MESSAGE_SUCCESS_GET_LIST_USER = "success get list user"
MESSAGE_SUCCESS_GET_USER = "success get user"
MESSAGE_SUCCESS_LOGIN = "success login"
MESSAGE_SUCCESS_UPDATE_USER = "success update user"
MESSAGE_SUCCESS_DELETE_USER = "success delete user"
MESSAGE_SEND_VERIFICATION_EMAIL_SUCCESS = "success send verification email"
MESSAGE_SUCCESS_VERIFY_EMAIL = "success verify email"
MESSAGE_SUCCESS_PROSES_REQUEST = "success proses request"
)
var (
ErrCreateUser = errors.New("failed to create user")
ErrGetUserById = errors.New("failed to get user by id")
ErrGetUserByEmail = errors.New("failed to get user by email")
ErrEmailAlreadyExists = errors.New("email already exist")
ErrUpdateUser = errors.New("failed to update user")
ErrUserNotFound = errors.New("user not found")
ErrEmailNotFound = errors.New("email not found")
ErrDeleteUser = errors.New("failed to delete user")
ErrTokenInvalid = errors.New("token invalid")
ErrTokenExpired = errors.New("token expired")
ErrAccountAlreadyVerified = errors.New("account already verified")
)
type (
UserCreateRequest struct {
Name string `json:"name" form:"name" binding:"required,min=2,max=100"`
Username string `json:"username" form:"username" binding:"required,min=2,max=100"`
Password string `json:"password" form:"password" binding:"required,min=8"`
Gender string `json:"gender" form:"gender" binding:"omitempty,max=10"`
Address string `json:"address" form:"address" binding:"omitempty"`
Phone string `json:"phone" form:"phone" binding:"omitempty,min=8,max=20"`
Email string `json:"email" form:"email" binding:"required,email"`
PhotoUrl string `json:"photo_url" form:"photo_url" binding:"omitempty"`
ClientID uuid.UUID `json:"client_id" form:"client_id" binding:"required,uuid4"`
MaintenanceGroupUserID uuid.UUID `json:"maintenance_group_user_id" form:"maintenance_group_user_id" binding:"omitempty,uuid4"`
LocationID uuid.UUID `json:"location_id" form:"location_id" binding:"omitempty,uuid4"`
}
BulkCreateUserRequest struct {
Users []UserBulkCreateRequest `json:"users" binding:"required,dive"`
}
UserBulkCreateRequest struct {
Name string `json:"name" form:"name" binding:"required,min=2,max=100"`
Username string `json:"username" form:"username" binding:"required,min=2,max=100"`
Password string `json:"password" form:"password" binding:"required,min=8"`
Gender string `json:"gender" form:"gender" binding:"omitempty,max=10"`
Address string `json:"address" form:"address" binding:"omitempty"`
Phone string `json:"phone" form:"phone" binding:"omitempty,min=8,max=20"`
Email string `json:"email" form:"email" binding:"required,email"`
PhotoUrl string `json:"photo_url" form:"photo_url" binding:"omitempty"`
ClientName string `json:"client_name" form:"client_name" binding:"required"`
}
UserResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Username string `json:"username"`
Password string `json:"password,omitempty"`
Gender string `json:"gender"`
Address string `json:"address"`
Phone string `json:"phone"`
Email string `json:"email"`
PhotoUrl string `json:"photo_url"`
Roles []UserRolesResponse `json:"roles,omitempty"`
Client dto.IdNameResponse `json:"client"`
Warehouses []dto.IdNameResponse `json:"warehouses"`
}
UserRolesResponse struct {
ID string `json:"id"`
Name string `json:"name"`
}
UserPaginationResponse struct {
Data []UserResponse `json:"data"`
dto.PaginationResponse
}
GetAllUserRepositoryResponse struct {
Users []entities.M_User `json:"users"`
dto.PaginationResponse
}
UserUpdateRequest struct {
Name string `json:"name" form:"name" binding:"omitempty,min=2,max=100"`
Username string `json:"username" form:"username" binding:"omitempty,min=2,max=100"`
Password string `json:"password" form:"password" binding:"omitempty,min=8"`
Gender string `json:"gender" form:"gender" binding:"omitempty,max=10"`
Address string `json:"address" form:"address" binding:"omitempty"`
Phone string `json:"phone" form:"phone" binding:"omitempty,min=8,max=20"`
Email string `json:"email" form:"email" binding:"omitempty,email"`
PhotoUrl string `json:"photo_url" form:"photo_url" binding:"omitempty"`
ClientID uuid.UUID `json:"client_id" form:"client_id" binding:"omitempty,uuid4"`
MaintenanceGroupUserID uuid.UUID `json:"maintenance_group_user_id" form:"maintenance_group_user_id" binding:"omitempty,uuid4"`
LocationID uuid.UUID `json:"location_id" form:"location_id" binding:"omitempty,uuid4"`
}
UserUpdateResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Username string `json:"username"`
Gender string `json:"gender"`
Address string `json:"address"`
Phone string `json:"phone"`
Email string `json:"email"`
PhotoUrl string `json:"photo_url"`
}
SendVerificationEmailRequest struct {
Email string `json:"email" form:"email" binding:"required"`
}
VerifyEmailRequest struct {
Token string `json:"token" form:"token" binding:"required"`
}
VerifyEmailResponse struct {
Email string `json:"email"`
IsVerified bool `json:"is_verified"`
}
UserLoginRequest struct {
Login string `json:"login" form:"login" binding:"required"`
Password string `json:"password" form:"password" binding:"required"`
}
SwitchRoleRequest struct {
RoleID string `json:"role_id" form:"role_id" binding:"required,uuid4"`
ActiveWarehouseID string `json:"active_warehouse_id" form:"active_warehouse_id" binding:"required,uuid4"`
}
SwitchWarehouseRequest struct {
ActiveRoleID string `json:"active_role_id" form:"active_role_id" binding:"required,uuid4"`
WarehouseID string `json:"warehouse_id" form:"warehouse_id" binding:"required,uuid4"`
}
AddUserWarehouseRequest struct {
WarehouseID string `json:"warehouse_id" form:"warehouse_id" binding:"required,uuid4"`
}
RemoveUserWarehouseRequest struct {
WarehouseID string `json:"warehouse_id" form:"warehouse_id" binding:"required,uuid4"`
}
ReplaceUserWarehousesRequest struct {
WarehouseIDs []string `json:"warehouse_ids" form:"warehouse_ids" binding:"required,dive,uuid4"`
}
)