using System.Collections.Generic;
using System.Collections.ObjectModel;
using Valg.EVA.Skanning.Contracts.CommonEnums;
using Valg.EVA.Skanning.Entity.ReadModel;

namespace Valg.EVA.Skanning.Repositories.BallotPaper
{
    public interface IBallotPaperRepository
    {
        int GetTotalBallotPapersForVerificationCount(int boxCountingId);
        BallotPaperImages GetBallotPaperImages(int ballotPaperId);
        Valg.EVA.Skanning.Entity.ReadModel.BallotPaper GetBallotPaper(int ballotPaperId);
        ReadOnlyCollection<BallotPaperFieldValue> GetCurrentFieldValues(int ballotPaperId);
        NextBallotPaper GetNextBallotPaperToVerify(int boxCountingId);
        List<BallotPaperInBoxCounting> GetBallotPapersInBoxCounting(int boxCountingId);
        List<BallotPaperFieldValue> GetFieldValues(int ballotPaperId, ValueSourceType valueSourceType);

        ReadOnlyCollection<int> GetBallotPapersInCounting(int countingId);
        
        BallotPaperValues GetCurrentBallotPaperValues(int ballotPaperId);
        BallotPaperValues GetOriginalBallotPaperValues(int ballotPaperId);

        BallotPaperPositionInBox GetBallotPaperPositionInBox(int ballotPaperId, int boxCountingId);
    }
}
