using MediatR; using CMSMicroservice.Domain.Entities; namespace CMSMicroservice.Application.Features.InventoryItems.Queries; /// /// Query برای دریافت آیتم موجودی به ID /// public record GetInventoryItemByIdQuery(long Id) : IRequest; /// /// Query برای دریافت آیتم موجودی به Product ID /// public record GetInventoryItemByProductIdQuery(long ProductId, long? WarehouseId = null) : IRequest; /// /// Query برای دریافت آیتم موجودی به DiscountProduct ID /// public record GetInventoryItemByDiscountProductIdQuery(long DiscountProductId, long? WarehouseId = null) : IRequest; /// /// Query برای جستجوی آیتم های موجودی /// public record SearchInventoryItemsQuery : IRequest> { public long? WarehouseId { get; init; } public long? ProductId { get; init; } public long? DiscountProductId { get; init; } public string? ProductName { get; init; } public bool? IsActive { get; init; } public bool? IsLowStock { get; init; } public bool? IsOutOfStock { get; init; } public int Skip { get; init; } = 0; public int Take { get; init; } = 100; } /// /// Query برای دریافت تعداد آیتم های موجودی /// public record GetInventoryItemsCountQuery : IRequest { public long? WarehouseId { get; init; } public long? ProductId { get; init; } public long? DiscountProductId { get; init; } public string? ProductName { get; init; } public bool? IsActive { get; init; } public bool? IsLowStock { get; init; } public bool? IsOutOfStock { get; init; } } /// /// Query برای دریافت آیتم های کم موجود /// public record GetLowStockItemsQuery : IRequest> { public long? WarehouseId { get; init; } public int Count { get; init; } = 50; } /// /// Query برای دریافت آیتم های ناموجود /// public record GetOutOfStockItemsQuery : IRequest> { public long? WarehouseId { get; init; } public int Count { get; init; } = 50; } /// /// Query برای چک کردن دسترسی موجودی /// public record CheckInventoryAvailabilityQuery : IRequest { public long InventoryItemId { get; init; } public int RequiredQuantity { get; init; } } /// /// Query برای دریافت موجودی قابل دسترس /// public record GetAvailableQuantityQuery(long InventoryItemId) : IRequest; /// /// Query برای دریافت آیتم های موجودی در انبار /// public record GetWarehouseInventoryItemsQuery : IRequest> { public long WarehouseId { get; init; } public bool? IsActive { get; init; } public bool? IsLowStock { get; init; } public int Skip { get; init; } = 0; public int Take { get; init; } = 100; }