Main #41

Merged
aefril merged 16 commits from main into staging 2026-10-08 04:32:27 +02:00
3 changed files with 28 additions and 1 deletions
Showing only changes of commit 892575202b - Show all commits
+13 -1
View File
@@ -316,6 +316,18 @@ func resolveLineQuantity(product *entities.Product, quantity int, weight *float6
} }
func (p *OrderProcessorImpl) CreateOrder(ctx context.Context, req *models.CreateOrderRequest, organizationID uuid.UUID) (*models.OrderResponse, error) { func (p *OrderProcessorImpl) CreateOrder(ctx context.Context, req *models.CreateOrderRequest, organizationID uuid.UUID) (*models.OrderResponse, error) {
// The order's customer earns EnakPoint and EnakCoin once it is paid, so it must be
// one of the organization's own; orders.customer_id has no foreign key to catch it.
customerID := req.CustomerID
if customerID != nil && *customerID == uuid.Nil {
customerID = nil
}
if customerID != nil {
if _, err := p.customerRepo.GetByIDAndOrganization(ctx, *customerID, organizationID); err != nil {
return nil, fmt.Errorf("customer not found or does not belong to the organization: %w", err)
}
}
orderNumber, err := p.orderRepo.GetNextOrderNumber(ctx, organizationID, req.OutletID) orderNumber, err := p.orderRepo.GetNextOrderNumber(ctx, organizationID, req.OutletID)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to generate order number: %w", err) return nil, fmt.Errorf("failed to generate order number: %w", err)
@@ -401,7 +413,7 @@ func (p *OrderProcessorImpl) CreateOrder(ctx context.Context, req *models.Create
OrganizationID: organizationID, OrganizationID: organizationID,
OutletID: req.OutletID, OutletID: req.OutletID,
UserID: req.UserID, UserID: req.UserID,
CustomerID: req.CustomerID, CustomerID: customerID,
OrderNumber: orderNumber, OrderNumber: orderNumber,
TableNumber: req.TableNumber, TableNumber: req.TableNumber,
OrderType: entities.OrderType(req.OrderType), OrderType: entities.OrderType(req.OrderType),
@@ -27,6 +27,7 @@ func CreateOrderContractToModel(req *contract.CreateOrderRequest) *models.Create
return &models.CreateOrderRequest{ return &models.CreateOrderRequest{
OutletID: req.OutletID, OutletID: req.OutletID,
UserID: req.UserID, UserID: req.UserID,
CustomerID: req.CustomerID,
TableID: req.TableID, TableID: req.TableID,
TableNumber: req.TableNumber, TableNumber: req.TableNumber,
OrderType: constants.OrderType(req.OrderType), OrderType: constants.OrderType(req.OrderType),
@@ -32,6 +32,20 @@ func TestCreateOrderContractToModelCarriesWeight(t *testing.T) {
require.Equal(t, weight, *result.OrderItems[0].Weight) require.Equal(t, weight, *result.OrderItems[0].Weight)
} }
func TestCreateOrderContractToModelCarriesCustomer(t *testing.T) {
customerID := uuid.New()
result := CreateOrderContractToModel(&contract.CreateOrderRequest{
OutletID: uuid.New(),
UserID: uuid.New(),
CustomerID: &customerID,
OrderItems: []contract.CreateOrderItemRequest{{ProductID: uuid.New(), Quantity: 1}},
})
require.NotNil(t, result.CustomerID, "the order's customer is who earns EnakPoint and EnakCoin")
require.Equal(t, customerID, *result.CustomerID)
}
func TestAddToOrderContractToModelCarriesWeight(t *testing.T) { func TestAddToOrderContractToModelCarriesWeight(t *testing.T) {
weight := 0.8 weight := 0.8