package dto

import (
	"time"

	"github.com/timetracker/backend/internal/types"
)

type UserDto struct {
	ID           string    `json:"id" example:"01HGW2BBG0000000000000000"`
	CreatedAt    time.Time `json:"createdAt" example:"2024-01-01T00:00:00Z"`
	UpdatedAt    time.Time `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
	LastEditorID string    `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
	Email        string    `json:"email" example:"test@example.com"`
	Role         string    `json:"role" example:"admin"`
	CompanyID    *string   `json:"companyId,omitempty" example:"01HGW2BBG0000000000000000"`
	HourlyRate   float64   `json:"hourlyRate" example:"50.00"`
}

type UserCreateDto struct {
	Email      string  `json:"email" example:"test@example.com"`
	Password   string  `json:"password" example:"password123"`
	Role       string  `json:"role" example:"admin"`
	CompanyID  *string `json:"companyId" example:"01HGW2BBG0000000000000000"`
	HourlyRate float64 `json:"hourlyRate" example:"50.00"`
}

type UserUpdateDto struct {
	CreatedAt    *time.Time             `json:"createdAt" example:"2024-01-01T00:00:00Z"`
	UpdatedAt    *time.Time             `json:"updatedAt" example:"2024-01-01T00:00:00Z"`
	LastEditorID *string                `json:"lastEditorID" example:"01HGW2BBG0000000000000000"`
	Email        *string                `json:"email" example:"test@example.com"`
	Password     *string                `json:"password" example:"password123"`
	Role         *string                `json:"role" example:"admin"`
	CompanyID    types.Nullable[string] `json:"companyId" example:"01HGW2BBG0000000000000000"`
	HourlyRate   *float64               `json:"hourlyRate" example:"50.00"`
}
