using LittleShop.DTOs; using LittleShop.Enums; namespace LittleShop.Services; public interface IOrderService { Task> GetAllOrdersAsync(); Task> GetOrdersByIdentityAsync(string identityReference); Task> GetOrdersByCustomerIdAsync(Guid customerId); Task GetOrderByIdAsync(Guid id); Task CreateOrderAsync(CreateOrderDto createOrderDto); Task UpdateOrderStatusAsync(Guid id, UpdateOrderStatusDto updateOrderStatusDto); Task CancelOrderAsync(Guid id, string identityReference); // Enhanced workflow methods Task AcceptOrderAsync(Guid id, string userName, AcceptOrderDto acceptDto); Task StartPackingAsync(Guid id, string userName, StartPackingDto packingDto); Task DispatchOrderAsync(Guid id, string userName, DispatchOrderDto dispatchDto); Task PutOnHoldAsync(Guid id, string userName, PutOnHoldDto holdDto); Task RemoveFromHoldAsync(Guid id, string userName); Task MarkDeliveredAsync(Guid id, MarkDeliveredDto deliveredDto); // Workflow queries Task> GetOrdersByStatusAsync(OrderStatus status); Task> GetOrdersRequiringActionAsync(); // PaymentReceived orders needing acceptance Task> GetOrdersForPackingAsync(); // Accepted orders ready for packing Task> GetOrdersOnHoldAsync(); // Orders on hold // Performance optimization - get all status counts in single query Task GetOrderStatusCountsAsync(); }