public static ProviderDeposit MakeProviderDeposit(ProviderOrderItem providerOrderItem, float amount, DepositMovement depositMovement) { if (providerOrderItem == null) { throw new ArgumentNullException("Provider order item must have a value."); } if (amount <= 0) { throw new ArgumentException("Amount must be larger than 0."); } var deposit = new ProviderDeposit(); deposit.Amount = amount; deposit.RegisterDate = DateTime.Now; deposit.MovementType = depositMovement; deposit.ProviderOrderItemId = providerOrderItem.Id; deposit.ProviderOrderItem = providerOrderItem; deposit.Sku = providerOrderItem.Product.Sku; deposit.ProviderOrderItem.Product.UpdateAmount(depositMovement == DepositMovement.In ? amount : -amount); return(deposit); }
public Guid AddItem(Product product, float amount) { if (IsDeleted) { throw new InvalidOperationException("Order is deleted."); } if (ProviderOrderItems == null) { ProviderOrderItems = new Collection <ProviderOrderItem>(); } var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(this, product, amount); ProviderOrderItems.Add(providerOrderItem); return(providerOrderItem.Id); }
public static ProviderOrderItem MakeProviderOrderItem(ProviderOrder providerOrder, Product product, float amount) { if (providerOrder == null) { throw new ArgumentNullException("Provider order must have a value."); } if (product == null) { throw new ArgumentNullException("Product must have a value."); } if (amount <= 0) { throw new ArgumentException("Amount must be larger than 0."); } var providerOrderItem = new ProviderOrderItem(); providerOrderItem.ProviderOrderId = providerOrder.Id; providerOrderItem.ProviderOrder = providerOrder; providerOrderItem.ProductId = product.Id; providerOrderItem.Product = product; providerOrderItem.Amount = amount; providerOrderItem.Price = product.Price; providerOrderItem.TotalValue = providerOrderItem.Price * providerOrderItem.Amount; providerOrderItem.Deposits = new Collection <ProviderDeposit>(); providerOrder.UpdateTotalValue(providerOrderItem.TotalValue); var deposit = ProviderDeposit.MakeProviderDeposit(providerOrderItem, amount, DepositMovement.In); providerOrderItem.Deposits.Add(deposit); return(providerOrderItem); }