package models

import "time"

type UserReport struct {
	ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
	UserID uint `gorm:"column:userId;not null;index" json:"userId"`
	FirstName string `gorm:"column:firstName;type:varchar(255);not null" json:"firstName"`
	LastName string `gorm:"column:lastName;type:varchar(255);not null" json:"lastName"`
	ContactNo string `gorm:"column:contactNo;type:varchar(20);not null" json:"contactNo"`
	Gender string `gorm:"column:gender;type:varchar(255);not null" json:"gender"`
	BirthDate time.Time `gorm:"column:birthDate;type:datetime;not null" json:"birthDate"`
	BirthTime string `gorm:"column:birthTime;type:varchar(255);not null" json:"birthTime"`
	BirthPlace string `gorm:"column:birthPlace;type:varchar(255);not null" json:"birthPlace"`
	Occupation *string `gorm:"column:occupation;type:varchar(255)" json:"occupation,omitempty"`
	MaritalStatus *string `gorm:"column:maritalStatus;type:varchar(255)" json:"maritalStatus,omitempty"`
	AnswerLanguage *string `gorm:"column:answerLanguage;type:varchar(255)" json:"answerLanguage,omitempty"`
	PartnerName *string `gorm:"column:partnerName;type:varchar(255)" json:"partnerName,omitempty"`
	PartnerBirthDate *time.Time `gorm:"column:partnerBirthDate;type:datetime" json:"partnerBirthDate,omitempty"`
	PartnerBirthTime *string `gorm:"column:partnerBirthTime;type:varchar(255)" json:"partnerBirthTime,omitempty"`
	PartnerBirthPlace *string `gorm:"column:partnerBirthPlace;type:varchar(255)" json:"partnerBirthPlace,omitempty"`
	Comments string `gorm:"column:comments;type:varchar(255);not null" json:"comments"`
	ReportFile *string `gorm:"column:reportFile;type:longtext" json:"reportFile,omitempty"`
	ReportType *int `gorm:"column:reportType" json:"reportType,omitempty"`
	AstrologerID *int `gorm:"column:astrologerId" json:"astrologerId,omitempty"`
	IsActive bool `gorm:"column:isActive;default:true" json:"isActive"`
	IsDelete bool `gorm:"column:isDelete;default:false" json:"isDelete"`
	CreatedAt *time.Time `gorm:"column:created_at" json:"created_at,omitempty"`
	UpdatedAt *time.Time `gorm:"column:updated_at" json:"updated_at,omitempty"`
	CreatedBy int `gorm:"column:createdBy" json:"createdBy"`
	ModifiedBy int `gorm:"column:modifiedBy" json:"modifiedBy"`
	CountryCode *string `gorm:"column:countryCode;type:varchar(45)" json:"countryCode,omitempty"`
	ReportRate float64 `gorm:"column:reportRate;type:double;not null" json:"reportRate"`
	// Relations
	User User `gorm:"foreignKey:UserID;references:ID" json:"user,omitempty"`
}

func (UserReport) TableName() string {
	return "user_reports"
}