using System.Collections.Generic;
using System.Threading.Tasks;
using MDL.Models;

namespace DAL.Interfaces
{
    public interface IShippingHandoverFormRepository
    {
        Task<int> InsertAsync(ShippingHandoverFormEntity form);
        Task<ShippingHandoverFormEntity> GetByIdAsync(int id);
        Task<ShippingHandoverFormEntity> GetByHandoverNumberAsync(string handoverNumber);
        Task<List<ShippingHandoverFormEntity>> GetAllAsync();
        Task<int> UpdateAsync(ShippingHandoverFormEntity form);
        Task<int> DeleteAsync(int id);
        Task<bool> ExistsByHandoverNumberAsync(string handoverNumber);
        Task<(List<ShippingHandoverFormEntity> Forms, int TotalCount)> GetShippingHandoverFormsBatchAsync(
            int page, 
            int pageSize, 
            string sortBy, 
            string sortOrder,
            string handoverNumber,
            string channel,
            string creator,
            System.DateTime? startDeliveryTime = null,
            System.DateTime? endDeliveryTime = null);
    }
}