130 lines
3.0 KiB
Go
130 lines
3.0 KiB
Go
package tools
|
|
|
|
import (
|
|
"amocrm/internal/models"
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
)
|
|
|
|
func ToPipeline(amoPipelines []models.Pipeline) []model.Pipeline {
|
|
var pipelines []model.Pipeline
|
|
for _, p := range amoPipelines {
|
|
pipeline := model.Pipeline{
|
|
Amoid: int32(p.ID),
|
|
Name: p.Name,
|
|
Isarchive: p.IsArchive,
|
|
AccountID: int32(p.AccountID),
|
|
}
|
|
pipelines = append(pipelines, pipeline)
|
|
}
|
|
return pipelines
|
|
}
|
|
|
|
func ToStep(amoStatuses []models.Statuses) []model.Step {
|
|
var steps []model.Step
|
|
for _, s := range amoStatuses {
|
|
step := model.Step{
|
|
Amoid: int32(s.ID),
|
|
Name: s.Name,
|
|
Pipelineid: int32(s.PipelineID),
|
|
Color: s.Color,
|
|
Accountid: int32(s.AccountID),
|
|
}
|
|
steps = append(steps, step)
|
|
}
|
|
return steps
|
|
}
|
|
|
|
func ToTag(amoTag []models.Tag, entity model.EntityType) []model.Tag {
|
|
var tags []model.Tag
|
|
for _, t := range amoTag {
|
|
tag := model.Tag{
|
|
Amoid: int32(t.ID),
|
|
Entity: entity,
|
|
Name: t.Name,
|
|
Color: t.Color,
|
|
}
|
|
tags = append(tags, tag)
|
|
}
|
|
return tags
|
|
}
|
|
|
|
func ToField(amoField []models.CustomField, entity model.EntityType) []model.Field {
|
|
var fields []model.Field
|
|
for _, f := range amoField {
|
|
field := model.Field{
|
|
Amoid: int32(f.ID),
|
|
Code: f.Code,
|
|
Name: f.Name,
|
|
Entity: entity,
|
|
Type: model.FieldType(f.Type),
|
|
}
|
|
fields = append(fields, field)
|
|
}
|
|
|
|
return fields
|
|
}
|
|
|
|
func ConstructField(allAnswers []model.ResultAnswer, fieldsRule model.Fieldsrule) []models.FieldsValues {
|
|
fieldsMap := make(map[int][]models.Values)
|
|
|
|
if fieldsRule.Lead != nil {
|
|
for _, rule := range fieldsRule.Lead {
|
|
for _, data := range allAnswers {
|
|
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
|
values := fieldsMap[fieldID]
|
|
values = append(values, models.Values{Value: data.Content})
|
|
fieldsMap[fieldID] = values
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if fieldsRule.Contact != nil {
|
|
for _, rule := range fieldsRule.Contact {
|
|
for _, data := range allAnswers {
|
|
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
|
values := fieldsMap[fieldID]
|
|
values = append(values, models.Values{Value: data.Content})
|
|
fieldsMap[fieldID] = values
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if fieldsRule.Company != nil {
|
|
for _, rule := range fieldsRule.Company {
|
|
for _, data := range allAnswers {
|
|
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
|
values := fieldsMap[fieldID]
|
|
values = append(values, models.Values{Value: data.Content})
|
|
fieldsMap[fieldID] = values
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if fieldsRule.Customer != nil {
|
|
for _, rule := range fieldsRule.Customer {
|
|
for _, data := range allAnswers {
|
|
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
|
values := fieldsMap[fieldID]
|
|
values = append(values, models.Values{Value: data.Content})
|
|
fieldsMap[fieldID] = values
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var fields []models.FieldsValues
|
|
for fieldID, values := range fieldsMap {
|
|
field := models.FieldsValues{
|
|
FieldID: fieldID,
|
|
Values: values,
|
|
}
|
|
|
|
fields = append(fields, field)
|
|
}
|
|
|
|
return fields
|
|
}
|