﻿using NldbApi.Models;
using NldbApi.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace NldbApi.Interfaces
{
    public interface IVisitedFloorRepository
    {
        Task<int> AddVisitedFloorAsync(VisitedFloor visitedFloor);
        Task<AddFloorResult> AddVisitedFloorReturnIdAsync(VisitedFloor visitedFloor);
        Task<int> GetTotalNumberOfFloorVisits();
        Task<List<VisitedFloor>> GetVisitedFloorsForVideoAsync(string videoId);
        Task<List<DetailedFloor>> GetFloorStatsForItemAsync(DatabaseSearchOptions options);
        Task<List<DetailedFloor>> GetFloorStatsForItemSourceAsync(DatabaseSearchOptions options);
        Task<List<DetailedFloor>> GetFloorStatsForBossFightAsync(DatabaseSearchOptions options);
        Task<GraphBar[]> GetFloorVisitsThroughoutTheLetsPlay(DatabaseSearchOptions options);
        Task<int> RemoveVisitedFloorsForEpisodeAsync(string videoId);
    }
}
