package useCases import ( "RenewCMS/internal/domain/audit" "RenewCMS/internal/domain/invite" "context" ) type CancelInviteUseCase struct { inviteRepository invite.Repository recorder audit.Recorder } func NewCancelInviteUseCase(inviteRepository invite.Repository, recorder audit.Recorder) *CancelInviteUseCase { return &CancelInviteUseCase{inviteRepository, recorder} } func (c *CancelInviteUseCase) CancelInvite(ctx context.Context, id uint32) error { event := audit.NewEvent(audit.ActionInviteCancel, audit.CategoryUsers) pending, err := findManageableInvite(c.inviteRepository, id) if err != nil { recordFailure(ctx, c.recorder, event, err) return err } event.Target = inviteTarget(pending) if err := c.inviteRepository.Delete(id); err != nil { recordFailure(ctx, c.recorder, event, err) return err } c.recorder.Record(ctx, event) return nil } func inviteTarget(i invite.Invite) audit.Target { return audit.NewTarget(audit.TargetInvite, i.ID, i.Email) }