fengling-activity/src/Fengling.Activity.Domain/Repositories/IParticipationRecordRepository.cs
sam ab8d12527e refactor: major project restructuring and cleanup
Changes:

- Remove deprecated Fengling.Activity and YarpGateway.Admin projects

- Add points processing services with distributed lock support

- Update Vben frontend with gateway management pages

- Add gateway config controller and database listener

- Update routing to use header-mixed-nav layout

- Add comprehensive test suites for Member services

- Add YarpGateway integration tests

- Update package versions in Directory.Packages.props

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-15 10:34:07 +08:00

20 lines
1.4 KiB
C#

namespace Fengling.Activity.Domain.Repositories;
using Fengling.Activity.Domain.Aggregates.Campaigns;
using Fengling.Activity.Domain.Aggregates.ParticipationRecords;
using Fengling.Activity.Domain.Enums;
using Fengling.Activity.Domain.ValueObjects;
public interface IParticipationRecordRepository
{
Task<ParticipationRecord?> GetByIdAsync(ParticipationRecordId id, CancellationToken cancellationToken = default);
Task<List<ParticipationRecord>> GetByCampaignIdAsync(CampaignId campaignId, CancellationToken cancellationToken = default);
Task<List<ParticipationRecord>> GetByMemberIdAsync(TenantId tenantId, Guid memberId, CancellationToken cancellationToken = default);
Task<ParticipationRecord?> GetByCampaignAndMemberAsync(CampaignId campaignId, Guid memberId, CancellationToken cancellationToken = default);
Task<List<ParticipationRecord>> GetByStatusAsync(CampaignId campaignId, ParticipationStatus status, CancellationToken cancellationToken = default);
Task<int> GetParticipationCountAsync(CampaignId campaignId, Guid memberId, CancellationToken cancellationToken = default);
Task AddAsync(ParticipationRecord record, CancellationToken cancellationToken = default);
Task UpdateAsync(ParticipationRecord record, CancellationToken cancellationToken = default);
Task DeleteAsync(ParticipationRecord record, CancellationToken cancellationToken = default);
}