From 64f1488a91869419317526a8ce79750cb1d09ebe Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 27 Jan 2022 18:20:52 -0700 Subject: [PATCH] main will search zips if Broker.UseZips, ntg does its own filtering by city-state dist from search-zips --- broker/ntgvision.go | 16 +++++++++++++++- main.go | 41 ++++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/broker/ntgvision.go b/broker/ntgvision.go index 4c3e5fd..af6bc61 100644 --- a/broker/ntgvision.go +++ b/broker/ntgvision.go @@ -204,7 +204,21 @@ func (ntg NTGVision) SearchZips(zips []string) ([]Job, error) { if len(states) == 0 { return nil, fmt.Errorf("failed to map zipcodes %+v to any states", zips) } - return ntg.SearchStates(states) + jobs, err := ntg.SearchStates(states) + if err != nil { + return nil, err + } + for i := len(jobs) - 1; i >= 0; i-- { + ok := false + for _, z := range zips { + ok = ok || zip.Get(z).MilesTo(zip.FromCityState(jobs[i].Pickup.City, jobs[i].Pickup.State)) <= radius + } + if !ok { + jobs[i], jobs[len(jobs)-1] = jobs[len(jobs)-1], jobs[i] + jobs = jobs[:len(jobs)-1] + } + } + return jobs, nil } func (ntg NTGVision) SearchStates(states []config.State) ([]Job, error) { diff --git a/main.go b/main.go index cc80a1c..6493f61 100644 --- a/main.go +++ b/main.go @@ -313,11 +313,39 @@ func once() error { } func getJobs() ([]broker.Job, error) { - return getJobsStates() + if config.Get().Brokers.UseZips { + return getJobsStates() + } + return getJobsZips() +} + +func getJobsZips() ([]broker.Job, error) { + zips := config.AllZips() + jobs := []broker.Job{} + for _, broker := range getBrokers() { + somejobs, err := broker.SearchZips(zips) + if err != nil { + return nil, err + } + jobs = append(jobs, somejobs...) + } + return jobs, nil } func getJobsStates() ([]broker.Job, error) { states := config.AllStates() + jobs := []broker.Job{} + for _, broker := range getBrokers() { + somejobs, err := broker.SearchStates(states) + if err != nil { + return nil, err + } + jobs = append(jobs, somejobs...) + } + return jobs, nil +} + +func getBrokers() []broker.Broker { brokers := []broker.Broker{} if config.Get().Brokers.NTG.Enabled { logtr.Debugf("NTG enabled") @@ -327,16 +355,7 @@ func getJobsStates() ([]broker.Job, error) { logtr.Debugf("FastExact enabled") brokers = append(brokers, broker.NewFastExact()) } - logtr.Debugf("brokers=%+v", brokers) - jobs := []broker.Job{} - for _, broker := range brokers { - somejobs, err := broker.SearchStates(states) - if err != nil { - return nil, err - } - jobs = append(jobs, somejobs...) - } - return jobs, nil + return brokers } type recordedJob struct {