using FruitBank.Common.Dtos;
using FruitBank.Common.Entities;
using Mango.Nop.Core.Models;

namespace FruitBank.Common.Interfaces;

public interface ICustomOrderSignalREndpointCommon
{
    Task<List<OrderDto>?> GetAllOrderDtos();
    Task<List<OrderDto>?> GetPendingOrderDtos();
    Task<List<OrderDto>?> GetPendingOrderDtosForMeasuring(int lastDaysCount);
    Task<List<OrderDto>?> GetAllOrderDtoByIds(int[] orderIds);
    Task<OrderDto?> GetOrderDtoById(int orderId);

    Task<List<OrderDto>?> GetAllOrderDtoByProductId(int productId);
    Task<OrderItemDto?> GetOrderItemDtoById(int orderItemId);

    Task<List<OrderItemDto>?> GetAllOrderItemDtos();
    
    Task<List<OrderItemDto>?> GetAllOrderItemDtoByOrderId(int orderId);
    
    Task<List<OrderItemDto>?> GetAllOrderItemDtoByProductId(int productId);

    Task<List<OrderItemPallet>?> GetAllOrderItemPallets();
    Task<OrderItemPallet?> GetOrderItemPalletById(int orderItemPalletId);
    Task<List<OrderItemPallet>?> GetAllOrderItemPalletByOrderItemId(int orderItemId);
    
    Task<List<OrderItemPallet>?> GetAllOrderItemPalletByOrderId(int orderId);
    
    Task<List<OrderItemPallet>?> GetAllOrderItemPalletByProductId(int productId);

    Task<OrderItemPallet?> AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet);

    Task<OrderDto?> StartMeasuring(int orderId, int userId);
    Task<OrderDto?> SetOrderStatusToComplete(int orderId, int revisorId);

}