package repository import ( "amocrm/internal/models" "amocrm/internal/models/amo" "context" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "time" ) func (r *Repository) GettingFieldsFromCash(ctx context.Context) (*models.UserListFieldsResp, error) { //TODO:IMPLEMENT ME return &models.UserListFieldsResp{}, nil } func (r *Repository) UpdateListCustom(ctx context.Context) error { //TODO:IMPLEMENT ME return nil } type CheckFieldsDeps struct { AccountID string // id quiz ID int // id amo EntityType amo.EntityType Fields []amo.CustomField } func (r *Repository) CheckFields(ctx context.Context, deps CheckFieldsDeps) error { for _, f := range deps.Fields { field := models.Field{ ID: deps.AccountID, Accountid: deps.ID, Amoid: f.ID, Name: f.Name, Type: f.Type, Code: f.Code, Entity: deps.EntityType, } existingField, err := r.GetFieldByID(ctx, deps.AccountID, f.ID) if err != nil { return err } if existingField != nil { field.UpdateAt = time.Now().Unix() err = r.UpdateField(ctx, &field) if err != nil { return err } } else { field.Createdat = time.Now().Unix() err = r.InsertField(ctx, &field) if err != nil { return err } } } return nil } func (r *Repository) GetFieldByID(ctx context.Context, accountID string, amoid int) (*models.Field, error) { var field models.Field filter := bson.M{"id": accountID, "amoid": amoid} err := r.fields.FindOne(ctx, filter).Decode(&field) if err == mongo.ErrNoDocuments { return nil, nil } if err != nil { return nil, err } return &field, nil } func (r *Repository) UpdateField(ctx context.Context, field *models.Field) error { filter := bson.M{"id": field.ID, "amoid": field.Amoid} update := bson.M{"$set": bson.M{ "accountid": field.Accountid, "name": field.Name, "updateAt": field.UpdateAt, "type": field.Type, "entity": field.Entity, "code": field.Code, }} _, err := r.fields.UpdateOne(ctx, filter, update) return err } func (r *Repository) InsertField(ctx context.Context, field *models.Field) error { _, err := r.fields.InsertOne(ctx, field) return err }