Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }