package dto_astrologer

import "time"

type AstrologersProfileResponse struct {
	ID uint `json:"id"`

	Name string `json:"name"`

	DisplayName string `json:"display_name"`

	ProfileImage string `json:"profile_image"`

	Gender string `json:"gender"`

	DateOfBirth string `json:"date_of_birth"`

	City string `json:"city"`

	State string `json:"state"`

	Country string `json:"country"`

	Bio string `json:"bio"`

	ExperienceYears float64 `json:"experience_years"`

	DailyHours int `json:"daily_hours"`

	CurrentStep int `json:"current_step"`

	CompletionPercentage int `json:"completion_percentage"`

	ProfileStatus string `json:"profile_status"`

	IsProfileCompleted bool                      `json:"is_profile_completed"`
	Languages          []LanguageResponse        `json:"languages"`
	Skills             []SkillResponse           `json:"skills"`
	Educations         []EducationResponse       `json:"educations"`
	Professionals      []ProfessionalResponse    `json:"professionals"`
	Experiences        []ExperienceResponse      `json:"experiences"`
	BankAccounts       []BankResponse            `json:"bank_accounts"`
	Documents          []DocumentResponse        `json:"documents"`
	Progress           []ProgressResponse        `json:"progress"`
	VerificationLogs   []VerificationLogResponse `json:"verification_logs"`
}

type LanguageResponse struct {
	ID   uint   `json:"id"`
	Name string `json:"name"`
}

type SkillResponse struct {
	ID         uint   `json:"id"`
	Name       string `json:"name"`
	Experience int    `json:"experience"`
}

type EducationResponse struct {
	ID              uint   `json:"id"`
	Degree          string `json:"degree"`
	Specialization  string `json:"specialization"`
	Institute       string `json:"institute"`
	BoardUniversity string `json:"board_university"`
	PassingYear     int    `json:"passing_year"`
	Certificate     string `json:"certificate"`
	Status          string `json:"status"`
}

type ProfessionalResponse struct {
	ID                    uint       `json:"id"`
	Occupation            string     `json:"occupation"`
	EmploymentType        string     `json:"employment_type"`
	CurrentCompany        string     `json:"current_company"`
	ConsultationMode      string     `json:"consultation_mode"`
	JoiningDate           *time.Time `json:"joining_date"`
	ExperienceYears       float64    `json:"experience_years"`
	ExperienceCertificate string     `json:"experience_certificate"`
}

type ExperienceResponse struct {
	ID           uint       `json:"id"`
	Title        string     `json:"title"`
	Organization string     `json:"organization"`
	StartDate    *time.Time `json:"start_date"`
	EndDate      *time.Time `json:"end_date"`
	Description  string     `json:"description"`
	Certificate  string     `json:"certificate"`

	// The fields the experience endpoints take. experience_years was not in
	// this response at all, and the years had nowhere to be stored.
	ExperienceYears  float64 `json:"experience_years"`
	StartYear        int     `json:"start_year"`
	EndYear          int     `json:"end_year"`
	CurrentlyWorking bool    `json:"currently_working"`
}

type BankResponse struct {
	ID                 uint   `json:"id"`
	AccountHolderName  string `json:"account_holder_name"`
	BankName           string `json:"bank_name"`
	BranchName         string `json:"branch_name"`
	AccountNumber      string `json:"account_number"`
	IFSCCode           string `json:"ifsc_code"`
	UPIID              string `json:"upi_id"`
	VerificationStatus string `json:"verification_status"`
}

type DocumentResponse struct {
	ID                 uint   `json:"id"`
	DocumentType       string `json:"document_type"`
	DocumentNumber     string `json:"document_number"`
	FilePath           string `json:"file_path"`
	VerificationStatus string `json:"verification_status"`
}

type ProgressResponse struct {
	CurrentStep      int        `json:"CurrentStep"`
	ProfileCompleted bool       `json:"profile_completed"`
	SubmittedAt      *time.Time `json:"submitted_at"`
}

type VerificationLogResponse struct {
	OldStatus string    `json:"old_status"`
	NewStatus string    `json:"new_status"`
	Remarks   string    `json:"remarks"`
	ChangedBy uint      `json:"changed_by"`
	CreatedAt time.Time `json:"created_at"`
}
