package requestmodel

type UserCredentials struct {
	FirstName   string            `json:"first_name"`
	LastName    string            `json:"last_name"`
	MiddleName  *string           `json:"middle_name"`
	Email       string            `json:"email"`
	PhoneNumber string            `json:"phone"`
	Password    string            `json:"password"`
	UserType    int32             `json:"user_type"`
	Permissions map[string]string `json:"permissions"`
}

type RegisterResponse struct {
	UUID string `json:"uid"`
}

type (
	LoginUserRequest struct {
		Email    string `json:"email"`
		Password string `json:"password"`
	}

	LoginUserResponse struct {
		Uid           string      `json:"uid"`
		AccessToken   string      `json:"access_token"`
		RefreshToken  string      `json:"refresh_token"`
		UserType      int32       `json:"user_type"`
		Permissions   Permissions `json:"permissions"`
		EmailVerified bool        `json:"email_confirmed"`
	}

	Permissions struct {
		Balance     string `json:"balance"`
		Company     string `json:"company"`
		Employees   string `json:"employees"`
		Profile     string `json:"profile"`
		Submissions string `json:"submissions"`
		Vacancies   string `json:"vacancies"`
	}
)

type LogoutUserRequest struct {
	RefreshToken string `json:"refresh_token"`
}

type (
	RefreshTokenRequest struct {
		RefreshToken string `json:"refresh_token"`
	}

	RefreshTokenResponse struct {
		AccessToken  string `json:"access_token"`
		RefreshToken string `json:"refresh_token"`
	}
)

type ForgotPasswordRequest struct {
	Email string `json:"email"`
}

type ValidateOTPResponse struct {
	IsValid bool   `json:"valid"`
	Token   string `json:"token"`
}

type ResetPasswordRequest struct {
	Email    string `json:"email"`
	Password string `json:"new_password"`
	Token    string `json:"token"`
}
