private OrderBuilder CreateDefaultOrderBuilder()
        {
            var jewelRepository = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);
            var shoppingCart = MockRepository.GenerateStub<IShoppingCart>();

            shoppingCart.Stub(x => x.Items).Return(new List<ICartItem>()
                                                       {
                                                           FakeJewelCartItem(
                                                               Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725,
                                                               JewelMediaType.WhiteGold,
                                                               1000),
                                                           FakeDiamondCartItem(
                                                               Tests.FAKE_DIAMOND_REPOSITORY_FIRST_ITEM_ID,
                                                               2000),
                                                           FakeCustomJewelCartItem(
                                                               Tests.FAKE_DIAMOND_REPOSITORY_FIRST_ITEM_ID,
                                                               Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725, JewelMediaType.WhiteGold,
                                                               3000)
                                                       });

            shoppingCart.Stub(x => x.TotalPrice).Return(6000);

            var authentication = MockRepository.GenerateStub<IAuthentication>();

            var builder = new OrderBuilder(shoppingCart, authentication, mapper);
            return builder;
        }
        private OrderBuilder CreateDefaultOrderBuilderWithCustomeAuthentication(IAuthentication authentication)
        {
            var shoppingCart = MockRepository.GenerateStub<IShoppingCart>();

            shoppingCart.Stub(x => x.Items).Return(new List<ICartItem>());

            var builder = new OrderBuilder(shoppingCart,authentication, mapper);
            return builder;
        }
        private int SaveOrderAndEmail(CheckoutDetailsModel checkoutDetailsModel, IShoppingCart shoppingCart)
        {
            var orderBuilder = new OrderBuilder(shoppingCart, authentication, mapper);
            var orderdto = orderBuilder.Build(checkoutDetailsModel);

            var orderNumber = orderRepository.Save(orderdto);

            if (orderNumber > 0)
            {
                var cartItemBuilder = new CartItemViewModelBuilder(jewelRepository, diamondRepository, mapper);
                var emailTemplateBuilder = new OrderConfirmationEmailTemplateViewModelBuilder(orderNumber.ToString(),
                                                                                              checkoutDetailsModel,
                                                                                              shoppingCart,
                                                                                              cartItemBuilder);

                var emailTemplateViewModel = emailTemplateBuilder.Build();
                mailer.OrderConfirmation(checkoutDetailsModel.Email, emailTemplateViewModel).Send();
            }

            return orderNumber;
        }