Send compliance report data with lead data
This commit is contained in:
parent
cedbb3372e
commit
ac552be7e7
4 changed files with 45 additions and 10 deletions
|
|
@ -97,3 +97,21 @@ func ComplianceRequestMailerCreate(ctx context.Context, user User, site_id int32
|
|||
|
||||
return req.ID, nil
|
||||
}
|
||||
|
||||
func ComplianceReportRequestByLeadID(ctx context.Context, lead_ids []int32) (map[int32][]*types.ComplianceReportRequest, error) {
|
||||
rows, err := models.ComplianceReportRequests.Query(
|
||||
sm.Where(models.ComplianceReportRequests.Columns.LeadID.EQ(psql.Any(lead_ids))),
|
||||
).All(ctx, db.PGInstance.BobDB)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("query reports: %w", err)
|
||||
}
|
||||
results := make(map[int32][]*types.ComplianceReportRequest, len(lead_ids))
|
||||
for _, row := range rows {
|
||||
crrs, ok := results[row.LeadID.MustGet()]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("impossible")
|
||||
}
|
||||
crrs = append(crrs, types.ComplianceReportRequestFromModel(row))
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,13 +54,8 @@ func leadsBySiteID(ctx context.Context, site_ids []int32) (map[int32][]types.Lea
|
|||
models.Leads.Columns.ID.As("id"),
|
||||
models.Leads.Columns.SiteID.As("site_id"),
|
||||
models.Leads.Columns.Type.As("type"),
|
||||
models.ComplianceReportRequests.Columns.ID.As("compliance_report_request_id"),
|
||||
),
|
||||
sm.From(models.Leads.Name()),
|
||||
sm.LeftJoin(models.ComplianceReportRequests.Name()).OnEQ(
|
||||
models.Leads.Columns.ID,
|
||||
models.ComplianceReportRequests.Columns.LeadID,
|
||||
),
|
||||
sm.Where(
|
||||
models.Leads.Columns.SiteID.EQ(psql.Any(site_ids)),
|
||||
),
|
||||
|
|
@ -68,6 +63,18 @@ func leadsBySiteID(ctx context.Context, site_ids []int32) (map[int32][]types.Lea
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("query leads: %w", err)
|
||||
}
|
||||
lead_ids := make([]int32, len(rows))
|
||||
for i, row := range rows {
|
||||
lead_ids[i] = row.ID
|
||||
}
|
||||
compliance_report_requests, err := ComplianceReportRequestByLeadID(ctx, lead_ids)
|
||||
for _, row := range rows {
|
||||
crrs, ok := compliance_report_requests[row.ID]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("impossible")
|
||||
}
|
||||
row.ComplianceReportRequests = crrs
|
||||
}
|
||||
results := make(map[int32][]types.Lead, len(site_ids))
|
||||
for _, site_id := range site_ids {
|
||||
results[site_id] = make([]types.Lead, 0)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,17 @@
|
|||
package types
|
||||
|
||||
import (
|
||||
"github.com/Gleipnir-Technology/nidus-sync/db/models"
|
||||
)
|
||||
|
||||
type ComplianceReportRequest struct {
|
||||
ID int32 `db:"id" json:"id"`
|
||||
PublicID string `db:"public_id" json:"public_id"`
|
||||
}
|
||||
|
||||
func ComplianceReportRequestFromModel(crr *models.ComplianceReportRequest) *ComplianceReportRequest {
|
||||
return &ComplianceReportRequest{
|
||||
ID: crr.ID,
|
||||
PublicID: crr.PublicID,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
package types
|
||||
|
||||
type Lead struct {
|
||||
ComplianceReportRequest *ComplianceReportRequest `db:"-" json:"compliance_report_request"`
|
||||
ComplianceReportRequestID *int32 `db:"compliance_report_request_id" json:"-"`
|
||||
ID int32 `db:"id" json:"id"`
|
||||
SiteID int32 `db:"site_id" json:"site_id"`
|
||||
Type string `db:"type" json:"type"`
|
||||
ComplianceReportRequests []*ComplianceReportRequest `db:"-" json:"compliance_report_requests"`
|
||||
ID int32 `db:"id" json:"id"`
|
||||
SiteID int32 `db:"site_id" json:"site_id"`
|
||||
Type string `db:"type" json:"type"`
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue