public void ChangePrice(float price) { if (IsDeleted) { throw new InvalidOperationException("Order item is deleted."); } if (price <= 0) { throw new ArgumentException("Price must be larger than 0."); } Price = price; var oldValue = TotalValue; TotalValue = Price * Amount; var difference = TotalValue - oldValue; ProviderOrder.UpdateTotalValue(difference); }
public void ChangeAmount(float amount) { if (IsDeleted) { throw new InvalidOperationException("Order item is deleted."); } if (amount <= 0) { throw new ArgumentException("Amount must be larger than 0."); } if (Amount == amount) { throw new ArgumentException("Amount can't be the same as before."); } var difference = amount - Amount; var movementType = DepositMovement.In; if (difference < 0) { difference = -difference; movementType = DepositMovement.Out; } Amount = amount; var oldValue = TotalValue; TotalValue = Price * Amount; var deposit = ProviderDeposit.MakeProviderDeposit(this, difference, movementType); Deposits.Add(deposit); difference = TotalValue - oldValue; ProviderOrder.UpdateTotalValue(difference); }
public static ProviderOrder MakeProviderOrder(int registerNumber, Provider provider) { if (registerNumber <= 0) { throw new ArgumentException("Register number must be larger than 0."); } if (provider == null) { throw new ArgumentNullException("Provider must have a value."); } var providerOrder = new ProviderOrder(); providerOrder.RegisterDate = DateTime.Now; providerOrder.RegisterNumber = registerNumber; providerOrder.ProviderId = provider.Id; providerOrder.Provider = provider; providerOrder.TotalValue = 0; providerOrder.ProviderOrderItems = null; return(providerOrder); }
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); }