package models type VoucherResponse struct { ID int64 `json:"id"` Name string `json:"name"` Email string `json:"email"` PhoneNumber string `json:"phone_number"` VoucherCode string `json:"voucher_code"` WinnerNumber int `json:"winner_number"` IsWinner bool `json:"is_winner"` } type VoucherSpinResponse struct { VoucherCode string `json:"voucher_code"` Name string `json:"name"` PhoneNumber string `json:"phone_number"` // This will be masked IsWinner bool `json:"is_winner"` } type ListVouchersForSpinRequest struct { Limit int `json:"limit" validate:"min=1,max=50"` } type ListVouchersForSpinResponse struct { Vouchers []VoucherSpinResponse `json:"vouchers"` Count int `json:"count"` } type PaginatedVoucherResponse struct { Data []VoucherResponse `json:"data"` TotalCount int `json:"total_count"` Page int `json:"page"` Limit int `json:"limit"` TotalPages int `json:"total_pages"` } type VoucherRow struct { RowNumber int `json:"row_number"` Vouchers []VoucherSpinResponse `json:"vouchers"` } type ListVouchersByRowsRequest struct { Rows int `json:"rows" validate:"min=1,max=10"` WinnerNumber *int `json:"winner_number,omitempty"` } type ListVouchersByRowsResponse struct { Rows []VoucherRow `json:"rows"` TotalRows int `json:"total_rows"` TotalVouchers int `json:"total_vouchers"` }