amocrm/internal/tools/for_rules.go

80 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tools
import (
"amocrm/internal/models"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
)
func ToCreatedUpdate(utms []model.UTM, fields []model.Field) ([]models.AddLeadsFields, []int32) {
var toCreated []models.AddLeadsFields
var toUpdate []int32
for _, utm := range utms {
matched := false
for _, field := range fields {
if utm.Name == field.Name {
toUpdate = append(toUpdate, int32(utm.ID))
matched = true
break
}
}
if !matched {
toCreated = append(toCreated, models.AddLeadsFields{Type: model.TypeAmoText, Name: utm.Name})
}
}
return toCreated, toUpdate
}
func MatchingUTMs(utms []model.UTM, fields []models.CustomField) []model.UTM {
var forUpdate []model.UTM
for _, utm := range utms {
for _, field := range fields {
if utm.Name == field.Name {
updUtm := model.UTM{
ID: utm.ID,
Amofieldid: int32(field.ID),
Quizid: utm.Quizid,
Accountid: utm.Accountid,
Name: field.Name,
}
forUpdate = append(forUpdate, updUtm)
}
}
}
return forUpdate
}
func ToCreatedUpdateQuestionRules(questionsTypeMap map[model.EntityType][]model.Question, currentFields []model.Field) (map[model.EntityType][]models.AddLeadsFields, map[int]int) {
toUpdate := make(map[int]int) // на обновление ключ id вопроса значение id кастомного поля для тех у кого имя совпадает
toCreated := make(map[model.EntityType][]models.AddLeadsFields)
for entity, questions := range questionsTypeMap {
for _, question := range questions {
matched := false
for _, field := range currentFields {
if question.Title == field.Name {
toUpdate[int(question.Id)] = int(field.Amoid)
matched = true
break
}
}
if !matched {
//Type: model.TypeMapping[question.Type]
toCreated[entity] = append(toCreated[entity], models.AddLeadsFields{Type: model.TypeAmoText, Name: question.Title})
}
}
}
return toCreated, toUpdate
}
func ToQuestionIDs(rules []model.FieldRule) []int32 {
var ids []int32
for _, rule := range rules {
for queID := range rule.Questionid {
ids = append(ids, int32(queID))
}
}
return ids
}