using System;
using Valg.EVA.Skanning.Contracts.CommonEnums;
using Valg.EVA.Skanning.Entity.WriteModel;

namespace Valg.EVA.Skanning.Repositories.Counting
{
    public interface ICountingWriteableRepository
    {
        void UpdateBoxCountingState(string barcodeLong, string barcodeShort, int countingId, BoxCountingState boxCountingState, DateTime lastModified, BoxCountingState onlyAllowedPrecedingState,string changedBy);
        int InsertCounting(CountingInsert counting);
        void InsertBoxCounting(BoxCountingInsert boxCountingInsert);
        void UpdateCountingState(int countingId, CountingState countingState, DateTime lastModified, CountingState onlyAllowedPrecedingState, string modifiedBy);
        void MarkBoxCountingAsDeleted(int countingId, string barcodeLong, string barcodeShort, DateTime lastModified);
        void UpdateDuplicatesStateInformation(int boxCountingId, string modifiedBy, DateTime lastModified);
        void MarkCountingAsDeleted(int countingId, DateTime lastModified, string modifiedBy);
        void RegisterBoxAsEmpty(int boxCountingId, DateTime lastModified, string modifiedBy);
        void MarkCountingAsProcessedDuringEmergencMode(int countingId);
        void UpdateBoxCountingWithOriginatingInfo(int boxCountingId, string modifiedBy, string originatingScannerComputer);
    }
}
