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 }