package model import ( "strings" "github.com/tech/sendico/pkg/merrors" ) // CallRequest represents a request to schedule a call from the marketing site. type CallRequest struct { Name string `json:"name"` Phone string `json:"phone"` Email string `json:"email"` Company string `json:"company"` PreferredTime string `json:"preferredTime"` Message string `json:"message"` } // Normalize trims whitespace from all string fields. func (cr *CallRequest) Normalize() { if cr == nil { return } cr.Name = strings.TrimSpace(cr.Name) cr.Phone = strings.TrimSpace(cr.Phone) cr.Email = strings.TrimSpace(cr.Email) cr.Company = strings.TrimSpace(cr.Company) cr.PreferredTime = strings.TrimSpace(cr.PreferredTime) cr.Message = strings.TrimSpace(cr.Message) } // Validate ensures required call request fields are present. func (cr *CallRequest) Validate() error { if cr == nil { return merrors.InvalidArgument("request payload is empty", "request") } if cr.Phone == "" && cr.Email == "" { return merrors.InvalidArgument("phone or email must not be empty", "request.phone", "request.email") } return nil }