Add Order repositories, prepping Stripe integration
This commit is contained in:
@@ -10,8 +10,4 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="9.0.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Repositories\Orders\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
46
src/Imprink.Domain/Models/OrderFilterParameters.cs
Normal file
46
src/Imprink.Domain/Models/OrderFilterParameters.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
namespace Imprink.Domain.Models;
|
||||
|
||||
public class OrderFilterParameters
|
||||
{
|
||||
public int PageNumber { get; set; } = 1;
|
||||
|
||||
public int PageSize { get; set; } = 10;
|
||||
|
||||
public string? UserId { get; set; }
|
||||
|
||||
public string? OrderNumber { get; set; }
|
||||
|
||||
public int? OrderStatusId { get; set; }
|
||||
|
||||
public int? ShippingStatusId { get; set; }
|
||||
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
public DateTime? EndDate { get; set; }
|
||||
|
||||
public decimal? MinTotalPrice { get; set; }
|
||||
|
||||
public decimal? MaxTotalPrice { get; set; }
|
||||
|
||||
public string SortBy { get; set; } = "OrderDate";
|
||||
|
||||
public string SortDirection { get; set; } = "DESC";
|
||||
|
||||
public bool IsValidDateRange()
|
||||
{
|
||||
if (StartDate.HasValue && EndDate.HasValue)
|
||||
{
|
||||
return StartDate.Value <= EndDate.Value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool IsValidPriceRange()
|
||||
{
|
||||
if (MinTotalPrice.HasValue && MaxTotalPrice.HasValue)
|
||||
{
|
||||
return MinTotalPrice.Value <= MaxTotalPrice.Value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using Imprink.Domain.Entities.Orders;
|
||||
|
||||
namespace Imprink.Domain.Repositories.Orders;
|
||||
|
||||
public interface IOrderItemRepository
|
||||
{
|
||||
Task<OrderItem?> GetByIdAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<OrderItem?> GetByIdWithProductAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<OrderItem?> GetByIdWithVariantAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<OrderItem?> GetByIdFullAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetByOrderIdAsync(Guid orderId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetByOrderIdWithProductsAsync(Guid orderId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetByProductIdAsync(Guid productId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetByProductVariantIdAsync(Guid productVariantId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetCustomizedItemsAsync(CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> GetByDateRangeAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
|
||||
Task<OrderItem> AddAsync(OrderItem orderItem, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<OrderItem>> AddRangeAsync(IEnumerable<OrderItem> orderItems, CancellationToken cancellationToken = default);
|
||||
Task<OrderItem> UpdateAsync(OrderItem orderItem, CancellationToken cancellationToken = default);
|
||||
Task DeleteAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task DeleteByOrderIdAsync(Guid orderId, CancellationToken cancellationToken = default);
|
||||
Task<bool> ExistsAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<decimal> GetTotalValueByOrderIdAsync(Guid orderId, CancellationToken cancellationToken = default);
|
||||
Task<int> GetQuantityByProductIdAsync(Guid productId, CancellationToken cancellationToken = default);
|
||||
Task<int> GetQuantityByVariantIdAsync(Guid productVariantId, CancellationToken cancellationToken = default);
|
||||
Task<Dictionary<Guid, int>> GetProductSalesCountAsync(DateTime? startDate = null, DateTime? endDate = null, CancellationToken cancellationToken = default);
|
||||
}
|
||||
27
src/Imprink.Domain/Repositories/Orders/IOrderRepository.cs
Normal file
27
src/Imprink.Domain/Repositories/Orders/IOrderRepository.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Imprink.Domain.Entities.Orders;
|
||||
using Imprink.Domain.Models;
|
||||
|
||||
namespace Imprink.Domain.Repositories.Orders;
|
||||
|
||||
public interface IOrderRepository
|
||||
{
|
||||
Task<Order?> GetByIdAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<Order?> GetByIdWithItemsAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<Order?> GetByIdWithAddressAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<Order?> GetByIdFullAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<Order?> GetByOrderNumberAsync(string orderNumber, CancellationToken cancellationToken = default);
|
||||
Task<PagedResult<Order>> GetPagedAsync(OrderFilterParameters filterParameters, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<Order>> GetByUserIdAsync(string userId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<Order>> GetByUserIdPagedAsync(string userId, int pageNumber, int pageSize, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<Order>> GetByOrderStatusAsync(int orderStatusId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<Order>> GetByShippingStatusAsync(int shippingStatusId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<Order>> GetByDateRangeAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
|
||||
Task<Order> AddAsync(Order order, CancellationToken cancellationToken = default);
|
||||
Task<Order> UpdateAsync(Order order, CancellationToken cancellationToken = default);
|
||||
Task DeleteAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<bool> ExistsAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
Task<bool> OrderNumberExistsAsync(string orderNumber, Guid? excludeId = null, CancellationToken cancellationToken = default);
|
||||
Task<decimal> GetTotalRevenueAsync(CancellationToken cancellationToken = default);
|
||||
Task<decimal> GetTotalRevenueByDateRangeAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
|
||||
Task<int> GetOrderCountByStatusAsync(int orderStatusId, CancellationToken cancellationToken = default);
|
||||
}
|
||||
Reference in New Issue
Block a user