48 lines
2.3 KiB
C#
48 lines
2.3 KiB
C#
using Koogle.Application.DTOs;
|
|
using Koogle.Domain.Enums;
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
namespace Koogle.Application.Interfaces;
|
|
|
|
/// <summary>
|
|
/// Service for managing club GIFs and submission tokens.
|
|
/// </summary>
|
|
public interface IClubGifService
|
|
{
|
|
// GIF Management
|
|
Task<ClubGifDto?> GetByIdAsync(Guid id, CancellationToken ct = default);
|
|
Task<IReadOnlyList<ClubGifDto>> GetByClubAsync(Guid clubId, bool includePending = false, CancellationToken ct = default);
|
|
Task<ClubGifDto> UploadAsync(Guid clubId, IFormFile file, CreateClubGifDto dto, CancellationToken ct = default);
|
|
Task<ClubGifDto> ImportFromUrlAsync(Guid clubId, ImportClubGifDto dto, CancellationToken ct = default);
|
|
Task<ClubGifDto> UpdateAsync(UpdateClubGifDto dto, CancellationToken ct = default);
|
|
Task<bool> DeleteAsync(Guid id, CancellationToken ct = default);
|
|
|
|
// Approval
|
|
Task<ClubGifDto?> ApproveAsync(Guid id, CancellationToken ct = default);
|
|
Task<bool> RejectAsync(Guid id, CancellationToken ct = default);
|
|
|
|
// Playback
|
|
Task<GifPlaybackDto?> SelectRandomForEventAsync(Guid clubId, ThrowEventType eventType, CancellationToken ct = default);
|
|
Task<IReadOnlyList<GifPreloadDto>> GetPreloadGifsAsync(Guid clubId, CancellationToken ct = default);
|
|
|
|
// Rating
|
|
Task<ClubGifDto> RateAsync(Guid gifId, Guid userProfileId, int value, CancellationToken ct = default);
|
|
|
|
// Submission Tokens
|
|
Task<GifSubmissionTokenDto> CreateSubmissionTokenAsync(CreateGifSubmissionTokenDto dto, CancellationToken ct = default);
|
|
Task<GifSubmissionTokenDto?> GetSubmissionTokenAsync(string token, CancellationToken ct = default);
|
|
Task<IReadOnlyList<GifSubmissionTokenDto>> GetSubmissionTokensByClubAsync(Guid clubId, CancellationToken ct = default);
|
|
Task<bool> DeleteSubmissionTokenAsync(Guid id, CancellationToken ct = default);
|
|
|
|
// Anonymous Submission
|
|
Task<ClubGifDto> SubmitAnonymousAsync(string token, IFormFile file, string name, CancellationToken ct = default);
|
|
Task<ClubGifDto> SubmitAnonymousFromUrlAsync(string token, string url, string name, CancellationToken ct = default);
|
|
|
|
// Template Seeding
|
|
/// <summary>
|
|
/// Seeds template GIFs from club-template folder to a club.
|
|
/// Should be called after creating a new club.
|
|
/// </summary>
|
|
Task<int> SeedTemplateGifsAsync(Guid clubId, CancellationToken ct = default);
|
|
}
|