package types

import (
	"time"

	"gorm.io/gorm"
)

type Rol uint8

const (
	Admin Rol = iota + 1
	Operador
	JefeTurno
)

type Usuario struct {
	Email     string `gorm:"primaryKey"`
	Password  string
	Enabled   bool
	Rol       Rol
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt gorm.DeletedAt `gorm:"index"`
}

func (u *Usuario) TableName() string {
	return "usuarios"
}

type GetUsuarioReq struct {
	Sender    string
	Email     string
	TimeStamp string
}

type GetUsuarioRes struct {
	Usuario   *Usuario
	TimeStamp string
}

type CreateUsuarioReq struct {
	Sender    string
	Usuario   *Usuario
	TimeStamp string
}

type CreateUsuarioRes struct {
	Message   string
	TimeStamp string
}

type ValidarUsuarioReq struct {
	Sender    string
	Email     string
	Pass      string
	TimeStamp string
}

type ValidarUsuarioRes struct {
	Message   string
	TimeStamp string
}

func (u *Usuario) BeforeCreate(tx *gorm.DB) (err error) {
	u.CreatedAt = time.Now()
	u.UpdatedAt = time.Now()
	return
}

func (u *Usuario) BeforeUpdate(tx *gorm.DB) (err error) {
	u.UpdatedAt = time.Now()
	return
}
