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) GettingStepsFromCash(ctx context.Context) (*models.UserListStepsResp, error) { //TODO:IMPLEMENT ME return &models.UserListStepsResp{}, nil } func (r *Repository) UpdateListSteps(ctx context.Context) error { //TODO:IMPLEMENT ME return nil } func (r *Repository) CheckSteps(ctx context.Context, accountID string, steps []amo.Statuses) error { for _, s := range steps { step := models.Step{ ID: accountID, Pipelineid: s.PipelineID, Name: s.Name, Accountid: s.AccountID, Amoid: s.ID, Color: s.Color, } existingStep, err := r.GetStepByID(ctx, accountID, s.ID) if err != nil { return err } if existingStep != nil { step.UpdateAt = time.Now().Unix() err := r.UpdateStep(ctx, &step) if err != nil { return err } } else { step.Createdat = time.Now().Unix() err := r.InsertStep(ctx, &step) if err != nil { return err } } } return nil } func (r *Repository) GetStepByID(ctx context.Context, accountID string, amoid int) (*models.Step, error) { var step models.Step filter := bson.M{"id": accountID, "amoid": amoid} err := r.steps.FindOne(ctx, filter).Decode(&step) if err == mongo.ErrNoDocuments { return nil, nil } if err != nil { return nil, err } return &step, nil } func (r *Repository) UpdateStep(ctx context.Context, step *models.Step) error { filter := bson.M{"id": step.ID, "amoid": step.Amoid} update := bson.M{"$set": bson.M{ "accountid": step.Accountid, "name": step.Name, "updateAt": step.UpdateAt, "deleted": step.Deleted, "color": step.Color, "pipelineid": step.Pipelineid, }} _, err := r.steps.UpdateOne(ctx, filter, update) return err } func (r *Repository) InsertStep(ctx context.Context, step *models.Step) error { _, err := r.steps.InsertOne(ctx, step) return err }