using Microsoft.AspNetCore.Http;
using RMuseum.Models.GanjoorAudio;
using RMuseum.Models.GanjoorAudio.ViewModels;
using RMuseum.Models.UploadSession;
using RMuseum.Models.UploadSession.ViewModels;
using RSecurityBackend.Models.Generic;
using System;
using System.Threading.Tasks;
namespace RMuseum.Services
{
///
/// Audio Narration Service
///
public interface IAudioNarrationService
{
///
/// returns list of narrations
///
///
/// send Guid.Empty if you want all narrations
///
///
public Task> GetAll(PagingParameterModel paging, Guid filteredUserId, AudioReviewStatus status);
///
/// return selected narration information
///
///
///
Task> Get(int id);
///
/// Gets Verse Sync Range Information
///
/// narration id
///
Task> GetPoemNarrationVerseSyncArray(int id);
///
/// updates metadata for narration
///
///
///
///
Task> UpdatePoemNarration(int id, PoemNarrationUpdateViewModel metadata);
///
/// imports narration data from ganjoor MySql database
///
/// User Id which becomes owner of imported data
///
Task> OneTimeImport(Guid ownerRAppUserId);
///
/// build profiles from exisng narrations data
///
/// User Id which becomes owner of imported data
/// error string if occurs
Task BuildProfilesFromExistingData(Guid ownerRAppUserId);
///
/// Initiate New Upload Session for audio
///
///
///
Task> InitiateNewUploadSession(Guid userId);
///
/// Save uploaded file
///
///
///
Task> SaveUploadedFile(IFormFile uploadedFile);
///
/// finalize upload session (add files)
///
///
///
///
Task> FinalizeNewUploadSession(UploadSession session, UploadSessionFile[] files);
///
/// Moderate pending narration
///
///
///
///
///
Task> ModeratePoemNarration(int id, Guid moderatorId, PoemNarrationModerateViewModel model);
///
/// Get Upload Session (including files)
///
///
///
Task> GetUploadSession(Guid id);
///
/// Get User Profiles
///
///
///
Task> GetUserNarrationProfiles(Guid userId);
///
/// Add a narration profile
///
///
///
Task> AddUserNarrationProfiles(UserNarrationProfileViewModel profile);
///
/// Update a narration profile
///
///
///
Task> UpdateUserNarrationProfiles(UserNarrationProfileViewModel profile);
///
/// Delete a narration profile
///
///
///
///
Task> DeleteUserNarrationProfiles(Guid id, Guid userId);
///
/// Get uploads descending by upload time
///
///
/// if userId is empty all user uploads would be returned
///
Task> GetUploads(PagingParameterModel paging, Guid userId);
///
/// retry publish unpublished narrations
///
public void RetryPublish();
}
}