package models

import (
	"context"
	"time"

	"github.com/go-pg/pg/v10"
	"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
)

type Users struct {
	tableName      struct{}                     `pg:"users"`
	Id             int64                        `pg:",pk"` //用户id
	CompanyId      int64                        //公司id
	OpenId         int64                        //统一用户中心
	Name           string                       //用户名称
	Sex            int8                         //性别:【0:未知】【1:男】【2:女】
	JobNum         string                       //工号
	Phone          string                       //手机号,同账号
	PrivatePhone   string                       //私人手机号
	Email          string                       //邮件
	ExtensionNum   string                       //分机号
	EntryTime      time.Time                    //入职时间
	Workspace      string                       //工作地
	Status         int8                         //状态:【1:正常】【 2:禁用】
	Avatar         string                       ///头像
	Remarks        string                       //备注
	AdminType      int8                         //是否为当前公司负责人 【1:是】【2:否】
	ChargeStatus   int8                         //是否为当前公司主管 【1:是】【2:否】
	Permission     []domain.AdminPermissionBase //权限
	AccessPartners []domain.Partner             //可查看的合伙人
	IsSenior       int8                         //是否是公司高管【1:是】【2:否】;用于确定是否可以拥有“可查看的合伙人”
	CreateAt       time.Time
	UpdateAt       time.Time
	DeleteAt       time.Time
}

var _ pg.BeforeUpdateHook = (*Users)(nil)

func (user *Users) BeforeUpdate(ctx context.Context) (context.Context, error) {
	user.UpdateAt = time.Now()
	return ctx, nil
}

var _ pg.BeforeInsertHook = (*Users)(nil)

func (user *Users) BeforeInsert(ctx context.Context) (context.Context, error) {
	user.CreateAt = time.Now()
	user.UpdateAt = time.Now()
	return ctx, nil
}