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(); } }
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(); } } }