public PendingOrderItem CreatePending( Guid id, Guid supplierId, string description, int quantity, string partNo, string instructions, int deliveryDays, Guid jobItemId, decimal price, decimal?carriage) { if (!CurrentUser.HasRole(UserRole.Member)) { throw new DomainValidationException(OrderItemMessages.InsufficientSecurity, "CurrentUser"); } if (id == Guid.Empty) { throw new ArgumentException("A valid ID must be supplied for the pending item"); } if (_orderItemRepository.JobItemHasPendingOrderItem(jobItemId)) { throw new DomainValidationException(OrderItemMessages.PendingItemExists, "JobItemId"); } var pendingItem = new PendingOrderItem(); pendingItem.Id = id; pendingItem.Supplier = GetSupplier(supplierId); pendingItem.Description = description; pendingItem.Quantity = GetQuantity(quantity); pendingItem.PartNo = partNo; pendingItem.Instructions = instructions; pendingItem.DeliveryDays = GetDeliveryDays(deliveryDays); pendingItem.JobItem = GetJobItem(jobItemId); pendingItem.Price = GetPrice(price); pendingItem.Carriage = GetCarriage(carriage); ValidateAnnotatedObjectThrowOnFailure(pendingItem); _orderItemRepository.CreatePending(pendingItem); return(pendingItem); }