package repository import ( "amocrm/internal/models" amo2 "amocrm/internal/models/amo" "amocrm/internal/tools" "context" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "time" ) func (r *Repository) UpdateListUsers(ctx context.Context) error { //TODO:IMPLEMENT ME return nil } func (r *Repository) GettingUserFromCash(ctx context.Context) (*models.UserListResp, error) { //TODO:IMPLEMENT ME return &models.UserListResp{}, nil } func (r *Repository) SoftDeleteAccount(ctx context.Context, accountID string) error { filter := bson.M{"AccountID": accountID} update := bson.M{"$set": bson.M{"Deleted": true}} _, err := r.mdbUser.UpdateOne(ctx, filter, update) if err != nil { return err } return nil } func (r *Repository) GetCurrentAccount(ctx context.Context, accountID string) (*models.User, error) { var user models.User err := r.mdbUser.FindOne(ctx, bson.M{"AccountID": accountID, "Deleted": false}).Decode(&user) if err != nil { if err == mongo.ErrNoDocuments { return nil, ErrUserNotFound } return nil, err } return &user, nil } func (r *Repository) CreateAccount(ctx context.Context, accountID string) error { userData := models.User{} userData.ObjID = primitive.NewObjectID() userData.Createdat = time.Now().Unix() userData.Accountid = accountID _, err := r.mdbUser.InsertOne(ctx, userData) if err != nil { return err } return nil } func (r *Repository) UpdateAccount(ctx context.Context, accountID string, userInfo *amo2.AmocrmUserInformation) error { filter := bson.M{"AccountID": accountID} // todo надо как то получить роль и почту update := bson.M{ "$set": bson.M{ "ID": userInfo.UUID, // uuid аккаунта "Name": userInfo.Name, // имя аккаунта амо "Amocrmid": userInfo.ID, // id аккаунта амо "Amouserid": userInfo.CurrentUserID, // id текущего пользователя в амо "Group": tools.ConvertUserGroups(userInfo), // группы пользователя "Country": userInfo.Country, // страна в настройках амо "Subdomain": userInfo.Subdomain, // поддомен организации }, } _, err := r.mdbUser.UpdateOne(ctx, filter, update) if err != nil { return err } return nil }