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 }