using Ardalis.Result; using WatchIt.Database.Model.Media; using WatchIt.DTO.Models.Controllers.Accounts.Account; using WatchIt.DTO.Models.Controllers.Accounts.AccountBackgroundPicture; using WatchIt.DTO.Models.Controllers.Accounts.AccountEmail; using WatchIt.DTO.Models.Controllers.Accounts.AccountLogout; using WatchIt.DTO.Models.Controllers.Accounts.AccountPassword; using WatchIt.DTO.Models.Controllers.Accounts.AccountProfileInfo; using WatchIt.DTO.Models.Controllers.Accounts.AccountUsername; using WatchIt.DTO.Models.Controllers.Media.Medium.Query; using WatchIt.DTO.Models.Controllers.Media.Medium.Response; using WatchIt.DTO.Models.Controllers.People.Person; using WatchIt.DTO.Models.Controllers.People.Person.Query; using WatchIt.DTO.Models.Controllers.Photos.Photo; using WatchIt.DTO.Models.Generics.Image; using WatchIt.DTO.Query; namespace WatchIt.WebAPI.BusinessLogic.Accounts; public interface IAccountsBusinessLogic { #region Main Task>> GetAccounts(AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, bool includeProfilePictures); Task> GetAccount(long accountId, bool includeProfilePictures); Task> PostAccount(AccountRequest body); #endregion #region Profile picture Task> GetAccountProfilePicture(long accountId); Task> PutAccountProfilePicture(ImageRequest body); Task DeleteAccountProfilePicture(); #endregion #region Background picture Task> GetAccountBackgroundPicture(long accountId); Task> PutAccountBackgroundPicture(AccountBackgroundPictureRequest body); Task DeleteAccountBackgroundPicture(); #endregion #region Profile edit Task PatchAccountProfileInfo(AccountProfileInfoRequest body); Task PatchAccountUsername(AccountUsernameRequest body); Task PatchAccountEmail(AccountEmailRequest body); Task PatchAccountPassword(AccountPasswordRequest body); #endregion #region Log out Task Logout(AccountLogoutRequest body); Task LogoutAll(); #endregion #region Follows Task>> GetAccountFollows(long accountId, AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery); Task>> GetAccountFollowers(long accountId, AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery); Task PostAccountFollow(long followedAccountId); Task DeleteAccountFollow(long followedAccountId); #endregion #region Media Task>> GetAccountRatedMedia(long accountId, MediumFilterQuery filterQuery, MediumUserRatedFilterQuery userRatedFilterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, bool includePictures); Task>> GetAccountRatedMediaMovies(long accountId, MediumMovieFilterQuery filterQuery, MediumUserRatedFilterQuery userRatedFilterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, bool includePictures); Task>> GetAccountRatedMediaSeries(long accountId, MediumSeriesFilterQuery filterQuery, MediumUserRatedFilterQuery userRatedFilterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, bool includePictures); Task>> GetAccountRatedPeople(long accountId, PersonFilterQuery filterQuery, PersonUserRatedFilterQuery userRatedFilterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, bool includePictures); #endregion }