using System; using System.Collections.Generic; using System.Threading.Tasks; using LCU.API.Internal.RepoApi.Repos.Models; using LCU.API.Internal.RepoApi.Repos.Models.Producer; using LCU.API.Internal.RepoApi.Repos.Models.Results; using LCU.Library.Internal.RepoApiModels.Models.Requests; namespace LCU.API.Internal.RepoApi.Repos.Repositories { public interface IRepoAccountRepository { Task> ListAsync(List filterRepoIdList, int filterPage, int filterLimit, string status = null, string auctionHouseId = null, int? repoCompanyId = null, bool? onlyOpenAccounts = null); Task> ListByAuctionVinAsync(string unformattedVin); Task> FindByCurrentStatus(string currentStatus); Task> FindByStatusChangeInPeriod(string status, DateTime lowDateTime, DateTime highDateTime, string previousStatus = null); Task AddAsync(RepoAccount repoAccount); Task FindByIdAsync(int id); Task> FindByRepoIdAsync(List filterRepoIdList); Task> SearchRepoAccounts(string searchPhrase, int maxLimit); Task> FindByAccountNoAsync(string accountNo); Task FindByAuctionAssignmentIdAsync(int id); Task> GetCurrentAccountsOnHoldAtAuction(); void Update(RepoAccount eventAlert); void Remove(RepoAccount eventAlert); Task> GetItemsForProcessing(IReadOnlyCollection watchStatusList); } }