Пример #1
0
        public ProductModel[] ListProducts()
        {
            using (var mappers = new OrdersDataMapperContainer())
            {
                var productsMapper = mappers.ProductMapper;

                return productsMapper.Query()
                    .Select(p => new ProductModel
                    {
                        Code = p.Id,
                        Name = p.Name,
                        Quantity = p.AvailableAmount,
                        Supplier = p.SupplierId
                    }).ToArray();
            }
        }
Пример #2
0
        public void PlaceOrder(OrderModel order)
        {
            if (order.Quantity <= 0)
                throw new NotSupportedException();

            using (var transaction = new TransactionScope(TransactionScopeOption.Required))
            {
                CustomerBase customer;
                ProductBase prod;
                using (var mappers = new OrdersDataMapperContainer())
                {
                    prod = EnsureProductExistance(mappers.ProductMapper, order.ProductCode);

                    customer = EnsureCustomerExistance(mappers.CustomerMapper, order.CustomerId);

                    using (var orderService = new CustomerOrderReceiverServiceClient())
                    {
                        orderService.HandleOrder(new CustomerOrderModel
                                                     {
                                                         CustomerId = order.CustomerId,
                                                         ProductCode = order.ProductCode,
                                                         Quantity = order.Quantity
                                                     });
                    }
                    try
                    {
                        using (var notification = new NotificationServiceClient())
                        {
                            notification.SendEmail(customer.Email, "Your order was .");
                        }
                    }
                    catch
                    {
                        // if it fails ignore.
                    }

                    transaction.Complete();
                }

            }
        }