package client import ( "dborg/internal/models" "encoding/json" "fmt" "net/url" ) func (c *Client) SearchNPD(params *models.NPDParams) (*models.NPDResponse, error) { queryParams := url.Values{} if params.ID != "" { queryParams.Add("id", params.ID) } if params.FirstName != "" { queryParams.Add("firstname", params.FirstName) } if params.LastName != "" { queryParams.Add("lastname", params.LastName) } if params.MiddleName != "" { queryParams.Add("middlename", params.MiddleName) } if params.DOB != "" { queryParams.Add("dob", params.DOB) } if params.SSN != "" { queryParams.Add("ssn", params.SSN) } if params.Phone1 != "" { queryParams.Add("phone1", params.Phone1) } if params.Address != "" { queryParams.Add("address", params.Address) } if params.City != "" { queryParams.Add("city", params.City) } if params.State != "" { queryParams.Add("st", params.State) } if params.Zip != "" { queryParams.Add("zip", params.Zip) } if params.CountyName != "" { queryParams.Add("county_name", params.CountyName) } if params.NameSuffix != "" { queryParams.Add("name_suff", params.NameSuffix) } if params.AKA1FullName != "" { queryParams.Add("aka1fullname", params.AKA1FullName) } if params.AKA2FullName != "" { queryParams.Add("aka2fullname", params.AKA2FullName) } if params.AKA3FullName != "" { queryParams.Add("aka3fullname", params.AKA3FullName) } if params.Alt1DOB != "" { queryParams.Add("alt1dob", params.Alt1DOB) } if params.Alt2DOB != "" { queryParams.Add("alt2dob", params.Alt2DOB) } if params.Alt3DOB != "" { queryParams.Add("alt3dob", params.Alt3DOB) } if params.StartDate != "" { queryParams.Add("startdat", params.StartDate) } if params.MaxHits > 0 && params.MaxHits != 10 { queryParams.Add("max_hits", fmt.Sprintf("%d", params.MaxHits)) } if params.SortBy != "" { queryParams.Add("sort_by", params.SortBy) } data, err := c.Get("/npd/search", queryParams) if err != nil { return nil, err } var response models.NPDResponse if err := json.Unmarshal(data, &response); err != nil { return nil, fmt.Errorf("failed to parse NPD response: %w", err) } return &response, nil }