KoogleApp/src/Koogle.Application/Interfaces/IClubGifService.cs

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);
}