diff --git a/serv_nginx/api_bb/internal/service/user_service.go b/serv_nginx/api_bb/internal/service/user_service.go index abe068c..ac6de6b 100644 --- a/serv_nginx/api_bb/internal/service/user_service.go +++ b/serv_nginx/api_bb/internal/service/user_service.go @@ -22,9 +22,39 @@ type userService struct { logger logger.LoggerInterface } -// UpdateProfile implements UserService. -func (s userService) UpdateProfile(user *models.User) error { - panic("unimplemented") +// Обновление профиля +func (s *userService) UpdateProfile(user *models.User) error { + s.logger.Info("Updating user profile", + zap.Uint("user_id", user.ID), + ) + + // Проверяем, что пользователь существует + existingUser, err := s.userRepo.FindByID(user.ID) + if err != nil { + s.logger.Error("User not found for profile update", + zap.Uint("user_id", user.ID), + zap.Error(err), + ) + return fmt.Errorf("user not found") + } + + // Убеждаемся, что email не меняется + user.Email = existingUser.Email + user.Avatar = existingUser.Avatar + + updateData := &models.User{ + ID: user.ID, + FirstName: user.FirstName, + LastName: user.LastName, + Avatar: user.Avatar, + Phone: user.Phone, + Experience: user.Experience, + Goals: user.Goals, + Newsletter: user.Newsletter, + UpdatedAt: time.Now(), + } + + return s.userRepo.UpdateExcludeEmail(updateData) } func NewUserService(userRepo repository.UserRepository, jwtService JWTService, log logger.LoggerInterface) userService {