package useCases import ( "RenewCMS/internal/domain/audit" "RenewCMS/internal/domain/user" "context" ) type CancelEmailChangeUseCase struct { userRepository user.Repository recorder audit.Recorder } func NewCancelEmailChangeUseCase(userRepository user.Repository, recorder audit.Recorder) *CancelEmailChangeUseCase { return &CancelEmailChangeUseCase{userRepository, recorder} } func (u *CancelEmailChangeUseCase) CancelEmailChange(ctx context.Context, userId uint32) error { account, err := u.userRepository.Get(userId) if err != nil { return err } if account.PendingEmail == "" { return nil } event := audit.NewEvent(audit.ActionUserCancelEmail, audit.CategoryUsers) event.Target = userTarget(account) if _, err := u.userRepository.ClearPendingEmailChange(userId); err != nil { recordFailure(ctx, u.recorder, event, err) return err } u.recorder.Record(ctx, event) return nil }