Showing preview only (4,690K chars total). Download the full file or copy to clipboard to get everything.
Repository: elbandit/PPPDDD
Branch: master
Commit: 4d9d864fa6d9
Files: 919
Total size: 4.2 MB
Directory structure:
gitextract_uu88b_d3/
├── .gitattributes
├── .gitignore
├── 05 - Domain Model Implementation Patterns/
│ ├── PPPDDDChap05.DomainModel/
│ │ ├── PPPDDDChap05.DomainModel/
│ │ │ ├── Application/
│ │ │ │ └── BidOnAuctionService.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction.cs
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── ClassDiagram.cd
│ │ │ │ ├── HistoricalBid.cs
│ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── Price.cs
│ │ │ │ └── WinningBid.cs
│ │ │ ├── PPPDDDChap05.DomainModel.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── PPPDDDChap05.DomainModel.sln
│ ├── PPPDDDChap05.TableModule/
│ │ ├── PPPDDDChap05.TableModule/
│ │ │ ├── Domain/
│ │ │ │ ├── Customers.cs
│ │ │ │ ├── Orders.cs
│ │ │ │ └── TableModuleBase.cs
│ │ │ ├── PPPDDDChap05.TableModule.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── PPPDDDChap05.TableModule.sln
│ └── PPPDDDChap05.TransactionScript/
│ ├── PPPDDDChap05.TransactionScript/
│ │ ├── Application/
│ │ │ └── BidOnAuctionService.cs
│ │ ├── Domain/
│ │ │ ├── Auction.cs
│ │ │ ├── BidOnAuction.cs
│ │ │ ├── BidOnAuctionCommand.cs
│ │ │ ├── ClassDiagram1.cd
│ │ │ ├── CreateAuction.cs
│ │ │ └── ICommand.cs
│ │ ├── PPPDDDChap05.TransactionScript.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ └── PPPDDDChap05.TransactionScript.sln
├── 10 - Applying the Principles, Practices and Patterns of DDD/
│ └── PPPDDD.Chap10.ecommerce/
│ ├── PPPDDD.Chap10.ecommerce/
│ │ ├── ExplicitLogic/
│ │ │ └── Model/
│ │ │ ├── BasketItem.cs
│ │ │ ├── BasketItemFactory.cs
│ │ │ ├── BasketItems.cs
│ │ │ ├── Country.cs
│ │ │ ├── OverSeasSellingPolicyException.cs
│ │ │ ├── OverseasSellingPolicy.cs
│ │ │ ├── Product.cs
│ │ │ ├── Quantity.cs
│ │ │ └── basket.cs
│ │ ├── ImplicitLogic/
│ │ │ └── Model/
│ │ │ ├── BasketItem.cs
│ │ │ ├── BasketItemFactory.cs
│ │ │ ├── BasketItems.cs
│ │ │ ├── Product.cs
│ │ │ ├── Quantity.cs
│ │ │ └── basket.cs
│ │ ├── PPPDDD.Chap10.ecommerce.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ └── PPPDDD.Chap10.ecommerce.sln
├── 11 - Integrating Bounded Contexts/
│ └── README.md
├── 12 - Integrating Via Messaging/
│ ├── Billing.Messages/
│ │ ├── Billing.Messages.csproj
│ │ ├── Commands/
│ │ │ └── RecordPaymentAttempt.cs
│ │ ├── Events/
│ │ │ └── PaymentAccepted.cs
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Billing.Payments.PaymentAccepted/
│ │ ├── App.config
│ │ ├── Billing.Payments.PaymentAccepted.csproj
│ │ ├── EndpointConfig.cs
│ │ ├── OrderCreatedHandler.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── RecordPaymentAttemptHandler.cs
│ │ └── packages.config
│ ├── DDDesign.Web/
│ │ ├── App_Start/
│ │ │ ├── FilterConfig.cs
│ │ │ ├── RouteConfig.cs
│ │ │ └── WebApiConfig.cs
│ │ ├── Controllers/
│ │ │ └── OrdersController.cs
│ │ ├── DDDesign.Web.csproj
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ ├── Orders/
│ │ │ │ └── Index.cshtml
│ │ │ └── Web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── DDDesign.sln
│ ├── Promotions.LuckyWinner.LuckyWinnerSelected/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── Program.cs
│ │ ├── Promotions.LuckyWinner.LuckyWinnerSelected.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── OrderCreatedHandler.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Promotions.LuckyWinner.LuckyWinnerSelected.Bridge.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── README.md
│ ├── Sales.Messages/
│ │ ├── Commands/
│ │ │ └── PlaceOrder.cs
│ │ ├── Events/
│ │ │ ├── OrderCreated.cs
│ │ │ └── OrderCreated_V2.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── Sales.Messages.csproj
│ ├── Sales.Orders.OrderCreated/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── PlaceOrderHandler.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Sales.Orders.OrderCreated.csproj
│ │ └── packages.config
│ ├── Shipping.BusinessCustomers.ShippingArranged/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── Handlers.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Shipping.BusinessCustomers.ShippingArranged.csproj
│ │ └── packages.config
│ └── Shipping.Messages/
│ ├── Events/
│ │ └── ShippingArranged.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── Shipping.Messages.csproj
├── 13 - Integrating Via Http and Rest/
│ ├── PPPDDD.JSON.SocialMedia/
│ │ ├── AccountManagement/
│ │ │ ├── AccountManagement.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── FollowerDirectoryController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── Discovery/
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── RecommenderController.cs
│ │ │ ├── Discovery.csproj
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPDDD.JSON.SocialMedia.sln
│ ├── PPPDDD.REST.SocialMedia/
│ │ ├── .gitignore
│ │ ├── AccountManagement.Accounts.Api/
│ │ │ ├── AccountManagement.Accounts.Api.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── AccountsController.cs
│ │ │ │ └── FollowersController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── AccountManagement.EntryPoint/
│ │ │ ├── .gitignore
│ │ │ ├── AccountManagement.EntryPoint.Api.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── EntryPointController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── MIT-LICENSE.txt
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── README.md
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ ├── browser.html
│ │ │ ├── js/
│ │ │ │ ├── hal/
│ │ │ │ │ ├── browser.js
│ │ │ │ │ ├── http/
│ │ │ │ │ │ └── client.js
│ │ │ │ │ ├── resource.js
│ │ │ │ │ └── views/
│ │ │ │ │ ├── browser.js
│ │ │ │ │ ├── documentation.js
│ │ │ │ │ ├── embedded_resource.js
│ │ │ │ │ ├── embedded_resources.js
│ │ │ │ │ ├── explorer.js
│ │ │ │ │ ├── inspector.js
│ │ │ │ │ ├── links.js
│ │ │ │ │ ├── location_bar.js
│ │ │ │ │ ├── navigation.js
│ │ │ │ │ ├── non_safe_request_dialog.js
│ │ │ │ │ ├── properties.js
│ │ │ │ │ ├── query_uri_dialog.js
│ │ │ │ │ ├── request_headers.js
│ │ │ │ │ ├── resource.js
│ │ │ │ │ ├── response.js
│ │ │ │ │ ├── response_body.js
│ │ │ │ │ └── response_headers.js
│ │ │ │ └── hal.js
│ │ │ ├── packages.config
│ │ │ ├── styles.css
│ │ │ └── vendor/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-responsive.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── backbone.js
│ │ │ ├── bootstrap.js
│ │ │ ├── jquery-1.10.2.js
│ │ │ ├── underscore.js
│ │ │ └── uritemplates.js
│ │ ├── AccountManagement.RegularAccounts.BeganFollowing/
│ │ │ ├── AccountManagement.RegularAccounts.BeganFollowing.csproj
│ │ │ ├── App_Start/
│ │ │ │ ├── EnableCorsAttribute.cs
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── BeganFollowingController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── Discovery.Reccommendations.Followers/
│ │ │ ├── BeganFollowingPollingFeedConsumer.cs
│ │ │ ├── Discovery.Reccommendations.Followers.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDD.REST.SocialMedia.sln
│ ├── PPPDDD.SOAP.SocialMedia/
│ │ ├── AccountManagement/
│ │ │ ├── AccountManagement.csproj
│ │ │ ├── FollowerDirectory.svc
│ │ │ ├── FollowerDirectory.svc.cs
│ │ │ ├── IFollowerDirectory.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ └── Web.config
│ │ ├── Discovery/
│ │ │ ├── Discovery.csproj
│ │ │ ├── IRecommender.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Recommender.svc
│ │ │ ├── Recommender.svc.cs
│ │ │ ├── Service References/
│ │ │ │ └── AccountManagement/
│ │ │ │ ├── Discovery.AccountManagement.Follower.datasource
│ │ │ │ ├── FollowerDirectory.disco
│ │ │ │ ├── FollowerDirectory.wsdl
│ │ │ │ ├── FollowerDirectory.xsd
│ │ │ │ ├── FollowerDirectory1.xsd
│ │ │ │ ├── FollowerDirectory2.xsd
│ │ │ │ ├── FollowerDirectory3.xsd
│ │ │ │ ├── Reference.cs
│ │ │ │ ├── Reference.svcmap
│ │ │ │ ├── configuration.svcinfo
│ │ │ │ └── configuration91.svcinfo
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ └── Web.config
│ │ └── PPPDDD.SOAP.SocialMedia.sln
│ └── README.md
├── 14 - Introducing Domain Modelling Patterns and Best Practices/
│ └── README.md
├── 15 - Value Objects/
│ ├── Examples/
│ │ ├── BankAccount/
│ │ │ └── BankAccount.cs
│ │ ├── Examples.csproj
│ │ ├── Model/
│ │ │ ├── BankAccount.cs
│ │ │ ├── Customer.cs
│ │ │ ├── Meters.cs
│ │ │ ├── MicroTypes.cs
│ │ │ ├── Money.cs
│ │ │ ├── Name.cs
│ │ │ └── ValueObject.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── app.config
│ │ └── packages.config
│ ├── PPPDDD.Chap16.ValueObjects.sln
│ ├── README.md
│ └── Tests/
│ ├── Tests/
│ │ ├── Combining_money_tests.cs
│ │ ├── DateTime_immutability_tests.cs
│ │ ├── Denormalized_persistence_example.cs
│ │ ├── Meters_equality_tests.cs
│ │ ├── Micro_types_example_tests.cs
│ │ ├── Name_validation_tests.cs
│ │ ├── Normalized_persistence_example.cs
│ │ ├── Persistence_format_examples.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Tests.csproj
│ │ ├── TimeSpan_factory_method_tests.cs
│ │ ├── app.config
│ │ └── packages.config
│ └── Tests.sln
├── 16 - Entities/
│ ├── PPPDDDChap17.Entities.Examples/
│ │ ├── Customer.cs
│ │ ├── Model/
│ │ │ ├── Book.cs
│ │ │ ├── Dice.cs
│ │ │ ├── FlightBooking.cs
│ │ │ ├── GlobalCounter.cs
│ │ │ ├── HolidayBooking.cs
│ │ │ ├── Hotel.cs
│ │ │ ├── OnlineTakeawayOrder.cs
│ │ │ ├── SoccerMatch.cs
│ │ │ └── Vehicle.cs
│ │ ├── PPPDDDChap17.Entities.Examples.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── PPPDDDChap17.Entities.Tests/
│ │ ├── BookTests.cs
│ │ ├── DatastoreIdGenerationExample.cs
│ │ ├── FlightBookingTests.cs
│ │ ├── GlobalCounterTest.cs
│ │ ├── HolidayBookingTest.cs
│ │ ├── HotelTests.cs
│ │ ├── PPPDDDChap17.Entities.Tests.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── app.config
│ │ └── packages.config
│ ├── PPPDDDChap17.Entities.sln
│ └── README.md
├── 17 - Domain Services/
│ ├── PPPDDDChap18.DomainServices/
│ │ ├── Insurance/
│ │ │ ├── Application/
│ │ │ │ └── MultiMemberInsurancePremium.cs
│ │ │ └── Model/
│ │ │ ├── IMemberRepository.cs
│ │ │ ├── IMultiMemberPremiumCalculator.cs
│ │ │ ├── IPolicyRepository.cs
│ │ │ ├── Member.cs
│ │ │ ├── Policy.cs
│ │ │ └── Quote.cs
│ │ ├── OnlineDating/
│ │ │ └── Model/
│ │ │ ├── BloodType.cs
│ │ │ ├── CompatibilityRating.cs
│ │ │ ├── LoveSeeker.cs
│ │ │ └── RomanceOMeter.cs
│ │ ├── OnlineGaming/
│ │ │ ├── WithDomainServices/
│ │ │ │ └── Model/
│ │ │ │ ├── Competitor.cs
│ │ │ │ ├── IGame.cs
│ │ │ │ ├── IGameRewardPolicy.cs
│ │ │ │ ├── IGameScoringPolicy.cs
│ │ │ │ ├── IScoreFinder.cs
│ │ │ │ ├── OnlineDeathmatch.cs
│ │ │ │ ├── Ranking.cs
│ │ │ │ └── Score.cs
│ │ │ └── WithoutDomainServices/
│ │ │ └── Model/
│ │ │ ├── Competitor.cs
│ │ │ ├── OnlineDeathmatch.cs
│ │ │ ├── Ranking.cs
│ │ │ └── Score.cs
│ │ ├── PPPDDDChap18.DomainServices.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── RestaurantBooking/
│ │ │ └── Model/
│ │ │ ├── BookingDetails.cs
│ │ │ ├── Customer.cs
│ │ │ ├── DomainEvents.cs
│ │ │ ├── Events/
│ │ │ │ └── BookingConfirmedByCustomer.cs
│ │ │ ├── Handlers/
│ │ │ │ └── NotifyRestaurantOnCustomerBookingConfirmation.cs
│ │ │ ├── IHandleEvents.cs
│ │ │ ├── Restaurant.cs
│ │ │ ├── RestaurantBooking.cs
│ │ │ ├── RestaurantBookingFactory.cs
│ │ │ ├── RestaurantBookingRepository.cs
│ │ │ └── RestaurantNotifier.cs
│ │ └── Shipping/
│ │ ├── Application/
│ │ │ └── ShippingRouteFinder.cs
│ │ └── Model/
│ │ └── IShippingRouteFinder.cs
│ ├── PPPDDDChap18.DomainServices.sln
│ └── README.md
├── 18 - Domain Events/
│ ├── .nuget/
│ │ ├── NuGet.Config
│ │ └── NuGet.targets
│ ├── DomainEvents.OnlineTakeawayStore.sln
│ ├── OnlineTakeawayStore.NServiceBus/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ ├── ConfirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.NServiceBus.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── OnlineTakeawayStore.NativeEvents/
│ │ ├── Application/
│ │ │ ├── CofirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.NativeEvents.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── OnlineTakeawayStore.ReturnEvents/
│ │ ├── Application/
│ │ │ └── ConfirmDeliveryOfOrder.cs
│ │ ├── Infrastructure/
│ │ │ └── IEventDispatcher.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.ReturnEvents.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── OnlineTakeawayStore.StaticDomainEvents/
│ │ ├── Application/
│ │ │ ├── ConfirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Infrastructure/
│ │ │ └── DomainEvents.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.StaticDomainEvents.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ └── OnlineTakeawayStore.Tests/
│ ├── OnlineTakeawayStore.Tests.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── ServiceLayerTestExamples/
│ │ └── Delivery_guarantee_failed.cs
│ ├── UnitTestExamples/
│ │ ├── ReturnDomainEvents.cs
│ │ └── StaticDomainEvents.cs
│ └── packages.config
├── 19 - Aggregates/
│ ├── PPPDDDChap19.eBidder/
│ │ ├── PPPDDDChap19.eBidder.Common/
│ │ │ ├── PPPDDDChap19.eBidder.Common.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── PPPDDDChap19.eBidder.Disputes/
│ │ │ ├── PPPDDDChap19.eBidder.Disputes.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ ├── PPPDDDChap19.eBidder.Listings/
│ │ │ ├── Application/
│ │ │ │ ├── Auctions/
│ │ │ │ │ └── BusinessUseCases/
│ │ │ │ │ ├── AuctionCreation.cs
│ │ │ │ │ ├── BidOnAuctionService.cs
│ │ │ │ │ └── CreateAuctionService.cs
│ │ │ │ ├── QandA/
│ │ │ │ │ └── BusinessUseCases/
│ │ │ │ │ ├── Answer.cs
│ │ │ │ │ ├── AnswerAQuestionService.cs
│ │ │ │ │ └── AskAQuestionService.cs
│ │ │ │ └── Watching/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── UnWatchItem.cs
│ │ │ │ ├── WatchItem.cs
│ │ │ │ └── WatchItemService.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── ListingFormat/
│ │ │ │ │ ├── Auctions/
│ │ │ │ │ │ ├── Auction.cs
│ │ │ │ │ │ ├── AuctionId.cs
│ │ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ │ ├── BidHistory/
│ │ │ │ │ │ │ ├── Bid.cs
│ │ │ │ │ │ │ └── IBidHistoryRepository.cs
│ │ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ │ ├── Offer.cs
│ │ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ │ ├── Price.cs
│ │ │ │ │ │ └── WinningBid.cs
│ │ │ │ │ └── FixedPriceListings/
│ │ │ │ │ ├── FixedPriceListing.cs
│ │ │ │ │ ├── IFixedPriceListingRepository.cs
│ │ │ │ │ └── Offers/
│ │ │ │ │ └── BestOffer.cs
│ │ │ │ ├── Listings/
│ │ │ │ │ ├── FormatType.cs
│ │ │ │ │ ├── IListingRepository.cs
│ │ │ │ │ ├── Listing.cs
│ │ │ │ │ ├── ListingFormat.cs
│ │ │ │ │ ├── ListingRevision.cs
│ │ │ │ │ └── ListingRevisionEvent.cs
│ │ │ │ ├── Members/
│ │ │ │ │ ├── IMemberService.cs
│ │ │ │ │ └── Member.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ ├── QandA/
│ │ │ │ │ ├── Answer.cs
│ │ │ │ │ ├── IQuestionRepository.cs
│ │ │ │ │ ├── Question.cs
│ │ │ │ │ ├── QuestionAnswered.cs
│ │ │ │ │ └── QuestionSubmitted.cs
│ │ │ │ ├── Sellers/
│ │ │ │ │ ├── ISellerService.cs
│ │ │ │ │ └── Seller.cs
│ │ │ │ └── WatchLists/
│ │ │ │ ├── IWatchedItemRepository.cs
│ │ │ │ └── WatchedItem.cs
│ │ │ ├── PPPDDDChap19.eBidder.Listings.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── PPPDDDChap19.eBidder.Membership/
│ │ │ ├── Model/
│ │ │ │ └── Members/
│ │ │ │ ├── IMemberRepository.cs
│ │ │ │ └── Member.cs
│ │ │ ├── PPPDDDChap19.eBidder.Membership.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ ├── PPPDDDChap19.eBidder.SellerAccount/
│ │ │ ├── PPPDDDChap19.eBidder.SellerAccount.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ └── PPPDDDChap19.eBidder.sln
│ └── README.md
├── 20 - Factories/
│ └── README.md
├── 21 - Repositories/
│ ├── DDDPPP.Chap21.EFExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.EFExample.Application/
│ │ │ ├── App.config
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.EFExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionDatabaseContext.cs
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── DataModel/
│ │ │ │ │ ├── AuctionDTO.cs
│ │ │ │ │ └── BidDTO.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── Mapping/
│ │ │ │ │ ├── AuctionMap.cs
│ │ │ │ │ └── BidMap.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AuctionSnapshot.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoneySnapshot.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ ├── WinningBid.cs
│ │ │ │ │ └── WinningBidSnapshot.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── BidHistory.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.EFExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.EFExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.EFExample.sln
│ ├── DDDPPP.Chap21.MicroORM/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.MicroORM.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.MicroORM.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── ConcurrencyException.cs
│ │ │ │ ├── DataModel/
│ │ │ │ │ ├── AuctionDTO.cs
│ │ │ │ │ └── BidDTO.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IAggregateDataModel.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── IUnitOfWork.cs
│ │ │ │ ├── IUnitOfWorkRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ ├── UnitOfWork.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AuctionSnapshot.cs
│ │ │ │ │ ├── Bid.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoneySnapshot.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ ├── WinningBid.cs
│ │ │ │ │ └── WinningBidSnapshot.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── BidHistory.cs
│ │ │ │ ├── HistoricalBid.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.MicroORM.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.MicroORM.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.MicroORM.sln
│ ├── DDDPPP.Chap21.NHibernateExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.NHibernateExample.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.NHibernateExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── Auction.hbm.xml
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── Bid.hbm.xml
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ └── WinningBid.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.NHibernateExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.NHibernateExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.NHibernateExample.sln
│ ├── DDDPPP.Chap21.RavenDBExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.RavenDBExample.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── BidHistory_NumberOfBids.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ └── WinningBid.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── BidHistory.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.RavenDBExample.Application.Tests/
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Application.Tests.csproj
│ │ │ ├── Domain/
│ │ │ │ └── AutomaticBidderScenarios.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.RavenDBExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.RavenDBExample.sln
│ └── Database_script_for_examples.sql
├── 22 - Event Sourcing/
│ ├── PPPDDD.Chap23.EventSourcing.EventStoreDemo/
│ │ ├── GetEventStore.cs
│ │ ├── ImportTestData.cs
│ │ ├── PPPDDD.Chap23.EventSourcing.EventStoreDemo.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Tests.cs
│ │ └── packages.config
│ ├── PPPDDDChap22/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── PPPDDDChap23.EventSourcing.Application/
│ │ │ ├── Application/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── CreateAccount.cs
│ │ │ │ ├── RecordPhonecall.cs
│ │ │ │ └── TopUpCredit.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── EventSourcedAggregate.cs
│ │ │ │ ├── EventStore.cs
│ │ │ │ ├── EventStream.cs
│ │ │ │ ├── EventWrapper.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── PayAsYouGoAccountRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ └── PayAsYouGo/
│ │ │ │ ├── AccountCreated.cs
│ │ │ │ ├── CreditAdded.cs
│ │ │ │ ├── CreditSatisfiesFreeCallAllowanceOffer.cs
│ │ │ │ ├── FreeCallAllowance.cs
│ │ │ │ ├── IPayAsYouGoAccountRepository.cs
│ │ │ │ ├── Minutes.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── PayAsYouGoAccount.cs
│ │ │ │ ├── PayAsYouGoAccountSnapshot.cs
│ │ │ │ ├── PayAsYouGoInclusiveMinutesOffer.cs
│ │ │ │ ├── PhoneCall.cs
│ │ │ │ ├── PhoneCallCharged.cs
│ │ │ │ ├── PhoneCallCosting.cs
│ │ │ │ └── PhoneNumber.cs
│ │ │ ├── PPPDDDChap23.EventSourcing.Application.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests/
│ │ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.Presentation/
│ │ │ ├── App.config
│ │ │ ├── PPPDDDChap23.EventSourcing.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDDChap23.EventSourcing.sln
│ ├── PPPDDDChap23.EventSourcing/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── PPPDDDChap23.EventSourcing.Application/
│ │ │ ├── Application/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── CreateAccount.cs
│ │ │ │ ├── RecordPhonecall.cs
│ │ │ │ └── TopUpCredit.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── DomainEvent.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── EventSourcedAggregate.cs
│ │ │ │ ├── EventStore.cs
│ │ │ │ ├── EventStream.cs
│ │ │ │ ├── EventWrapper.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── PasAsYouGoSnapshotJob.cs
│ │ │ │ ├── PayAsYouGoAccountRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ └── PayAsYouGo/
│ │ │ │ ├── AccountCreated.cs
│ │ │ │ ├── CreditAdded.cs
│ │ │ │ ├── CreditSatisfiesFreeCallAllowanceOffer.cs
│ │ │ │ ├── FreeCallAllowance.cs
│ │ │ │ ├── IPayAsYouGoAccountRepository.cs
│ │ │ │ ├── Minutes.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── PayAsYouGoAccount.cs
│ │ │ │ ├── PayAsYouGoAccountSnapshot.cs
│ │ │ │ ├── PayAsYouGoInclusiveMinutesOffer.cs
│ │ │ │ ├── PhoneCall.cs
│ │ │ │ ├── PhoneCallCharged.cs
│ │ │ │ ├── PhoneCallCosting.cs
│ │ │ │ └── PhoneNumber.cs
│ │ │ ├── PPPDDDChap23.EventSourcing.Application.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests/
│ │ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests.csproj
│ │ │ ├── PayAsYouGoAccount_Tests.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.Presentation/
│ │ │ ├── App.config
│ │ │ ├── PPPDDDChap23.EventSourcing.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDDChap23.EventSourcing.sln
│ └── README.md
├── 23 - Architecting Application User Interfaces/
│ ├── PPPDDD.NonDist.UIComp/
│ │ ├── PPPDDD.NonDist.UIComp/
│ │ │ ├── App_Start/
│ │ │ │ └── RouteConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── CatalogueBoundedContextController.cs
│ │ │ │ ├── HomeController.cs
│ │ │ │ ├── PricingBoundedContextController.cs
│ │ │ │ └── ShippingBoundedContextController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── PPPDDD.NonDist.UIComp.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Scripts/
│ │ │ │ ├── jquery-1.10.2.intellisense.js
│ │ │ │ ├── jquery-1.10.2.js
│ │ │ │ ├── jquery.validate-vsdoc.js
│ │ │ │ ├── jquery.validate.js
│ │ │ │ └── jquery.validate.unobtrusive.js
│ │ │ ├── Views/
│ │ │ │ ├── CatalogBoundedContext/
│ │ │ │ │ └── ItemInBasket.cshtml
│ │ │ │ ├── Home/
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── PricingBoundedContext/
│ │ │ │ │ └── Price.cshtml
│ │ │ │ ├── ShippingBoundedContext/
│ │ │ │ │ └── DeliveryOptions.cshtml
│ │ │ │ └── web.config
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPDDD.NonDist.UIComp.sln
│ ├── PPPSSS.Dist.UIComp/
│ │ ├── PPPSSS.Dist.UIComp/
│ │ │ ├── App_Start/
│ │ │ │ └── RouteConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── HolidaysController.cs
│ │ │ │ ├── HomeController.cs
│ │ │ │ ├── PromotionsController.cs
│ │ │ │ └── RecommendationsController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── PPPSSS.Dist.UIComp.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Scripts/
│ │ │ │ ├── jquery-1.10.2.intellisense.js
│ │ │ │ ├── jquery-1.10.2.js
│ │ │ │ ├── jquery.validate-vsdoc.js
│ │ │ │ ├── jquery.validate.js
│ │ │ │ ├── jquery.validate.unobtrusive.js
│ │ │ │ └── pppddd-application.js
│ │ │ ├── Views/
│ │ │ │ ├── Home/
│ │ │ │ │ └── Index.cshtml
│ │ │ │ └── web.config
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPSSS.Dist.UIComp.sln
│ └── README.md
├── 24 - CQRS An Architecture of A Bounded Context/
│ └── README.md
├── 25 - Commands Application Service Patterns for processing Business Use Cases/
│ ├── .nuget/
│ │ ├── NuGet.Config
│ │ └── NuGet.targets
│ ├── DDDPPP.Chap20.CommandHandler.Application/
│ │ ├── Application/
│ │ │ ├── Api.cs
│ │ │ ├── Commands/
│ │ │ │ ├── AddProductToBasketCommand.cs
│ │ │ │ ├── ApplyCouponToBasketCommand.cs
│ │ │ │ ├── CreateABasketCommand.cs
│ │ │ │ ├── RemoveOfferFromBasketCommand.cs
│ │ │ │ ├── RemoveProductFromBasketCommand.cs
│ │ │ │ └── UpdateBasketDeliveryCountry.cs
│ │ │ ├── Contract/
│ │ │ │ └── _readme.txt
│ │ │ ├── Handlers/
│ │ │ │ ├── AddProductToBasketCommandHandler.cs
│ │ │ │ ├── ApplyCouponToBasketCommandHandler.cs
│ │ │ │ ├── CreateABasketCommandHandler.cs
│ │ │ │ ├── RemoveCouponFromBasketCommandHandler.cs
│ │ │ │ └── RemoveProductFromBasketCommandHandler.cs
│ │ │ └── ReadModel/
│ │ │ └── Product.cs
│ │ ├── CommandHandlerRegistry.cs
│ │ ├── DDDPPP.Chap20.CommandHandler.Application.csproj
│ │ ├── DomainEventHandlerRegistery.cs
│ │ ├── Infrastructure/
│ │ │ ├── BasketRepository.cs
│ │ │ ├── Mapping/
│ │ │ │ ├── Basket.hbm.xml
│ │ │ │ ├── BasketItem.hbm.xml
│ │ │ │ ├── BasketVoucher.hbm.xml
│ │ │ │ ├── Offer.hbm.xml
│ │ │ │ └── Product.hbm.xml
│ │ │ └── PromotionsRepository.cs
│ │ ├── Model/
│ │ │ ├── Baskets/
│ │ │ │ ├── Basket.cs
│ │ │ │ ├── BasketItem.cs
│ │ │ │ ├── BasketItemFactory.cs
│ │ │ │ ├── BasketPricingBreakdown.cs
│ │ │ │ ├── BasketPricingService.cs
│ │ │ │ ├── Events/
│ │ │ │ │ ├── BasketCreated.cs
│ │ │ │ │ ├── BasketModified.cs
│ │ │ │ │ ├── BasketPriceChanged.cs
│ │ │ │ │ └── CouponNotApplicableForBasketItems.cs
│ │ │ │ ├── IBasketPricingService.cs
│ │ │ │ ├── IBasketRepository.cs
│ │ │ │ ├── NonNegativeQuantity.cs
│ │ │ │ └── ProductSnapshot.cs
│ │ │ └── Promotions/
│ │ │ ├── Coupon.cs
│ │ │ ├── CouponIssues.cs
│ │ │ ├── ICouponPolicy.cs
│ │ │ ├── IPromotionsRepository.cs
│ │ │ ├── Promotion.cs
│ │ │ └── PromotionNotApplicableException.cs
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── DDDPPP.Chap20.CommandHandler.Presentation/
│ │ ├── Content/
│ │ │ ├── Site.css
│ │ │ └── themes/
│ │ │ └── base/
│ │ │ ├── jquery-ui.css
│ │ │ ├── jquery.ui.accordion.css
│ │ │ ├── jquery.ui.all.css
│ │ │ ├── jquery.ui.autocomplete.css
│ │ │ ├── jquery.ui.base.css
│ │ │ ├── jquery.ui.button.css
│ │ │ ├── jquery.ui.core.css
│ │ │ ├── jquery.ui.datepicker.css
│ │ │ ├── jquery.ui.dialog.css
│ │ │ ├── jquery.ui.progressbar.css
│ │ │ ├── jquery.ui.resizable.css
│ │ │ ├── jquery.ui.selectable.css
│ │ │ ├── jquery.ui.slider.css
│ │ │ ├── jquery.ui.tabs.css
│ │ │ └── jquery.ui.theme.css
│ │ ├── Controllers/
│ │ │ ├── AccountController.cs
│ │ │ └── HomeController.cs
│ │ ├── DDDPPP.Chap20.CommandHandler.Presentation.csproj
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── Models/
│ │ │ └── AccountModels.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Scripts/
│ │ │ ├── MicrosoftAjax.debug.js
│ │ │ ├── MicrosoftAjax.js
│ │ │ ├── MicrosoftMvcAjax.debug.js
│ │ │ ├── MicrosoftMvcAjax.js
│ │ │ ├── MicrosoftMvcValidation.debug.js
│ │ │ ├── MicrosoftMvcValidation.js
│ │ │ ├── jquery-1.7.1.intellisense.js
│ │ │ ├── jquery-1.7.1.js
│ │ │ ├── jquery-ui-1.8.20.js
│ │ │ ├── jquery.unobtrusive-ajax.js
│ │ │ ├── jquery.validate-vsdoc.js
│ │ │ ├── jquery.validate.js
│ │ │ ├── jquery.validate.unobtrusive.js
│ │ │ └── modernizr-2.5.3.js
│ │ ├── Views/
│ │ │ ├── Account/
│ │ │ │ ├── ChangePassword.aspx
│ │ │ │ ├── ChangePasswordSuccess.aspx
│ │ │ │ ├── LogOn.aspx
│ │ │ │ └── Register.aspx
│ │ │ ├── Home/
│ │ │ │ ├── About.aspx
│ │ │ │ └── Index.aspx
│ │ │ ├── Shared/
│ │ │ │ ├── Error.aspx
│ │ │ │ ├── LogOnUserControl.ascx
│ │ │ │ └── Site.Master
│ │ │ └── Web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── DDDPPP.Chap20.CommandHandler.sln
│ ├── PPPDDD.ApplicationServices.Gambling/
│ │ ├── App_Start/
│ │ │ └── RouteConfig.cs
│ │ ├── ApplicationServices/
│ │ │ ├── 1_validation/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 2_transaction/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 3_error_handling/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 4_logging_metrics/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 5_authentication/
│ │ │ │ └── AdminRecommendAFriendService.cs
│ │ │ ├── 6_communication/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── AsyncAwait/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── CommandProcessor/
│ │ │ │ ├── BloatedRecommendAFriendService.cs
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── CommandProcessorChained/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── FrameworkHooks/
│ │ │ │ ├── ErrorFilter.cs
│ │ │ │ └── TransactionFilter.cs
│ │ │ ├── PublishSubscribe/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── PublishSubscribeAsync/
│ │ │ │ └── ReferAFriend.cs
│ │ │ └── RequestReply/
│ │ │ └── RecommendAFriend.cs
│ │ ├── Controllers/
│ │ │ └── RecommendAFriendController.cs
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── PPPDDD.ApplicationServices.RecommendAFriend.csproj
│ │ ├── PPPDDD.ApplicationServices.RecommendAFriend.sln
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ └── web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── PPPDDD.ApplicationServices.RecommendAFriend.sln
│ └── PPPDDD.ApplicationServices.Tests/
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Refer_a_friend.cs
│ ├── Tests.csproj
│ └── packages.config
├── 26 - Queries Domain Reporting/
│ ├── PPPDDD.Reporting/
│ │ ├── App_Start/
│ │ │ └── RouteConfig.cs
│ │ ├── Controllers/
│ │ │ ├── DealershipPerformanceReportController.cs
│ │ │ ├── DealershipReportUsingMediatorController.cs
│ │ │ ├── DenormalizedLoyaltyReportController.cs
│ │ │ ├── HealthcareEventProjectionReportController.cs
│ │ │ └── LoyaltyReportQueryingDatastoreController.cs
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── PPPDDD.Reporting.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ └── web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── PPPDDD.Reporting.sln
│ ├── README.md
│ └── SportsStoreDatabase/
│ ├── LoyaltyAccounts.sql
│ ├── LoyaltySettings.sql
│ ├── Orders.sql
│ ├── TestData.sql
│ ├── Users.sql
│ └── sportsstoredatabase.sqlproj
├── README.md
└── eBidder Case Study/
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Roslyn cache directories
*.ide/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# If using the old MSBuild-Integrated Package Restore, uncomment this:
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Application/BidOnAuctionService.cs
================================================
using System;
using PPPDDDChap05.DomainModel.Model;
namespace PPPPDDDChap05.DomainModel.Application
{
public class BidOnAuctionService
{
private IAuctionRepository _auctions;
public BidOnAuctionService(IAuctionRepository auctions)
{
_auctions = auctions;
}
public void Bid(Guid auctionId, Guid memberId, decimal amount, DateTime dateOfBid)
{
var auction = _auctions.FindBy(auctionId);
var bidAmount = new Money(amount);
var offer = new Bid(memberId, bidAmount, dateOfBid);
auction.PlaceBidFor(offer, dateOfBid);
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Auction.cs
================================================
using System;
using System.Collections.Generic;
namespace PPPDDDChap05.DomainModel.Model
{
public class Auction
{
private Auction() { }
public Auction(Guid id, Guid listingId, Money startingPrice, DateTime endsAt)
{
if (id == Guid.Empty)
throw new ArgumentNullException("Auction Id cannot be null");
if (startingPrice == null)
throw new ArgumentNullException("Starting Price cannot be null");
if (endsAt == DateTime.MinValue)
throw new ArgumentNullException("EndsAt must have a value");
if (listingId == Guid.Empty)
throw new ArgumentNullException("Lisitng Id cannot be null");
Id = id;
ListingId = listingId;
StartingPrice = startingPrice;
EndsAt = endsAt;
}
private Guid Id { get; set; }
private IList<HistoricalBid> Bids { get; set; }
private Guid ListingId { get; set; }
private DateTime EndsAt { get; set; }
private Money StartingPrice { get; set; }
private WinningBid WinningBid { get; set; }
private bool HasEnded { get; set; }
private bool StillInProgress(DateTime currentTime)
{
return (EndsAt > currentTime);
}
public bool CanPlaceBid()
{
return HasEnded == false;
}
public void PlaceBidFor(Bid bid, DateTime currentTime)
{
if (StillInProgress(currentTime))
{
if (IsFirstBid())
RegisterFirst(bid);
else if (BidderIsIncreasingMaximumBid(bid))
WinningBid = WinningBid.RaiseMaximumBidTo(bid.MaximumBid);
else if (WinningBid.CanMeetOrExceedBidIncrement(bid.MaximumBid))
{
Place(WinningBid.DetermineWinningBidIncrement(bid));
}
}
}
private bool BidderIsIncreasingMaximumBid(Bid bid)
{
return WinningBid.WasMadeBy(bid.Bidder) && bid.MaximumBid.IsGreaterThan(WinningBid.MaximumBid);
}
private bool IsFirstBid()
{
return WinningBid == null;
}
private void RegisterFirst(Bid bid)
{
if (IsFirstBid() && bid.MaximumBid.IsGreaterThanOrEqualTo(StartingPrice))
Place(new WinningBid(bid.Bidder, bid.MaximumBid, StartingPrice, bid.TimeOfOffer));
}
private void Place(WinningBid newBid)
{
Bids.Add(new HistoricalBid(newBid.Bidder, newBid.MaximumBid, newBid.TimeOfBid));
WinningBid = newBid;
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Bid.cs
================================================
using System;
using System.Collections.Generic;
namespace PPPDDDChap05.DomainModel.Model
{
public class Bid
{
public Bid(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
{
if (bidderId == Guid.Empty)
throw new ArgumentNullException("BidderId cannot be null");
if (maximumBid == null)
throw new ArgumentNullException("MaximumBid cannot be null");
if (timeOfOffer == DateTime.MinValue)
throw new ArgumentNullException("Time of Offer must have a value");
Bidder = bidderId;
MaximumBid = maximumBid;
TimeOfOffer = timeOfOffer;
}
public Guid Bidder { get; private set; }
public Money MaximumBid { get; private set; }
public DateTime TimeOfOffer { get; private set; }
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/ClassDiagram.cd
================================================
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="PPPDDDChap05.DomainModel.Model.Auction">
<Position X="0.5" Y="0.5" Width="2.75" />
<Members>
<Method Name="BidderIsIncreasingMaximumBid" Hidden="true" />
<Method Name="FirstOffer" Hidden="true" />
<Method Name="Place" Hidden="true" />
<Method Name="PlaceABidForTheFirst" Hidden="true" />
<Method Name="StillInProgress" Hidden="true" />
</Members>
<AssociationLine Name="StartingPrice" Type="PPPDDDChap05.DomainModel.Model.Money">
<MemberNameLabel ManuallyPlaced="true" ManuallySized="true">
<Position X="0.568" Y="0.268" Height="0.182" Width="1.403" />
</MemberNameLabel>
</AssociationLine>
<TypeIdentifier>
<HashCode>AAACAABAEQgABAAAAAAABAAAACgAAAAABGCAAABAAAA=</HashCode>
<FileName>Model\Auction.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="StartingPrice" />
<Property Name="WinningBid" />
</ShowAsAssociation>
<ShowAsCollectionAssociation>
<Property Name="Bids" />
</ShowAsCollectionAssociation>
</Class>
<Class Name="PPPDDDChap05.DomainModel.Model.Money">
<Position X="4.5" Y="4.25" Width="2.25" />
<Members>
<Method Name="ThrowExceptionIfNotValid" Hidden="true" />
</Members>
<TypeIdentifier>
<HashCode>AAIAAAAAAAAAAAAEAAAAgAAAAAQAAAAAAACoAAAAAAA=</HashCode>
<FileName>Model\Money.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PPPDDDChap05.DomainModel.Model.Bid">
<Position X="0.5" Y="4.5" Width="1.75" />
<TypeIdentifier>
<HashCode>AAAAAAAAAQAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\Bid.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="MaximumBid" />
</ShowAsAssociation>
</Class>
<Class Name="PPPDDDChap05.DomainModel.Model.Price">
<Position X="8.5" Y="0.5" Width="1.75" />
<AssociationLine Name="Amount" Type="PPPDDDChap05.DomainModel.Model.Money">
<MemberNameLabel ManuallyPlaced="true">
<Position X="0.81" Y="0.127" />
</MemberNameLabel>
</AssociationLine>
<TypeIdentifier>
<HashCode>AAAABAAAAAAAAAAAAAAAAACAAgAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\Price.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="Amount" />
</ShowAsAssociation>
</Class>
<Class Name="PPPDDDChap05.DomainModel.Model.WinningBid">
<Position X="4.5" Y="0.5" Width="2.25" />
<Members>
<Method Name="CreateNewBid" Hidden="true" />
<Method Name="DetermineWinnerFromProxyBidding" Hidden="true" />
<Method Name="MaxBidCanBeExceededBy" Hidden="true" />
</Members>
<AssociationLine Name="MaximumBid" Type="PPPDDDChap05.DomainModel.Model.Money">
<MemberNameLabel ManuallyPlaced="true" ManuallySized="true">
<Position X="-2.065" Y="0.077" Height="0.182" Width="1.862" />
</MemberNameLabel>
</AssociationLine>
<AssociationLine Name="CurrentAuctionPrice" Type="PPPDDDChap05.DomainModel.Model.Price">
<MemberNameLabel ManuallyPlaced="true" ManuallySized="true">
<Position X="0.152" Y="0.135" Height="0.182" Width="1.477" />
</MemberNameLabel>
</AssociationLine>
<TypeIdentifier>
<HashCode>BAAIAAAAAQAAAgAhAAAAIAIAAgAAAAUAAAAAAAAEBAA=</HashCode>
<FileName>Model\WinningBid.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="MaximumBid" />
<Property Name="CurrentAuctionPrice" />
</ShowAsAssociation>
</Class>
<Class Name="PPPDDDChap05.DomainModel.Model.HistoricalBid" Collapsed="true">
<Position X="0.5" Y="3.5" Width="1.75" />
<TypeIdentifier>
<HashCode>AAAAAAAAAQAAAAABAAAAAACAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\HistoricalBid.cs</FileName>
</TypeIdentifier>
</Class>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/HistoricalBid.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.DomainModel.Model
{
public class HistoricalBid
{
public HistoricalBid(Guid bidder, Money Bid, DateTime timeOfBid)
{
}
public Guid Bidder {get; set;}
public Money Amount {get; set;}
public DateTime TimeOfBid { get; set; }
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/IAuctionRepository.cs
================================================
using System;
namespace PPPDDDChap05.DomainModel.Model
{
public interface IAuctionRepository
{
void Add(Auction item);
Auction FindBy(Guid Id);
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Money.cs
================================================
using System;
using System.Collections.Generic;
namespace PPPDDDChap05.DomainModel.Model
{
public class Money
{
protected decimal Value { get; set; }
public Money()
: this(0m)
{
}
public Money(decimal value)
{
ThrowExceptionIfNotValid(value);
Value = value;
}
private void ThrowExceptionIfNotValid(decimal value)
{
if (value % 0.01m != 0)
throw new InvalidOperationException("There cannot be more than two decimal places.");
if(value < 0)
throw new InvalidOperationException("Money cannot be a negative value.");
}
public Money Add(Money money)
{
return new Money(Value + money.Value);
}
public bool IsGreaterThan(Money money)
{
return this.Value > money.Value;
}
public bool IsGreaterThanOrEqualTo(Money money)
{
return this.Value > money.Value || this.Equals(money);
}
public bool IsLessThanOrEqualTo(Money money)
{
return this.Value < money.Value || this.Equals(money);
}
public override string ToString()
{
return string.Format("{0}", Value);
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Price.cs
================================================
using System;
using System.Collections.Generic;
namespace PPPDDDChap05.DomainModel.Model
{
public class Price
{
private Price()
{ }
public Price(Money amount)
{
if (amount == null)
throw new ArgumentNullException("Amount cannot be null");
Amount = amount;
}
public Money Amount { get; private set; }
public Money BidIncrement()
{
if (Amount.IsGreaterThanOrEqualTo(new Money(0.01m)) && Amount.IsLessThanOrEqualTo(new Money(0.99m)))
return Amount.Add(new Money(0.05m));
if (Amount.IsGreaterThanOrEqualTo(new Money(1.00m)) && Amount.IsLessThanOrEqualTo(new Money(4.99m)))
return Amount.Add(new Money(0.20m));
if (Amount.IsGreaterThanOrEqualTo(new Money(5.00m)) && Amount.IsLessThanOrEqualTo(new Money(14.99m)))
return Amount.Add(new Money(0.50m));
return Amount.Add(new Money(1.00m));
}
public bool CanBeExceededBy(Money offer)
{
return offer.IsGreaterThanOrEqualTo(BidIncrement());
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/WinningBid.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
namespace PPPDDDChap05.DomainModel.Model
{
public class WinningBid
{
private WinningBid() { }
public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime timeOfBid)
{
if (bidder == Guid.Empty)
throw new ArgumentNullException("Bidder cannot be null");
if (maximumBid == null)
throw new ArgumentNullException("MaximumBid cannot be null");
if (timeOfBid == DateTime.MinValue)
throw new ArgumentNullException("TimeOfBid must have a value");
Bidder = bidder;
MaximumBid = maximumBid;
TimeOfBid = timeOfBid;
CurrentAuctionPrice = new Price(bid);
}
public Guid AuctionId { get; private set; }
public Guid Bidder { get; private set; }
public Money MaximumBid { get; private set; }
public DateTime TimeOfBid { get; private set; }
public Price CurrentAuctionPrice { get; private set; }
public WinningBid RaiseMaximumBidTo(Money newAmount)
{
if (newAmount.IsGreaterThan(MaximumBid))
return new WinningBid(Bidder, newAmount, CurrentAuctionPrice.Amount, DateTime.Now);
else
throw new ApplicationException("Maximum bid increase must be larger than current maximum bid.");
}
public bool WasMadeBy(Guid bidder)
{
return Bidder.Equals(bidder);
}
public WinningBid DetermineWinningBidIncrement(Bid newbid)
{
if (this.CanMeetOrExceedBidIncrement(this.MaximumBid) && this.CanMeetOrExceedBidIncrement(newbid.MaximumBid))
{
return DetermineWinnerFromProxyBidding(this, newbid);
}
else if (this.CanMeetOrExceedBidIncrement(newbid.MaximumBid))
{
return CreateNewBid(newbid.Bidder, CurrentAuctionPrice.BidIncrement(), newbid.MaximumBid, newbid.TimeOfOffer);
}
else
return this;
}
private WinningBid DetermineWinnerFromProxyBidding(WinningBid winningBid, Bid newbid)
{
WinningBid nextIncrement;
if (winningBid.MaxBidCanBeExceededBy(newbid.MaximumBid))
{
nextIncrement = CreateNewBid(this.Bidder, this.MaximumBid, this.MaximumBid, this.TimeOfBid);
if (nextIncrement.CanMeetOrExceedBidIncrement(newbid.MaximumBid))
return CreateNewBid(newbid.Bidder, nextIncrement.CurrentAuctionPrice.BidIncrement(), newbid.MaximumBid, newbid.TimeOfOffer);
else
return CreateNewBid(newbid.Bidder, newbid.MaximumBid, newbid.MaximumBid, newbid.TimeOfOffer);
}
else
{
nextIncrement = CreateNewBid(newbid.Bidder, newbid.MaximumBid, newbid.MaximumBid, newbid.TimeOfOffer);
if (nextIncrement.CanMeetOrExceedBidIncrement(winningBid.MaximumBid))
return CreateNewBid(winningBid.Bidder, nextIncrement.CurrentAuctionPrice.BidIncrement(), winningBid.MaximumBid, winningBid.TimeOfBid);
else
return CreateNewBid(winningBid.Bidder, winningBid.MaximumBid, winningBid.MaximumBid, winningBid.TimeOfBid);
}
}
private WinningBid CreateNewBid(Guid bidder, Money bid, Money maxBid, DateTime timeOfBid)
{
return new WinningBid(bidder, bid, maxBid, timeOfBid);
}
private bool MaxBidCanBeExceededBy(Money bid)
{
return !this.MaximumBid.IsGreaterThanOrEqualTo(bid);
}
public bool CanMeetOrExceedBidIncrement(Money offer)
{
return CurrentAuctionPrice.CanBeExceededBy(offer);
}
public bool HasNotReachedMaximumBid()
{
return MaximumBid.IsGreaterThan(CurrentAuctionPrice.Amount);
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0E353285-2A32-46DB-88E3-6832FDA9FF68}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PPPDDDChap05.DomainModel</RootNamespace>
<AssemblyName>PPPDDDChap05.DomainModel</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Application\BidOnAuctionService.cs" />
<Compile Include="Model\Auction.cs" />
<Compile Include="Model\HistoricalBid.cs" />
<Compile Include="Model\IAuctionRepository.cs" />
<Compile Include="Model\Money.cs" />
<Compile Include="Model\Bid.cs" />
<Compile Include="Model\Price.cs" />
<Compile Include="Model\WinningBid.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Model\ClassDiagram.cd" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("PPPDDDChap05.DomainModel")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PPPDDDChap05.DomainModel")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("1caf44dd-f726-4107-aa0a-c13fc290c560")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PPPDDDChap05.DomainModel", "PPPDDDChap05.DomainModel\PPPDDDChap05.DomainModel.csproj", "{0E353285-2A32-46DB-88E3-6832FDA9FF68}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0E353285-2A32-46DB-88E3-6832FDA9FF68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E353285-2A32-46DB-88E3-6832FDA9FF68}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E353285-2A32-46DB-88E3-6832FDA9FF68}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E353285-2A32-46DB-88E3-6832FDA9FF68}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Customers.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.TableModule.Domain
{
public class Customers
{
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Orders.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace PPPDDDChap05.TableModule.Domain
{
public class Orders
{
public Orders(DataSet dataSet)
{
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/TableModuleBase.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.TableModule.Domain
{
public class TableModuleBase
{
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F9520565-61E6-438C-9452-97F1F0C298D3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PPPDDDChap05.TableModule</RootNamespace>
<AssemblyName>PPPDDDChap05.TableModule</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Domain\Customers.cs" />
<Compile Include="Domain\Orders.cs" />
<Compile Include="Domain\TableModuleBase.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Application\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("PPPDDDChap05.TableModule")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PPPDDDChap05.TableModule")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("42d09094-56a4-47a1-aac8-3c51dfac2a62")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PPPDDDChap05.TableModule", "PPPDDDChap05.TableModule\PPPDDDChap05.TableModule.csproj", "{F9520565-61E6-438C-9452-97F1F0C298D3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F9520565-61E6-438C-9452-97F1F0C298D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F9520565-61E6-438C-9452-97F1F0C298D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9520565-61E6-438C-9452-97F1F0C298D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9520565-61E6-438C-9452-97F1F0C298D3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Application/BidOnAuctionService.cs
================================================
using System;
using PPPDDDChap05.TransactionScript.Domain;
namespace PPPPDDDChap05.TransactionScript.Application
{
public class BidOnAuctionService
{
private BidOnAuctionCommand _bidOnAuctionCommand;
public BidOnAuctionService(BidOnAuctionCommand bidOnAuctionCommand)
{
_bidOnAuctionCommand = bidOnAuctionCommand;
}
public void Bid(Guid auctionId, Guid memberId, decimal amount, DateTime dateOfBid)
{
_bidOnAuctionCommand.Execute(auctionId, memberId, amount, dateOfBid);
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/Auction.cs
================================================
using System;
namespace PPPDDDChap05.TransactionScript.Domain
{
public class Auction
{
public Guid Id { get; set; }
public Guid ListingId { get; set; }
public DateTime EndsAt { get; set; }
public decimal StartingPrice { get; set; }
public decimal WinningBid { get; set; }
public decimal WinninBidderMaximumBid { get; set; }
public Guid WinningBidder { get; set; }
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuction.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.TransactionScript.Domain
{
public class BidOnAuction: ICommand
{
public void Execute()
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuctionCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;
namespace PPPDDDChap05.TransactionScript.Domain
{
public class BidOnAuctionCommand: ICommand
{
private Guid auctionId {get; set;}
private Guid bidderId {get; set;}
private decimal amount {get; set;}
private DateTime timeOfBid { get; set; }
public BidOnAuctionCommand(Guid auctionId, Guid bidderId, decimal amount, DateTime timeOfBid)
{
this.auctionId = auctionId;
this.bidderId = bidderId;
this.amount = amount;
this.timeOfBid = timeOfBid;
}
public void Execute()
{
using (TransactionScope scope = new TransactionScope())
{
ThrowExceptionIfNotValid(auctionId, bidderId, amount, timeOfBid);
ThrowExceptionIfAuctionHasEnded(auctionId);
if (IsFirstBid(auctionId))
PlaceFirstBid(auctionId, bidderId, amount, timeOfBid);
else if (IsIncreasingMaximimBid(auctionId, amount, bidderId))
IncreaseMaximumBidTo(amount);
else if (CanMeetOrExceedBidIncrement(amount))
UpdatePrice(auctionId, bidderId, amount, timeOfBid);
}
}
private void ThrowExceptionIfAuctionHasEnded(Guid auctionId)
{
// check at DB
}
private bool CanMeetOrExceedBidIncrement(decimal amount)
{
return true;
}
private void UpdatePrice(Guid auctionId, Guid bidderId, decimal amount, DateTime timeOfBi)
{
}
private void IncreaseMaximumBidTo(decimal amount)
{
}
private bool IsIncreasingMaximimBid(Guid auctionId, decimal amount, Guid bidderId)
{
return true;
}
private bool IsFirstBid(Guid auctionId)
{
return true;
}
private void PlaceFirstBid(Guid auctionId, Guid bidderId, decimal amount, DateTime timeOfBid)
{
}
private void FirstBid(Auction auction, Guid bidderId, decimal amount, DateTime dateOfBid)
{
if (amount > auction.StartingPrice)
{
auction.WinningBidder = bidderId;
auction.WinningBid = amount;
// DB Update
}
else
throw new ApplicationException("You have to bid greater than the starting price.");
}
private void ThrowExceptionIfNotValid(Guid auctionId, Guid bidderId, decimal amount, DateTime dateOfBid)
{
if (auctionId == Guid.Empty)
throw new ArgumentNullException("AuctionId cannot be null");
if (bidderId == Guid.Empty)
throw new ArgumentNullException("BidderId cannot be null");
if (dateOfBid == DateTime.MinValue)
throw new ArgumentNullException("Time of bid must have a value");
if (amount % 0.01m != 0)
throw new InvalidOperationException("There cannot be more than two decimal places.");
if (amount < 0)
throw new InvalidOperationException("Money cannot be a negative value.");
}
private decimal BidIncrement(decimal currentAuctionWinningBid)
{
if (currentAuctionWinningBid >= 0.01m && currentAuctionWinningBid <= 0.99m)
return 0.05m;
if (currentAuctionWinningBid >= 1.00m && currentAuctionWinningBid <= 4.99m)
return 0.20m;
if (currentAuctionWinningBid >= 5.00m && currentAuctionWinningBid >= 14.99m)
return 0.50m;
return 1.00m;
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/ClassDiagram1.cd
================================================
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="PPPDDDChap05.TransactionScript.Domain.CreateAuction">
<Position X="4" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Domain\CreateAuction.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="PPPDDDChap05.TransactionScript.Domain.BidOnAuction">
<Position X="6.5" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Domain\BidOnAuction.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Interface Name="PPPDDDChap05.TransactionScript.Domain.ICommand">
<Position X="5.25" Y="1" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Domain\ICommand.cs</FileName>
</TypeIdentifier>
</Interface>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/CreateAuction.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.TransactionScript.Domain
{
public class CreateAuction : ICommand
{
public void Execute()
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/ICommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDDChap05.TransactionScript.Domain
{
public interface ICommand
{
public void Execute();
}
}
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{32A69A1D-17FD-4F51-981B-81298242440F}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PPPDDDChap05.TransactionScript</RootNamespace>
<AssemblyName>PPPDDDChap05.TransactionScript</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Application\BidOnAuctionService.cs" />
<Compile Include="Domain\Auction.cs" />
<Compile Include="Domain\BidOnAuction.cs" />
<Compile Include="Domain\BidOnAuctionCommand.cs" />
<Compile Include="Domain\CreateAuction.cs" />
<Compile Include="Domain\ICommand.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Domain\ClassDiagram1.cd" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("PPPDDDChap05.TransactionScript")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PPPDDDChap05.TransactionScript")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("973aaa8a-6c99-41e2-a811-0db1308fa968")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PPPDDDChap05.TransactionScript", "PPPDDDChap05.TransactionScript\PPPDDDChap05.TransactionScript.csproj", "{32A69A1D-17FD-4F51-981B-81298242440F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{32A69A1D-17FD-4F51-981B-81298242440F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32A69A1D-17FD-4F51-981B-81298242440F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32A69A1D-17FD-4F51-981B-81298242440F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32A69A1D-17FD-4F51-981B-81298242440F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItem.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class BasketItem
{
public Quantity quantity()
{
throw new NotImplementedException();
}
internal void increase_item_quantity_by(Quantity quantity)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItemFactory.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class BasketItemFactory
{
internal static BasketItem create_item_for(Product product, basket basket)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItems.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class BasketItems : List<BasketItem>
{
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Country.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class Country
{
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverSeasSellingPolicyException.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
class OverSeasSellingPolicyException : Exception
{
public OverSeasSellingPolicyException(string message)
{
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverseasSellingPolicy.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class OverSeasSellingPolicy
{
public static Quantity quantity_threshold = new Quantity(50);
public bool is_satisfied_by(Quantity item_quantity, Country country)
{
if (item_quantity.contains_more_than(quantity_threshold))
return false;
else
return true;
}
internal bool is_satisfied_by(Quantity item_quantity)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Product.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class Product
{
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Quantity.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
public class Quantity
{
public Quantity(int p)
{
}
public Quantity add(Quantity quantity)
{
throw new NotImplementedException();
}
internal bool contains_more_than(Quantity quantity_threshold)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/basket.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ExplicitLogic.Model
{
// This example, including associated classes, accentuates making logic explicit.
// It does not demonstrate coding and DDD best practices
public class basket
{
private BasketItems _items;
private OverSeasSellingPolicy _over_seas_selling_policy;
public void add(Product product)
{
if (basket_contains_an_item_for(product))
{
var item_quantity = get_item_for(product).quantity().add(new Quantity(1));
if (_over_seas_selling_policy.is_satisfied_by(item_quantity))
get_item_for(product).increase_item_quantity_by(new Quantity(1));
else
throw new OverSeasSellingPolicyException(
string.Format(
"You can only purchase {0} of a single product.",
OverSeasSellingPolicy.quantity_threshold)
);
}
else
_items.Add(BasketItemFactory.create_item_for(product, this));
}
private BasketItem get_item_for(Product product)
{
throw new NotImplementedException();
}
private bool basket_contains_an_item_for(Product product)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItem.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
public class BasketItem
{
public Quantity quantity()
{
throw new NotImplementedException();
}
internal void increase_item_quantity_by(Quantity quantity)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItemFactory.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
public class BasketItemFactory
{
internal static BasketItem create_item_for(Product product, basket basket)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItems.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
public class BasketItems : List<BasketItem>
{
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Product.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
public class Product
{
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Quantity.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
public class Quantity
{
public Quantity(int p)
{
}
public Quantity add(Quantity quantity)
{
throw new NotImplementedException();
}
internal bool contains_more_than(Quantity quantity_threshold)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/basket.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PPPDDD.Chap10.ecommerce.ImplicitLogic.Model
{
// This example, including associated classes, demonstrates the problems of not making concepts explicit.
// It does not demonstrate coding and DDD best practices
public class basket
{
private BasketItems _items;
public void add(Product product)
{
if (basket_contains_an_item_for(product))
{
var item_quantity = get_item_for(product).quantity()
.add(new Quantity(1));
if (item_quantity.contains_more_than(new Quantity(50)))
throw new ApplicationException(
"You can only purchase 50 of a single product.");
else
get_item_for(product).increase_item_quantity_by(
new Quantity(1));
}
else
_items.Add(BasketItemFactory.create_item_for(product, this));
}
private BasketItem get_item_for(Product product)
{
throw new NotImplementedException();
}
private bool basket_contains_an_item_for(Product product)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PPPDDD.Chap10.ecommerce</RootNamespace>
<AssemblyName>PPPDDD.Chap10.ecommerce</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ExplicitLogic\Model\basket.cs" />
<Compile Include="ExplicitLogic\Model\BasketItem.cs" />
<Compile Include="ExplicitLogic\Model\BasketItemFactory.cs" />
<Compile Include="ExplicitLogic\Model\BasketItems.cs" />
<Compile Include="ExplicitLogic\Model\Country.cs" />
<Compile Include="ExplicitLogic\Model\OverseasSellingPolicy.cs" />
<Compile Include="ExplicitLogic\Model\OverSeasSellingPolicyException.cs" />
<Compile Include="ExplicitLogic\Model\Product.cs" />
<Compile Include="ExplicitLogic\Model\Quantity.cs" />
<Compile Include="ImplicitLogic\Model\basket.cs" />
<Compile Include="ImplicitLogic\Model\BasketItem.cs" />
<Compile Include="ImplicitLogic\Model\BasketItemFactory.cs" />
<Compile Include="ImplicitLogic\Model\BasketItems.cs" />
<Compile Include="ImplicitLogic\Model\Product.cs" />
<Compile Include="ImplicitLogic\Model\Quantity.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="ExplicitLogic\Application\" />
<Folder Include="ExplicitLogic\Infrastructure\" />
<Folder Include="ImplicitLogic\Application\" />
<Folder Include="ImplicitLogic\Infrastructure\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("PPPDDD.Chap10.ecommerce")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PPPDDD.Chap10.ecommerce")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4f3f7625-a00b-47a3-8154-ef201dd2d522")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2013 for Web
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PPPDDD.Chap10.ecommerce", "PPPDDD.Chap10.ecommerce\PPPDDD.Chap10.ecommerce.csproj", "{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4DFA816B-6069-4B9E-B7F2-F13B498EAD9F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
================================================
FILE: 11 - Integrating Bounded Contexts/README.md
================================================
PPPDDD
======
There is no sample code for chapter 11. This chapter contains theory and
case-studies of integrating bounded contexts and team in distributed domain
driven design (DDDD) environments.
================================================
FILE: 12 - Integrating Via Messaging/Billing.Messages/Billing.Messages.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B3707164-FF36-473E-877D-A652C8E41D14}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Billing.Messages</RootNamespace>
<AssemblyName>Billing.Messages</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Commands\RecordPaymentAttempt.cs" />
<Compile Include="Events\PaymentAccepted.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Billing.Messages/Commands/RecordPaymentAttempt.cs
================================================
using System;
namespace Billing.Messages.Commands
{
public class RecordPaymentAttempt
{
public string OrderId { get; set; }
public PaymentStatus Status { get; set; }
}
public enum PaymentStatus
{
Accepted,
Rejected
}
}
================================================
FILE: 12 - Integrating Via Messaging/Billing.Messages/Events/PaymentAccepted.cs
================================================
using System;
namespace Billing.Messages.Events
{
public class PaymentAccepted
{
public string OrderId { get; set; }
}
}
================================================
FILE: 12 - Integrating Via Messaging/Billing.Messages/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Billing.Messages")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Billing.Messages")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e54fb802-aa29-4e02-8893-7c5e515a12ba")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/App.config
================================================
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Sales.Messages" Type="Sales.Messages.OrderCreated" Endpoint="Sales.Orders.OrderCreated" />
</MessageEndpointMappings>
</UnicastBusConfig>
<AuditConfig QueueName="audit" />
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/Billing.Payments.PaymentAccepted.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Billing.Payments.PaymentAccepted</RootNamespace>
<AssemblyName>Billing.Payments.PaymentAccepted</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="NServiceBus">
<HintPath>..\packages\NServiceBus.Interfaces.4.3.4\lib\net40\NServiceBus.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Core">
<HintPath>..\packages\NServiceBus.4.3.4\lib\net40\NServiceBus.Core.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Host">
<HintPath>..\packages\NServiceBus.Host.4.3.3\lib\net40\NServiceBus.Host.exe</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="EndpointConfig.cs" />
<Compile Include="OrderCreatedHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RecordPaymentAttemptHandler.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Billing.Messages\Billing.Messages.csproj">
<Project>{b3707164-ff36-473e-877d-a652c8e41d14}</Project>
<Name>Billing.Messages</Name>
</ProjectReference>
<ProjectReference Include="..\Sales.Messages\Sales.Messages.csproj">
<Project>{2dd347e9-1417-4ac5-9bdc-84dbe0707427}</Project>
<Name>Sales.Messages</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<StartAction>Program</StartAction>
<StartProgram>$(ProjectDir)$(OutputPath)NServiceBus.Host.exe</StartProgram>
</PropertyGroup>
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/EndpointConfig.cs
================================================
using NServiceBus;
namespace Billing.Payments.PaymentAccepted
{
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization, AsA_Publisher
{
public void Init()
{
Configure.With()
.DefiningCommandsAs(t => t.Namespace != null && t.Namespace.Contains("Commands"))
.DefiningEventsAs(t => t.Namespace != null && t.Namespace.Contains("Events"));
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/OrderCreatedHandler.cs
================================================
using Billing.Messages.Commands;
using NServiceBus;
using Sales.Messages.Events;
using System;
namespace Billing.Payments.PaymentAccepted
{
public class OrderCreatedHandler : IHandleMessages<OrderCreated>
{
// dependency injected by NServiceBus
public IBus Bus { get; set; }
public void Handle(OrderCreated message)
{
Console.WriteLine("Received order created event: OrderId: {0}", message.OrderId);
var cardDetails = Database.GetCardDetailsFor(message.UserId);
var confirmation = PaymentProvider.ChargeCreditCard(cardDetails, message.Amount);
var command = new RecordPaymentAttempt
{
OrderId = message.OrderId,
Status = confirmation.Status
};
Bus.SendLocal(command);
}
}
public static class PaymentProvider
{
private static int Attempts = 0;
public static PaymentConfirmation ChargeCreditCard(CardDetails details, double amount)
{
if (Attempts < 2)
{
Attempts++;
throw new Exception("Service unavailable. Down for maintenance.");
}
return new PaymentConfirmation { Status = PaymentStatus.Accepted };
}
}
public class PaymentConfirmation
{
public PaymentStatus Status { get; set; }
}
public static class Database
{
public static CardDetails GetCardDetailsFor(string userId)
{
return new CardDetails();
}
}
public class CardDetails
{
// ...
}
}
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Billing.Payments.PaymentAccepted")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Billing.Payments.PaymentAccepted")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7c14fade-565f-44ad-9e88-035ea990ed1d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/RecordPaymentAttemptHandler.cs
================================================
using System;
using Billing.Messages.Commands;
using NServiceBus;
namespace Billing.Payments.PaymentAccepted
{
public class RecordPaymentAttemptHandler : IHandleMessages<RecordPaymentAttempt>
{
// dependency injected by NServiceBus
public IBus Bus { get; set; }
public void Handle(RecordPaymentAttempt message)
{
Database.SavePaymentAttempt(message.OrderId, message.Status);
if (message.Status == PaymentStatus.Accepted)
{
var evnt = new Billing.Messages.Events.PaymentAccepted
{
OrderId = message.OrderId
};
Bus.Publish(evnt);
Console.WriteLine(
"Recevied payment accepted notification for Order: {0}. Published PaymentAccepted event",
message.OrderId
);
}
else
{
// publish a payment rejected event
}
}
public static class Database
{
public static void SavePaymentAttempt(string orderId, PaymentStatus status)
{
// .. save it to your favorite database
}
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NServiceBus" version="4.3.4" targetFramework="net45" />
<package id="NServiceBus.Host" version="4.3.3" targetFramework="net45" />
<package id="NServiceBus.Interfaces" version="4.3.4" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/FilterConfig.cs
================================================
using System.Web;
using System.Web.Mvc;
namespace DDDesign.Web
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/RouteConfig.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace DDDesign.Web
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/WebApiConfig.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DDDesign.Web
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Controllers/OrdersController.cs
================================================
using Sales.Messages.Commands;
using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DDDesign.Web.Controllers
{
public class OrdersController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Place(string userId, string productIds, string shippingTypeId)
{
var realProductIds = productIds.Split(',');
var placeOrderCommand = new PlaceOrder
{
UserId = userId,
ProductIds = realProductIds,
ShippingTypeId = shippingTypeId,
TimeStamp = DateTime.Now
};
MvcApplication.Bus.Send("Sales.Orders.OrderCreated", placeOrderCommand);
return Content("Your order has been placed. You will receive email confirmation shortly.");
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/DDDesign.Web.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{577647AD-2F18-4590-B28F-D46F9351E0E0}</ProjectGuid>
<ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DDDesign.Web</RootNamespace>
<AssemblyName>DDDesign.Web</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NServiceBus">
<HintPath>..\packages\NServiceBus.Interfaces.4.3.4\lib\net40\NServiceBus.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Core">
<HintPath>..\packages\NServiceBus.4.3.3\lib\net40\NServiceBus.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Routing" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Mvc.FixedDisplayModes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http">
</Reference>
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.WebRequest">
</Reference>
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Controllers\OrdersController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="App_Start\FilterConfig.cs" />
<Compile Include="App_Start\RouteConfig.cs" />
<Compile Include="App_Start\WebApiConfig.cs" />
<Content Include="Global.asax" />
<Content Include="Web.config" />
<Content Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</Content>
<Content Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</Content>
<Content Include="Views\Web.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Models\" />
</ItemGroup>
<ItemGroup>
<Content Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Sales.Messages\Sales.Messages.csproj">
<Project>{2dd347e9-1417-4ac5-9bdc-84dbe0707427}</Project>
<Name>Sales.Messages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Views\Orders\Index.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>2066</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:2066/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target> -->
</Project>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Global.asax
================================================
<%@ Application Codebehind="Global.asax.cs" Inherits="DDDesign.Web.MvcApplication" Language="C#" %>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Global.asax.cs
================================================
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
using NServiceBus;
using NServiceBus.Installation.Environments;
namespace DDDesign.Web
{
public class MvcApplication : System.Web.HttpApplication
{
private static IBus bus;
public static IBus Bus { get { return bus; } }
protected void Application_Start()
{
Configure.Serialization.Xml();
bus = Configure.With()
.DefaultBuilder()
.DefiningCommandsAs(t => t.Namespace != null
&& t.Namespace.Contains("Commands"))
.UseTransport<Msmq>()
.UnicastBus()
.SendOnly();
// following code was provided by default and should remain un-modified
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DDDesign.Web")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DDDesign.Web")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e000afce-ae81-469c-b2fb-21cb969ea18e")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Views/Orders/Index.cshtml
================================================
<!DOCTYPE html>
<html>
<head>
<title>Place an order</title>
</head>
<body>
<h1>Place an order</h1>
<form method="post" action="/orders/place">
<p>
UserId: <input type="text" name="userId" />
</p>
<p>
ProductIds: <input type="text" name="productIds" />
</p>
<p>
ShippingTypeId: <input type="text" name="shippingTypeId" />
</p>
<input type="submit" value="Place order" />
</form>
</body>
</html>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Views/Web.config
================================================
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Web.Debug.config
================================================
<?xml version="1.0"?>
<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your Web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Web.Release.config
================================================
<?xml version="1.0"?>
<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your Web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Web.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers></system.webServer>
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.Web/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
<package id="NServiceBus" version="4.3.3" targetFramework="net45" />
<package id="NServiceBus.Interfaces" version="4.3.4" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/DDDesign.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sales.Messages", "Sales.Messages\Sales.Messages.csproj", "{2DD347E9-1417-4AC5-9BDC-84DBE0707427}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DDDesign.Web", "DDDesign.Web\DDDesign.Web.csproj", "{577647AD-2F18-4590-B28F-D46F9351E0E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sales.Orders.OrderCreated", "Sales.Orders.OrderCreated\Sales.Orders.OrderCreated.csproj", "{18455B18-D42C-4B5A-98E0-2112F8066542}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Billing.Payments.PaymentAccepted", "Billing.Payments.PaymentAccepted\Billing.Payments.PaymentAccepted.csproj", "{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Billing.Messages", "Billing.Messages\Billing.Messages.csproj", "{B3707164-FF36-473E-877D-A652C8E41D14}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shipping.BusinessCustomers.ShippingArranged", "Shipping.BusinessCustomers.ShippingArranged\Shipping.BusinessCustomers.ShippingArranged.csproj", "{2A146AA7-EF86-4304-839C-C43B97834F15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shipping.Messages", "Shipping.Messages\Shipping.Messages.csproj", "{AB3A64C2-9FD1-4382-AAB8-10748573DE98}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Promotions.LuckyWinner.LuckyWinnerSelected", "Promotions.LuckyWinner.LuckyWinnerSelected\Promotions.LuckyWinner.LuckyWinnerSelected.csproj", "{150B3671-0358-4A92-B1B1-040E1E8A4E75}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Promotions.LuckyWinner.LuckyWinnerSelected.Bridge", "Promotions.LuckyWinner.LuckyWinnerSelected.Bridge\Promotions.LuckyWinner.LuckyWinnerSelected.Bridge.csproj", "{7E833DCC-577E-4601-83DD-E6B71F1B9D77}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Billing Context", "Billing Context", "{3127DD92-DAB4-481E-8A8B-37C22A6D6780}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Promotions Context", "Promotions Context", "{E9D889AA-241E-4DFA-B81D-43449F1DBE76}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sales Context", "Sales Context", "{AE53C794-2020-4930-A9A9-4F97EDAD9686}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shipping Context", "Shipping Context", "{079CBA19-BF9F-437B-83DE-47984F187549}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2DD347E9-1417-4AC5-9BDC-84DBE0707427}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2DD347E9-1417-4AC5-9BDC-84DBE0707427}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2DD347E9-1417-4AC5-9BDC-84DBE0707427}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2DD347E9-1417-4AC5-9BDC-84DBE0707427}.Release|Any CPU.Build.0 = Release|Any CPU
{577647AD-2F18-4590-B28F-D46F9351E0E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{577647AD-2F18-4590-B28F-D46F9351E0E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{577647AD-2F18-4590-B28F-D46F9351E0E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{577647AD-2F18-4590-B28F-D46F9351E0E0}.Release|Any CPU.Build.0 = Release|Any CPU
{18455B18-D42C-4B5A-98E0-2112F8066542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18455B18-D42C-4B5A-98E0-2112F8066542}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18455B18-D42C-4B5A-98E0-2112F8066542}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18455B18-D42C-4B5A-98E0-2112F8066542}.Release|Any CPU.Build.0 = Release|Any CPU
{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63}.Release|Any CPU.Build.0 = Release|Any CPU
{B3707164-FF36-473E-877D-A652C8E41D14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B3707164-FF36-473E-877D-A652C8E41D14}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B3707164-FF36-473E-877D-A652C8E41D14}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B3707164-FF36-473E-877D-A652C8E41D14}.Release|Any CPU.Build.0 = Release|Any CPU
{2A146AA7-EF86-4304-839C-C43B97834F15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A146AA7-EF86-4304-839C-C43B97834F15}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A146AA7-EF86-4304-839C-C43B97834F15}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A146AA7-EF86-4304-839C-C43B97834F15}.Release|Any CPU.Build.0 = Release|Any CPU
{AB3A64C2-9FD1-4382-AAB8-10748573DE98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB3A64C2-9FD1-4382-AAB8-10748573DE98}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB3A64C2-9FD1-4382-AAB8-10748573DE98}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB3A64C2-9FD1-4382-AAB8-10748573DE98}.Release|Any CPU.Build.0 = Release|Any CPU
{150B3671-0358-4A92-B1B1-040E1E8A4E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{150B3671-0358-4A92-B1B1-040E1E8A4E75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{150B3671-0358-4A92-B1B1-040E1E8A4E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{150B3671-0358-4A92-B1B1-040E1E8A4E75}.Release|Any CPU.Build.0 = Release|Any CPU
{7E833DCC-577E-4601-83DD-E6B71F1B9D77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E833DCC-577E-4601-83DD-E6B71F1B9D77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E833DCC-577E-4601-83DD-E6B71F1B9D77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E833DCC-577E-4601-83DD-E6B71F1B9D77}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{B3707164-FF36-473E-877D-A652C8E41D14} = {3127DD92-DAB4-481E-8A8B-37C22A6D6780}
{D8BE42BB-5FD0-4DB2-919B-9FCB8D455F63} = {3127DD92-DAB4-481E-8A8B-37C22A6D6780}
{150B3671-0358-4A92-B1B1-040E1E8A4E75} = {E9D889AA-241E-4DFA-B81D-43449F1DBE76}
{7E833DCC-577E-4601-83DD-E6B71F1B9D77} = {E9D889AA-241E-4DFA-B81D-43449F1DBE76}
{18455B18-D42C-4B5A-98E0-2112F8066542} = {AE53C794-2020-4930-A9A9-4F97EDAD9686}
{2DD347E9-1417-4AC5-9BDC-84DBE0707427} = {AE53C794-2020-4930-A9A9-4F97EDAD9686}
{2A146AA7-EF86-4304-839C-C43B97834F15} = {079CBA19-BF9F-437B-83DE-47984F187549}
{AB3A64C2-9FD1-4382-AAB8-10748573DE98} = {079CBA19-BF9F-437B-83DE-47984F187549}
EndGlobalSection
EndGlobal
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/App.config
================================================
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Application/Program.cs
================================================
using MassTransit;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading;
using System.IO;
using MassTransit.Context;
using System.Text;
namespace Promotions.LuckyWinner.LuckyWinnerSelected
{
public class Program
{
public static void Main(string[] args)
{
Bus.Initialize(config =>
{
config.UseMsmq();
// look on this queue for order placed event messages
config.ReceiveFrom("msmq://localhost/promotions.ordercreated");
// subscribe to order placed events
config.Subscribe(sub =>
{
// handle order placed events like this
sub.Handler<OrderCreated>(msg => new OrderCreatedHandler().Handle(msg));
});
});
// keep the application running so it can listen for messages
while(true)
{
Thread.Sleep(1000);
}
}
}
public class OrderCreated
{
public string OrderId { get; set; }
public string UserId { get; set; }
public List<string> ProductIds { get; set; }
public string ShippingTypeId { get; set; }
public DateTime TimeStamp { get; set; }
public double Amount { get; set; }
}
public class OrderCreatedHandler
{
public void Handle(OrderCreated message)
{
Console.WriteLine(
"Mass Transit handling order placed event: Order: {0} for User: {1}",
message.OrderId, message.UserId);
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Promotions.LuckyWinner.LuckyWinnerSelected.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{150B3671-0358-4A92-B1B1-040E1E8A4E75}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Promotions.LuckyWinner.LuckyWinnerSelected</RootNamespace>
<AssemblyName>Promotions.LuckyWinner.LuckyWinnerSelected</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="Magnum">
<HintPath>..\packages\Magnum.2.1.2\lib\NET40\Magnum.dll</HintPath>
</Reference>
<Reference Include="MassTransit">
<HintPath>..\packages\MassTransit.2.9.5\lib\net40\MassTransit.dll</HintPath>
</Reference>
<Reference Include="MassTransit.Transports.MSMQ">
<HintPath>..\packages\MassTransit.MSMQ.2.9.5\lib\net40\MassTransit.Transports.MSMQ.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.5.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Application\Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Infrastructure\" />
<Folder Include="Model\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Promotions.LuckyWinner.LuckyWinnerSelected")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Promotions.LuckyWinner.LuckyWinnerSelected")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("dee36a48-7037-40ce-bc76-e357ca417751")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Magnum" version="2.1.2" targetFramework="net45" />
<package id="MassTransit" version="2.9.5" targetFramework="net45" />
<package id="MassTransit.MSMQ" version="2.9.5" targetFramework="net45" />
<package id="Newtonsoft.Json" version="5.0.8" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/App.config
================================================
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Sales.Messages" Type="Sales.Messages.OrderCreated_V2" Endpoint="Sales.Orders.OrderCreated" />
</MessageEndpointMappings>
</UnicastBusConfig>
<AuditConfig QueueName="audit" />
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Application/OrderCreatedHandler.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NServiceBus;
using System.Messaging;
using Sales.Messages.Events;
using System.Xml.Linq;
using System.Xml;
namespace Promotions.LuckyWinner.LuckyWinnerSelected.Bridge
{
public class OrderCreatedHandler : IHandleMessages<OrderCreated_V2>
{
public void Handle(OrderCreated_V2 message)
{
Console.WriteLine(
"Bridge received order: {0}. " +
"About to push it onto Mass Transit's queue",
message.OrderId
);
var massMsg = ConvertToMassTransitXmlMessageFormat(message);
var msmqMsg = new Message
{
Body = XDocument.Parse(massMsg).Root,
Extension = Encoding.UTF8.GetBytes("{\"Content-Type\":\"application/vnd.masstransit+xml\"}")
};
var queue = new MessageQueue(".\\Private$\\promotions.ordercreated", QueueAccessMode.Send);
queue.Send(msmqMsg);
}
// use a more robust strategy in production
// this approach is used to highligh format mass transit needs
private string ConvertToMassTransitXmlMessageFormat(OrderCreated_V2 message)
{
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<envelope>" +
"<headers />" +
"<destinationAddress>msmq://localhost/promotions.ordercreated?tx=false&recoverable=true</destinationAddress>" +
"<message>" +
"<orderId>" + message.OrderId + "</orderId>" +
"<userId>" + message.UserId + "</userId>" +
GenerateProductIdsXml(message.ProductIds) +
"<shippingTypeId>" + message.ShippingTypeId + "</shippingTypeId>" +
"<amount>" + message.Amount + "</amount>" +
"<timestamp>" + XmlConvert.ToString(message.TimeStamp, XmlDateTimeSerializationMode.Utc) + "</timestamp>" +
"</message>" +
"<messageType>urn:message:Promotions.LuckyWinner.LuckyWinnerSelected:OrderCreated</messageType>" +
"</envelope>";
}
private string GenerateProductIdsXml(IEnumerable<string> productIds)
{
return String.Join("", productIds.Select(p => "<productIds>" + p + "</productIds>"));
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Infrastructure/EndpointConfig.cs
================================================
namespace Promotions.LuckyWinner.LuckyWinnerSelected.Bridge
{
using NServiceBus;
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization, AsA_Publisher
{
public void Init()
{
Configure.With()
.DefiningCommandsAs(t => t.Namespace != null
&& t.Namespace.Contains("Commands"))
.DefiningEventsAs(t => t.Namespace != null && t.Namespace.Contains("Events"));
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7E833DCC-577E-4601-83DD-E6B71F1B9D77}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Promotions.LuckyWinner.LuckyWinnerSelected.Bridge</RootNamespace>
<AssemblyName>Promotions.LuckyWinner.LuckyWinnerSelected.Bridge</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="NServiceBus">
<HintPath>..\packages\NServiceBus.Interfaces.4.3.4\lib\net40\NServiceBus.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Core">
<HintPath>..\packages\NServiceBus.4.3.4\lib\net40\NServiceBus.Core.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Host">
<HintPath>..\packages\NServiceBus.Host.4.3.3\lib\net40\NServiceBus.Host.exe</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Messaging" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Infrastructure\EndpointConfig.cs" />
<Compile Include="Application\OrderCreatedHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Sales.Messages\Sales.Messages.csproj">
<Project>{2dd347e9-1417-4ac5-9bdc-84dbe0707427}</Project>
<Name>Sales.Messages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Model\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<StartAction>Program</StartAction>
<StartProgram>$(ProjectDir)$(OutputPath)NServiceBus.Host.exe</StartProgram>
</PropertyGroup>
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Promotions.LuckyWinner.LuckyWinnerSelected.Bridge")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Promotions.LuckyWinner.LuckyWinnerSelected.Bridge")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0c882311-bbaa-4ae0-9db2-b62c8ebbd5f6")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NServiceBus" version="4.3.4" targetFramework="net45" />
<package id="NServiceBus.Host" version="4.3.3" targetFramework="net45" />
<package id="NServiceBus.Interfaces" version="4.3.4" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/README.md
================================================
PPPDDD
======
See chapter 12 in the book for guidance on setting up and running this project,
including NServiceBus and MSMQ installation instructions.
================================================
FILE: 12 - Integrating Via Messaging/Sales.Messages/Commands/PlaceOrder.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sales.Messages.Commands
{
public class PlaceOrder
{
public string UserId { get; set; }
public string[] ProductIds { get; set; }
public string ShippingTypeId { get; set;}
public DateTime TimeStamp { get; set; }
}
}
================================================
FILE: 12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated.cs
================================================
using System;
using System.Collections.Generic;
namespace Sales.Messages.Events
{
public class OrderCreated
{
public string OrderId { get; set; }
public string UserId { get; set; }
public string[] ProductIds { get; set; }
public string ShippingTypeId { get; set; }
public DateTime TimeStamp { get; set; }
public double Amount { get; set; }
}
}
================================================
FILE: 12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated_V2.cs
================================================
using System;
namespace Sales.Messages.Events
{
public class OrderCreated_V2 : OrderCreated
{
public string AddressId { get; set; }
}
}
================================================
FILE: 12 - Integrating Via Messaging/Sales.Messages/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Sales.Messages")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Sales.Messages")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("80347f4c-c890-4436-a066-0bdeaeb2cb86")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Sales.Messages/Sales.Messages.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2DD347E9-1417-4AC5-9BDC-84DBE0707427}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Sales.Messages</RootNamespace>
<AssemblyName>Sales.Messages</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Commands\PlaceOrder.cs" />
<Compile Include="Events\OrderCreated_V2.cs" />
<Compile Include="Events\OrderCreated.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/App.config
================================================
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
</configSections>
<!--<MessageForwardingInCaseOfFaultConfig
ErrorQueue="The queue to which errors will be forwarded." />-->
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<!--<UnicastBusConfig
DistributorControlAddress="The address for sending control messages to the distributor."
DistributorDataAddress="The distributor's data address, used as the return address of messages sent by this endpoint."
TimeoutManagerAddress="The address that the timeout manager will use to send and receive messages." >
<MessageEndpointMappings>
To register all message types defined in an assembly:
<add Assembly="assembly" Endpoint="queue@machinename" />
To register all message types defined in an assembly with a specific namespace (it does not include sub namespaces):
<add Assembly="assembly" Namespace="namespace" Endpoint="queue@machinename" />
To register a specific type in an assembly:
<add Assembly="assembly" Type="type fullname (http://msdn.microsoft.com/en-us/library/system.type.fullname.aspx)" Endpoint="queue@machinename" />
</MessageEndpointMappings>
</UnicastBusConfig>-->
<UnicastBusConfig>
<MessageEndpointMappings />
</UnicastBusConfig>
<!--<AuditConfig
QueueName="The address to which messages received will be forwarded."
OverrideTimeToBeReceived="The time to be received set on forwarded messages, specified as a timespan see http://msdn.microsoft.com/en-us/library/vstudio/se73z7b9.aspx" />-->
<AuditConfig QueueName="audit" />
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Application/PlaceOrderHandler.cs
================================================
using System;
using NServiceBus;
using Sales.Messages.Commands;
using System.Collections.Generic;
namespace Sales.Orders.OrderCreated
{
public class PlaceOrderHandler : IHandleMessages<PlaceOrder>
{
public IBus Bus { get; set; }
public void Handle(PlaceOrder message)
{
var orderId = Database.SaveOrder(message.ProductIds, message.UserId, message.ShippingTypeId);
Console.WriteLine(
@"Created order #{3} : Products:{0} with shipping: {1} made by user: {2}",
String.Join(",", message.ProductIds), message.ShippingTypeId, message.UserId, orderId
);
// sending a V2 message now
var orderCreatedEvent = new Sales.Messages.Events.OrderCreated_V2
{
OrderId = orderId,
UserId = message.UserId,
ProductIds = message.ProductIds,
ShippingTypeId = message.ShippingTypeId,
TimeStamp = DateTime.Now,
Amount = CalculateCostOf(message.ProductIds),
/*
* add a new field to the form and the PlaceOrder command
* if you don't want to hard-code the value
*/
AddressId = "AddressID123"
};
Bus.Publish(orderCreatedEvent);
}
private double CalculateCostOf(IEnumerable<string> productIds)
{
// database lookup, etc
return 1000.00;
}
}
// This could be any database technology. It can differ between Business Components
public static class Database
{
private static int Id = 0;
public static string SaveOrder(IEnumerable<string> productIds, string userId, string shippingTypeId)
{
var nextOrderId = Id++;
return nextOrderId.ToString();
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Infrastructure/EndpointConfig.cs
================================================
using NServiceBus;
namespace Sales.Orders.OrderCreated
{
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization, AsA_Publisher
{
public void Init()
{
Configure.With()
.DefiningCommandsAs(t => t.Namespace != null
&& t.Namespace.Contains("Commands"))
.DefiningEventsAs(t => t.Namespace != null
&& t.Namespace.Contains("Events"));
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Sales.Orders.OrderCreated")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Sales.Orders.OrderCreated")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f6917b3a-ce8f-4d92-9738-c44d79fc0072")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Sales.Orders.OrderCreated.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{18455B18-D42C-4B5A-98E0-2112F8066542}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Sales.Orders.OrderCreated</RootNamespace>
<AssemblyName>Sales.Orders.OrderCreated</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="NServiceBus">
<HintPath>..\packages\NServiceBus.Interfaces.4.3.4\lib\net40\NServiceBus.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Core">
<HintPath>..\packages\NServiceBus.4.3.4\lib\net40\NServiceBus.Core.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Host">
<HintPath>..\packages\NServiceBus.Host.4.3.3\lib\net40\NServiceBus.Host.exe</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Infrastructure\EndpointConfig.cs" />
<Compile Include="Application\PlaceOrderHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Sales.Messages\Sales.Messages.csproj">
<Project>{2dd347e9-1417-4ac5-9bdc-84dbe0707427}</Project>
<Name>Sales.Messages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Model\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<StartAction>Program</StartAction>
<StartProgram>$(ProjectDir)$(OutputPath)NServiceBus.Host.exe</StartProgram>
</PropertyGroup>
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NServiceBus" version="4.3.4" targetFramework="net45" />
<package id="NServiceBus.Host" version="4.3.3" targetFramework="net45" />
<package id="NServiceBus.Interfaces" version="4.3.4" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/App.config
================================================
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Sales.Messages" Type="Sales.Messages.OrderCreated_V2" Endpoint="Sales.Orders.OrderCreated" />
<add Messages="Billing.Messages" Type="Billing.Messages.PaymentAccepted" Endpoint="Billing.Payments.PaymentAccepted" />
</MessageEndpointMappings>
</UnicastBusConfig>
<AuditConfig QueueName="audit" />
</configuration>
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Application/Handlers.cs
================================================
using Billing.Messages.Events;
using NServiceBus;
using Sales.Messages.Events;
using System;
using System.Linq;
using System.Collections.Generic;
namespace Shipping.BusinessCustomers.ShippingArranged
{
// update inherited interface with V2
public class OrderCreatedHandler : IHandleMessages<OrderCreated_V2>
{
// dependency injected by NServiceBus
public IBus Bus { get; set; }
// updated Handle accepting a V2
public void Handle(OrderCreated_V2 message)
{
Console.WriteLine(
"Shipping BC storing: Order: {0} User: {1} Shipping Type: {2}",
message.OrderId, message.UserId, message.ShippingTypeId, message.AddressId
);
var order = new ShippingOrder
{
UserId = message.UserId,
OrderId = message.OrderId,
AddressId = message.AddressId,
ShippingTypeId = message.ShippingTypeId
};
ShippingDatabase.AddOrderDetails(order);
}
}
public class PaymentAcceptedHandler : IHandleMessages<PaymentAccepted>
{
// dependency injected by NServiceBus
public IBus Bus { get; set; }
public void Handle(PaymentAccepted message)
{
var address = ShippingDatabase.GetCustomerAddress(message.OrderId);
var confirmation = ShippingProvider.ArrangeShippingFor(address, message.OrderId);
if (confirmation.Status == ShippingStatus.Success)
{
var evnt = new Shipping.Messages.Events.ShippingArranged
{
OrderId = message.OrderId
};
Bus.Publish(evnt);
Console.WriteLine(
"Shipping BC arranged shipping for Order: {0}",
message.OrderId, address
);
}
else
{
// .. notify failed shipping instead
}
}
}
public static class ShippingDatabase
{
private static List<ShippingOrder> Orders = new List<ShippingOrder>();
public static void AddOrderDetails(ShippingOrder order)
{
Orders.Add(order);
}
public static string GetCustomerAddress(string orderId)
{
var order = Orders
.Single(o => o.OrderId == orderId);
return string.Format(
"{0}, Address ID: {1}",
order.UserId, order.AddressId
);
}
}
public class ShippingOrder
{
public string UserId { get; set; }
public string OrderId { get; set; }
public string ShippingTypeId { get; set; }
public string AddressId { get; set; }
}
public static class ShippingProvider
{
public static ShippingConfirmation ArrangeShippingFor(string address, string referenceCode)
{
return new ShippingConfirmation { Status = ShippingStatus.Success };
}
}
public class ShippingConfirmation
{
public ShippingStatus Status { get; set; }
}
public enum ShippingStatus
{
Success,
Failure
}
}
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Infrastructure/EndpointConfig.cs
================================================
using NServiceBus;
namespace Shipping.BusinessCustomers.ShippingArranged
{
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Publisher, IWantCustomInitialization
{
public void Init()
{
Configure.With()
.DefiningCommandsAs(t => t.Namespace != null
&& t.Namespace.Contains("Commands"))
.DefiningEventsAs(t => t.Namespace != null
&& t.Namespace.Contains("Events"));
}
}
}
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Shipping.BusinessCustomers.ShippingArranged")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Shipping.BusinessCustomers.ShippingArranged")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("720d1f39-3d5e-4734-a0df-af71ad5ce28c")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Shipping.BusinessCustomers.ShippingArranged.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2A146AA7-EF86-4304-839C-C43B97834F15}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Shipping.BusinessCustomers.ShippingArranged</RootNamespace>
<AssemblyName>Shipping.BusinessCustomers.ShippingArranged</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="NServiceBus">
<HintPath>..\packages\NServiceBus.Interfaces.4.3.4\lib\net40\NServiceBus.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Core">
<HintPath>..\packages\NServiceBus.4.3.4\lib\net40\NServiceBus.Core.dll</HintPath>
</Reference>
<Reference Include="NServiceBus.Host">
<HintPath>..\packages\NServiceBus.Host.4.3.3\lib\net40\NServiceBus.Host.exe</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Infrastructure\EndpointConfig.cs" />
<Compile Include="Application\Handlers.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Billing.Messages\Billing.Messages.csproj">
<Project>{b3707164-ff36-473e-877d-a652c8e41d14}</Project>
<Name>Billing.Messages</Name>
</ProjectReference>
<ProjectReference Include="..\Sales.Messages\Sales.Messages.csproj">
<Project>{2dd347e9-1417-4ac5-9bdc-84dbe0707427}</Project>
<Name>Sales.Messages</Name>
</ProjectReference>
<ProjectReference Include="..\Shipping.Messages\Shipping.Messages.csproj">
<Project>{ab3a64c2-9fd1-4382-aab8-10748573de98}</Project>
<Name>Shipping.Messages</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Model\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<StartAction>Program</StartAction>
<StartProgram>$(ProjectDir)$(OutputPath)NServiceBus.Host.exe</StartProgram>
</PropertyGroup>
</Project>
================================================
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NServiceBus" version="4.3.4" targetFramework="net45" />
<package id="NServiceBus.Host" version="4.3.3" targetFramework="net45" />
<package id="NServiceBus.Interfaces" version="4.3.4" targetFramework="net45" />
</packages>
================================================
FILE: 12 - Integrating Via Messaging/Shipping.Messages/Events/ShippingArranged.cs
================================================
using System;
namespace Shipping.Messages.Events
{
public class ShippingArranged
{
public string OrderId { get; set; }
/*
* Other fields, such as date/date range
* could be added here depending on your
* shipping provider(s) API
*/
}
}
================================================
FILE: 12 - Integrating Via Messaging/Shipping.Messages/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Shipping.Messages")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Shipping.Messages")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("424a0f6d-c104-487a-a7fd-c21c51fab04a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 12 - Integrating Via Messaging/Shipping.Messages/Shipping.Messages.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{AB3A64C2-9FD1-4382-AAB8-10748573DE98}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Shipping.Messages</RootNamespace>
<AssemblyName>Shipping.Messages</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Events\ShippingArranged.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/AccountManagement.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A5683820-EAE9-4C2A-B91A-50F50A1D052F}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AccountManagement</RootNamespace>
<AssemblyName>AccountManagement</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.Formatting">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.0.0\lib\net45\System.Web.Http.WebHost.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="Global.asax" />
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="App_Start\WebApiConfig.cs" />
<Compile Include="Controllers\FollowerDirectoryController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="packages.config" />
<None Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Models\" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>1091</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:3200/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/App_Start/WebApiConfig.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace AccountManagement
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Controllers/FollowerDirectoryController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace AccountManagement.Controllers
{
public class FollowerDirectoryController : ApiController
{
public IHttpActionResult GetUsersFollowers(string accountId)
{
var followers = GenerateDummyFollowers().ToList();
return Json(followers);
}
private IEnumerable<Follower> GenerateDummyFollowers()
{
for (int i = 0; i < 10; i++)
{
yield return new Follower
{
FollowerId = "follower_" + i,
FollowerName = "happy follower " + i,
SocialTags = new List<string> { "programming", "DDD", "Psychology" },
};
}
}
}
public class Follower
{
public string FollowerId { get; set; }
public string FollowerName { get; set; }
public List<string> SocialTags { get; set; }
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Global.asax
================================================
<%@ Application Codebehind="Global.asax.cs" Inherits="AccountManagement.WebApiApplication" Language="C#" %>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Global.asax.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;
namespace AccountManagement
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("AccountManagement")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AccountManagement")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("63f18f3d-8b2f-468d-bc97-fdc2a7fa1faa")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.Debug.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.Release.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=301879
-->
<configuration>
<appSettings>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
</configuration>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
</packages>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/App_Start/WebApiConfig.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace Discovery
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Controllers/RecommenderController.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ServiceStack.Text;
namespace Discovery.Controllers
{
public class RecommenderController : ApiController
{
public List<string> GetRecommendedUsers(string accountId)
{
var accountManagementUrl =
"http://localhost:3200/api/" +
"followerdirectory/getusersfollowers?" +
"accountId=" + accountId;
var response = new WebClient().DownloadString(accountManagementUrl);
var followers = JsonSerializer.DeserializeFromString<List<Follower>>(response);
// automatically converted to JSON by Web API
return FindRecommendedUsersBasedOnSocialTags(followers);
}
private List<string> FindRecommendedUsersBasedOnSocialTags(List<Follower> followers)
{
/*
* Real system would look at the users tags and find
* popular accounts with similar tags by making more
* RPC calls.
*/
var tags = followers.SelectMany(f => f.SocialTags).Distinct();
return tags.Select(t => t + "_user_1").ToList();
}
}
/* class not shared between Bounded Contexts to meet
* requirement of no source code dependencies
*/
public class Follower
{
public string FollowerId { get; set; }
public string FollowerName { get; set; }
public List<string> SocialTags { get; set; }
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Discovery.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A8F7B7B2-F436-4F38-A5B6-A0C86FEC4F8F}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Discovery</RootNamespace>
<AssemblyName>Discovery</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="ServiceStack.Text">
<HintPath>..\packages\ServiceStack.Text.4.0.15\lib\net40\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.Formatting, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.1.1\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.0.0\lib\net45\System.Web.Http.WebHost.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="Global.asax" />
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="App_Start\WebApiConfig.cs" />
<Compile Include="Controllers\RecommenderController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="packages.config" />
<None Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
</None>
<None Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Models\" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>1273</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:1273/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Global.asax
================================================
<%@ Application Codebehind="Global.asax.cs" Inherits="Discovery.WebApiApplication" Language="C#" %>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Global.asax.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;
namespace Discovery
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Discovery")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Discovery")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("bbeb869f-f227-47bb-ba92-11196b518b3d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Web.Debug.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
================================================
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Web.Release.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an attribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="50
gitextract_uu88b_d3/
├── .gitattributes
├── .gitignore
├── 05 - Domain Model Implementation Patterns/
│ ├── PPPDDDChap05.DomainModel/
│ │ ├── PPPDDDChap05.DomainModel/
│ │ │ ├── Application/
│ │ │ │ └── BidOnAuctionService.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction.cs
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── ClassDiagram.cd
│ │ │ │ ├── HistoricalBid.cs
│ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── Price.cs
│ │ │ │ └── WinningBid.cs
│ │ │ ├── PPPDDDChap05.DomainModel.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── PPPDDDChap05.DomainModel.sln
│ ├── PPPDDDChap05.TableModule/
│ │ ├── PPPDDDChap05.TableModule/
│ │ │ ├── Domain/
│ │ │ │ ├── Customers.cs
│ │ │ │ ├── Orders.cs
│ │ │ │ └── TableModuleBase.cs
│ │ │ ├── PPPDDDChap05.TableModule.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── PPPDDDChap05.TableModule.sln
│ └── PPPDDDChap05.TransactionScript/
│ ├── PPPDDDChap05.TransactionScript/
│ │ ├── Application/
│ │ │ └── BidOnAuctionService.cs
│ │ ├── Domain/
│ │ │ ├── Auction.cs
│ │ │ ├── BidOnAuction.cs
│ │ │ ├── BidOnAuctionCommand.cs
│ │ │ ├── ClassDiagram1.cd
│ │ │ ├── CreateAuction.cs
│ │ │ └── ICommand.cs
│ │ ├── PPPDDDChap05.TransactionScript.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ └── PPPDDDChap05.TransactionScript.sln
├── 10 - Applying the Principles, Practices and Patterns of DDD/
│ └── PPPDDD.Chap10.ecommerce/
│ ├── PPPDDD.Chap10.ecommerce/
│ │ ├── ExplicitLogic/
│ │ │ └── Model/
│ │ │ ├── BasketItem.cs
│ │ │ ├── BasketItemFactory.cs
│ │ │ ├── BasketItems.cs
│ │ │ ├── Country.cs
│ │ │ ├── OverSeasSellingPolicyException.cs
│ │ │ ├── OverseasSellingPolicy.cs
│ │ │ ├── Product.cs
│ │ │ ├── Quantity.cs
│ │ │ └── basket.cs
│ │ ├── ImplicitLogic/
│ │ │ └── Model/
│ │ │ ├── BasketItem.cs
│ │ │ ├── BasketItemFactory.cs
│ │ │ ├── BasketItems.cs
│ │ │ ├── Product.cs
│ │ │ ├── Quantity.cs
│ │ │ └── basket.cs
│ │ ├── PPPDDD.Chap10.ecommerce.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ └── PPPDDD.Chap10.ecommerce.sln
├── 11 - Integrating Bounded Contexts/
│ └── README.md
├── 12 - Integrating Via Messaging/
│ ├── Billing.Messages/
│ │ ├── Billing.Messages.csproj
│ │ ├── Commands/
│ │ │ └── RecordPaymentAttempt.cs
│ │ ├── Events/
│ │ │ └── PaymentAccepted.cs
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Billing.Payments.PaymentAccepted/
│ │ ├── App.config
│ │ ├── Billing.Payments.PaymentAccepted.csproj
│ │ ├── EndpointConfig.cs
│ │ ├── OrderCreatedHandler.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── RecordPaymentAttemptHandler.cs
│ │ └── packages.config
│ ├── DDDesign.Web/
│ │ ├── App_Start/
│ │ │ ├── FilterConfig.cs
│ │ │ ├── RouteConfig.cs
│ │ │ └── WebApiConfig.cs
│ │ ├── Controllers/
│ │ │ └── OrdersController.cs
│ │ ├── DDDesign.Web.csproj
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ ├── Orders/
│ │ │ │ └── Index.cshtml
│ │ │ └── Web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── DDDesign.sln
│ ├── Promotions.LuckyWinner.LuckyWinnerSelected/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── Program.cs
│ │ ├── Promotions.LuckyWinner.LuckyWinnerSelected.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── OrderCreatedHandler.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Promotions.LuckyWinner.LuckyWinnerSelected.Bridge.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── README.md
│ ├── Sales.Messages/
│ │ ├── Commands/
│ │ │ └── PlaceOrder.cs
│ │ ├── Events/
│ │ │ ├── OrderCreated.cs
│ │ │ └── OrderCreated_V2.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── Sales.Messages.csproj
│ ├── Sales.Orders.OrderCreated/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── PlaceOrderHandler.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Sales.Orders.OrderCreated.csproj
│ │ └── packages.config
│ ├── Shipping.BusinessCustomers.ShippingArranged/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ └── Handlers.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Shipping.BusinessCustomers.ShippingArranged.csproj
│ │ └── packages.config
│ └── Shipping.Messages/
│ ├── Events/
│ │ └── ShippingArranged.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── Shipping.Messages.csproj
├── 13 - Integrating Via Http and Rest/
│ ├── PPPDDD.JSON.SocialMedia/
│ │ ├── AccountManagement/
│ │ │ ├── AccountManagement.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── FollowerDirectoryController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── Discovery/
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── RecommenderController.cs
│ │ │ ├── Discovery.csproj
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPDDD.JSON.SocialMedia.sln
│ ├── PPPDDD.REST.SocialMedia/
│ │ ├── .gitignore
│ │ ├── AccountManagement.Accounts.Api/
│ │ │ ├── AccountManagement.Accounts.Api.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── AccountsController.cs
│ │ │ │ └── FollowersController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── AccountManagement.EntryPoint/
│ │ │ ├── .gitignore
│ │ │ ├── AccountManagement.EntryPoint.Api.csproj
│ │ │ ├── App_Start/
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── EntryPointController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── MIT-LICENSE.txt
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── README.md
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ ├── browser.html
│ │ │ ├── js/
│ │ │ │ ├── hal/
│ │ │ │ │ ├── browser.js
│ │ │ │ │ ├── http/
│ │ │ │ │ │ └── client.js
│ │ │ │ │ ├── resource.js
│ │ │ │ │ └── views/
│ │ │ │ │ ├── browser.js
│ │ │ │ │ ├── documentation.js
│ │ │ │ │ ├── embedded_resource.js
│ │ │ │ │ ├── embedded_resources.js
│ │ │ │ │ ├── explorer.js
│ │ │ │ │ ├── inspector.js
│ │ │ │ │ ├── links.js
│ │ │ │ │ ├── location_bar.js
│ │ │ │ │ ├── navigation.js
│ │ │ │ │ ├── non_safe_request_dialog.js
│ │ │ │ │ ├── properties.js
│ │ │ │ │ ├── query_uri_dialog.js
│ │ │ │ │ ├── request_headers.js
│ │ │ │ │ ├── resource.js
│ │ │ │ │ ├── response.js
│ │ │ │ │ ├── response_body.js
│ │ │ │ │ └── response_headers.js
│ │ │ │ └── hal.js
│ │ │ ├── packages.config
│ │ │ ├── styles.css
│ │ │ └── vendor/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-responsive.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── backbone.js
│ │ │ ├── bootstrap.js
│ │ │ ├── jquery-1.10.2.js
│ │ │ ├── underscore.js
│ │ │ └── uritemplates.js
│ │ ├── AccountManagement.RegularAccounts.BeganFollowing/
│ │ │ ├── AccountManagement.RegularAccounts.BeganFollowing.csproj
│ │ │ ├── App_Start/
│ │ │ │ ├── EnableCorsAttribute.cs
│ │ │ │ └── WebApiConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ └── BeganFollowingController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ ├── Discovery.Reccommendations.Followers/
│ │ │ ├── BeganFollowingPollingFeedConsumer.cs
│ │ │ ├── Discovery.Reccommendations.Followers.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDD.REST.SocialMedia.sln
│ ├── PPPDDD.SOAP.SocialMedia/
│ │ ├── AccountManagement/
│ │ │ ├── AccountManagement.csproj
│ │ │ ├── FollowerDirectory.svc
│ │ │ ├── FollowerDirectory.svc.cs
│ │ │ ├── IFollowerDirectory.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ └── Web.config
│ │ ├── Discovery/
│ │ │ ├── Discovery.csproj
│ │ │ ├── IRecommender.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Recommender.svc
│ │ │ ├── Recommender.svc.cs
│ │ │ ├── Service References/
│ │ │ │ └── AccountManagement/
│ │ │ │ ├── Discovery.AccountManagement.Follower.datasource
│ │ │ │ ├── FollowerDirectory.disco
│ │ │ │ ├── FollowerDirectory.wsdl
│ │ │ │ ├── FollowerDirectory.xsd
│ │ │ │ ├── FollowerDirectory1.xsd
│ │ │ │ ├── FollowerDirectory2.xsd
│ │ │ │ ├── FollowerDirectory3.xsd
│ │ │ │ ├── Reference.cs
│ │ │ │ ├── Reference.svcmap
│ │ │ │ ├── configuration.svcinfo
│ │ │ │ └── configuration91.svcinfo
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ └── Web.config
│ │ └── PPPDDD.SOAP.SocialMedia.sln
│ └── README.md
├── 14 - Introducing Domain Modelling Patterns and Best Practices/
│ └── README.md
├── 15 - Value Objects/
│ ├── Examples/
│ │ ├── BankAccount/
│ │ │ └── BankAccount.cs
│ │ ├── Examples.csproj
│ │ ├── Model/
│ │ │ ├── BankAccount.cs
│ │ │ ├── Customer.cs
│ │ │ ├── Meters.cs
│ │ │ ├── MicroTypes.cs
│ │ │ ├── Money.cs
│ │ │ ├── Name.cs
│ │ │ └── ValueObject.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── app.config
│ │ └── packages.config
│ ├── PPPDDD.Chap16.ValueObjects.sln
│ ├── README.md
│ └── Tests/
│ ├── Tests/
│ │ ├── Combining_money_tests.cs
│ │ ├── DateTime_immutability_tests.cs
│ │ ├── Denormalized_persistence_example.cs
│ │ ├── Meters_equality_tests.cs
│ │ ├── Micro_types_example_tests.cs
│ │ ├── Name_validation_tests.cs
│ │ ├── Normalized_persistence_example.cs
│ │ ├── Persistence_format_examples.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Tests.csproj
│ │ ├── TimeSpan_factory_method_tests.cs
│ │ ├── app.config
│ │ └── packages.config
│ └── Tests.sln
├── 16 - Entities/
│ ├── PPPDDDChap17.Entities.Examples/
│ │ ├── Customer.cs
│ │ ├── Model/
│ │ │ ├── Book.cs
│ │ │ ├── Dice.cs
│ │ │ ├── FlightBooking.cs
│ │ │ ├── GlobalCounter.cs
│ │ │ ├── HolidayBooking.cs
│ │ │ ├── Hotel.cs
│ │ │ ├── OnlineTakeawayOrder.cs
│ │ │ ├── SoccerMatch.cs
│ │ │ └── Vehicle.cs
│ │ ├── PPPDDDChap17.Entities.Examples.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── PPPDDDChap17.Entities.Tests/
│ │ ├── BookTests.cs
│ │ ├── DatastoreIdGenerationExample.cs
│ │ ├── FlightBookingTests.cs
│ │ ├── GlobalCounterTest.cs
│ │ ├── HolidayBookingTest.cs
│ │ ├── HotelTests.cs
│ │ ├── PPPDDDChap17.Entities.Tests.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── app.config
│ │ └── packages.config
│ ├── PPPDDDChap17.Entities.sln
│ └── README.md
├── 17 - Domain Services/
│ ├── PPPDDDChap18.DomainServices/
│ │ ├── Insurance/
│ │ │ ├── Application/
│ │ │ │ └── MultiMemberInsurancePremium.cs
│ │ │ └── Model/
│ │ │ ├── IMemberRepository.cs
│ │ │ ├── IMultiMemberPremiumCalculator.cs
│ │ │ ├── IPolicyRepository.cs
│ │ │ ├── Member.cs
│ │ │ ├── Policy.cs
│ │ │ └── Quote.cs
│ │ ├── OnlineDating/
│ │ │ └── Model/
│ │ │ ├── BloodType.cs
│ │ │ ├── CompatibilityRating.cs
│ │ │ ├── LoveSeeker.cs
│ │ │ └── RomanceOMeter.cs
│ │ ├── OnlineGaming/
│ │ │ ├── WithDomainServices/
│ │ │ │ └── Model/
│ │ │ │ ├── Competitor.cs
│ │ │ │ ├── IGame.cs
│ │ │ │ ├── IGameRewardPolicy.cs
│ │ │ │ ├── IGameScoringPolicy.cs
│ │ │ │ ├── IScoreFinder.cs
│ │ │ │ ├── OnlineDeathmatch.cs
│ │ │ │ ├── Ranking.cs
│ │ │ │ └── Score.cs
│ │ │ └── WithoutDomainServices/
│ │ │ └── Model/
│ │ │ ├── Competitor.cs
│ │ │ ├── OnlineDeathmatch.cs
│ │ │ ├── Ranking.cs
│ │ │ └── Score.cs
│ │ ├── PPPDDDChap18.DomainServices.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── RestaurantBooking/
│ │ │ └── Model/
│ │ │ ├── BookingDetails.cs
│ │ │ ├── Customer.cs
│ │ │ ├── DomainEvents.cs
│ │ │ ├── Events/
│ │ │ │ └── BookingConfirmedByCustomer.cs
│ │ │ ├── Handlers/
│ │ │ │ └── NotifyRestaurantOnCustomerBookingConfirmation.cs
│ │ │ ├── IHandleEvents.cs
│ │ │ ├── Restaurant.cs
│ │ │ ├── RestaurantBooking.cs
│ │ │ ├── RestaurantBookingFactory.cs
│ │ │ ├── RestaurantBookingRepository.cs
│ │ │ └── RestaurantNotifier.cs
│ │ └── Shipping/
│ │ ├── Application/
│ │ │ └── ShippingRouteFinder.cs
│ │ └── Model/
│ │ └── IShippingRouteFinder.cs
│ ├── PPPDDDChap18.DomainServices.sln
│ └── README.md
├── 18 - Domain Events/
│ ├── .nuget/
│ │ ├── NuGet.Config
│ │ └── NuGet.targets
│ ├── DomainEvents.OnlineTakeawayStore.sln
│ ├── OnlineTakeawayStore.NServiceBus/
│ │ ├── App.config
│ │ ├── Application/
│ │ │ ├── ConfirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Infrastructure/
│ │ │ └── EndpointConfig.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.NServiceBus.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── OnlineTakeawayStore.NativeEvents/
│ │ ├── Application/
│ │ │ ├── CofirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.NativeEvents.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ ├── OnlineTakeawayStore.ReturnEvents/
│ │ ├── Application/
│ │ │ └── ConfirmDeliveryOfOrder.cs
│ │ ├── Infrastructure/
│ │ │ └── IEventDispatcher.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.ReturnEvents.csproj
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── OnlineTakeawayStore.StaticDomainEvents/
│ │ ├── Application/
│ │ │ ├── ConfirmDeliveryOfOrder.cs
│ │ │ └── Events/
│ │ │ └── RefundDueToLateDelivery.cs
│ │ ├── Infrastructure/
│ │ │ └── DomainEvents.cs
│ │ ├── Model/
│ │ │ ├── Events/
│ │ │ │ └── DeliveryGuaranteeFailed.cs
│ │ │ ├── FoodDeliveryOrderSteps.cs
│ │ │ ├── IDeliveryGuaranteeOffer.cs
│ │ │ ├── IOrderRepository.cs
│ │ │ └── OrderForDelivery.cs
│ │ ├── OnlineTakeawayStore.StaticDomainEvents.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── packages.config
│ └── OnlineTakeawayStore.Tests/
│ ├── OnlineTakeawayStore.Tests.csproj
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── ServiceLayerTestExamples/
│ │ └── Delivery_guarantee_failed.cs
│ ├── UnitTestExamples/
│ │ ├── ReturnDomainEvents.cs
│ │ └── StaticDomainEvents.cs
│ └── packages.config
├── 19 - Aggregates/
│ ├── PPPDDDChap19.eBidder/
│ │ ├── PPPDDDChap19.eBidder.Common/
│ │ │ ├── PPPDDDChap19.eBidder.Common.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── PPPDDDChap19.eBidder.Disputes/
│ │ │ ├── PPPDDDChap19.eBidder.Disputes.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ ├── PPPDDDChap19.eBidder.Listings/
│ │ │ ├── Application/
│ │ │ │ ├── Auctions/
│ │ │ │ │ └── BusinessUseCases/
│ │ │ │ │ ├── AuctionCreation.cs
│ │ │ │ │ ├── BidOnAuctionService.cs
│ │ │ │ │ └── CreateAuctionService.cs
│ │ │ │ ├── QandA/
│ │ │ │ │ └── BusinessUseCases/
│ │ │ │ │ ├── Answer.cs
│ │ │ │ │ ├── AnswerAQuestionService.cs
│ │ │ │ │ └── AskAQuestionService.cs
│ │ │ │ └── Watching/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── UnWatchItem.cs
│ │ │ │ ├── WatchItem.cs
│ │ │ │ └── WatchItemService.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── ListingFormat/
│ │ │ │ │ ├── Auctions/
│ │ │ │ │ │ ├── Auction.cs
│ │ │ │ │ │ ├── AuctionId.cs
│ │ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ │ ├── BidHistory/
│ │ │ │ │ │ │ ├── Bid.cs
│ │ │ │ │ │ │ └── IBidHistoryRepository.cs
│ │ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ │ ├── Offer.cs
│ │ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ │ ├── Price.cs
│ │ │ │ │ │ └── WinningBid.cs
│ │ │ │ │ └── FixedPriceListings/
│ │ │ │ │ ├── FixedPriceListing.cs
│ │ │ │ │ ├── IFixedPriceListingRepository.cs
│ │ │ │ │ └── Offers/
│ │ │ │ │ └── BestOffer.cs
│ │ │ │ ├── Listings/
│ │ │ │ │ ├── FormatType.cs
│ │ │ │ │ ├── IListingRepository.cs
│ │ │ │ │ ├── Listing.cs
│ │ │ │ │ ├── ListingFormat.cs
│ │ │ │ │ ├── ListingRevision.cs
│ │ │ │ │ └── ListingRevisionEvent.cs
│ │ │ │ ├── Members/
│ │ │ │ │ ├── IMemberService.cs
│ │ │ │ │ └── Member.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ ├── QandA/
│ │ │ │ │ ├── Answer.cs
│ │ │ │ │ ├── IQuestionRepository.cs
│ │ │ │ │ ├── Question.cs
│ │ │ │ │ ├── QuestionAnswered.cs
│ │ │ │ │ └── QuestionSubmitted.cs
│ │ │ │ ├── Sellers/
│ │ │ │ │ ├── ISellerService.cs
│ │ │ │ │ └── Seller.cs
│ │ │ │ └── WatchLists/
│ │ │ │ ├── IWatchedItemRepository.cs
│ │ │ │ └── WatchedItem.cs
│ │ │ ├── PPPDDDChap19.eBidder.Listings.csproj
│ │ │ └── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── PPPDDDChap19.eBidder.Membership/
│ │ │ ├── Model/
│ │ │ │ └── Members/
│ │ │ │ ├── IMemberRepository.cs
│ │ │ │ └── Member.cs
│ │ │ ├── PPPDDDChap19.eBidder.Membership.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ ├── PPPDDDChap19.eBidder.SellerAccount/
│ │ │ ├── PPPDDDChap19.eBidder.SellerAccount.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── _ReadMe.txt
│ │ └── PPPDDDChap19.eBidder.sln
│ └── README.md
├── 20 - Factories/
│ └── README.md
├── 21 - Repositories/
│ ├── DDDPPP.Chap21.EFExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.EFExample.Application/
│ │ │ ├── App.config
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.EFExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionDatabaseContext.cs
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── DataModel/
│ │ │ │ │ ├── AuctionDTO.cs
│ │ │ │ │ └── BidDTO.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── Mapping/
│ │ │ │ │ ├── AuctionMap.cs
│ │ │ │ │ └── BidMap.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AuctionSnapshot.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoneySnapshot.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ ├── WinningBid.cs
│ │ │ │ │ └── WinningBidSnapshot.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── BidHistory.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.EFExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.EFExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.EFExample.sln
│ ├── DDDPPP.Chap21.MicroORM/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.MicroORM.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.MicroORM.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── ConcurrencyException.cs
│ │ │ │ ├── DataModel/
│ │ │ │ │ ├── AuctionDTO.cs
│ │ │ │ │ └── BidDTO.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IAggregateDataModel.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── IUnitOfWork.cs
│ │ │ │ ├── IUnitOfWorkRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ ├── UnitOfWork.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AuctionSnapshot.cs
│ │ │ │ │ ├── Bid.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoneySnapshot.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ ├── WinningBid.cs
│ │ │ │ │ └── WinningBidSnapshot.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── BidHistory.cs
│ │ │ │ ├── HistoricalBid.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.MicroORM.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.MicroORM.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.MicroORM.sln
│ ├── DDDPPP.Chap21.NHibernateExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.NHibernateExample.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.NHibernateExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── Auction.hbm.xml
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── Bid.hbm.xml
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ └── WinningBid.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.NHibernateExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.NHibernateExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.NHibernateExample.sln
│ ├── DDDPPP.Chap21.RavenDBExample/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── DDDPPP.Chap21.RavenDBExample.Application/
│ │ │ ├── Application/
│ │ │ │ ├── BusinessUseCases/
│ │ │ │ │ ├── BidOnAuction.cs
│ │ │ │ │ ├── CreateAuction.cs
│ │ │ │ │ └── NewAuctionRequest.cs
│ │ │ │ └── Queries/
│ │ │ │ ├── AuctionStatus.cs
│ │ │ │ ├── AuctionStatusQuery.cs
│ │ │ │ ├── BidHistoryQuery.cs
│ │ │ │ └── BidInformation.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Application.csproj
│ │ │ ├── Infrastructure/
│ │ │ │ ├── AuctionRepository.cs
│ │ │ │ ├── BidHistoryRepository.cs
│ │ │ │ ├── BidHistory_NumberOfBids.cs
│ │ │ │ ├── DomainEvents.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ ├── Auction/
│ │ │ │ │ ├── Auction.cs
│ │ │ │ │ ├── AutomaticBidder.cs
│ │ │ │ │ ├── BidPlaced.cs
│ │ │ │ │ ├── IAuctionRepository.cs
│ │ │ │ │ ├── Money.cs
│ │ │ │ │ ├── MoneyCannotBeANegativeValueException.cs
│ │ │ │ │ ├── MoreThanTwoDecimalPlacesInMoneyValueException.cs
│ │ │ │ │ ├── Offer.cs
│ │ │ │ │ ├── OutBid.cs
│ │ │ │ │ ├── Price.cs
│ │ │ │ │ └── WinningBid.cs
│ │ │ │ └── BidHistory/
│ │ │ │ ├── Bid.cs
│ │ │ │ ├── BidHistory.cs
│ │ │ │ └── IBidHistoryRepository.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.RavenDBExample.Application.Tests/
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Application.Tests.csproj
│ │ │ ├── Domain/
│ │ │ │ └── AutomaticBidderScenarios.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── DDDPPP.Chap21.RavenDBExample.Presentation/
│ │ │ ├── App.config
│ │ │ ├── DDDPPP.Chap21.RavenDBExample.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── DDDPPP.Chap21.RavenDBExample.sln
│ └── Database_script_for_examples.sql
├── 22 - Event Sourcing/
│ ├── PPPDDD.Chap23.EventSourcing.EventStoreDemo/
│ │ ├── GetEventStore.cs
│ │ ├── ImportTestData.cs
│ │ ├── PPPDDD.Chap23.EventSourcing.EventStoreDemo.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Tests.cs
│ │ └── packages.config
│ ├── PPPDDDChap22/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── PPPDDDChap23.EventSourcing.Application/
│ │ │ ├── Application/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── CreateAccount.cs
│ │ │ │ ├── RecordPhonecall.cs
│ │ │ │ └── TopUpCredit.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── EventSourcedAggregate.cs
│ │ │ │ ├── EventStore.cs
│ │ │ │ ├── EventStream.cs
│ │ │ │ ├── EventWrapper.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── PayAsYouGoAccountRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ └── PayAsYouGo/
│ │ │ │ ├── AccountCreated.cs
│ │ │ │ ├── CreditAdded.cs
│ │ │ │ ├── CreditSatisfiesFreeCallAllowanceOffer.cs
│ │ │ │ ├── FreeCallAllowance.cs
│ │ │ │ ├── IPayAsYouGoAccountRepository.cs
│ │ │ │ ├── Minutes.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── PayAsYouGoAccount.cs
│ │ │ │ ├── PayAsYouGoAccountSnapshot.cs
│ │ │ │ ├── PayAsYouGoInclusiveMinutesOffer.cs
│ │ │ │ ├── PhoneCall.cs
│ │ │ │ ├── PhoneCallCharged.cs
│ │ │ │ ├── PhoneCallCosting.cs
│ │ │ │ └── PhoneNumber.cs
│ │ │ ├── PPPDDDChap23.EventSourcing.Application.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests/
│ │ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.Presentation/
│ │ │ ├── App.config
│ │ │ ├── PPPDDDChap23.EventSourcing.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDDChap23.EventSourcing.sln
│ ├── PPPDDDChap23.EventSourcing/
│ │ ├── .nuget/
│ │ │ ├── NuGet.Config
│ │ │ └── NuGet.targets
│ │ ├── PPPDDDChap23.EventSourcing.Application/
│ │ │ ├── Application/
│ │ │ │ └── BusinessUseCases/
│ │ │ │ ├── CreateAccount.cs
│ │ │ │ ├── RecordPhonecall.cs
│ │ │ │ └── TopUpCredit.cs
│ │ │ ├── Bootstrapper.cs
│ │ │ ├── Infrastructure/
│ │ │ │ ├── DomainEvent.cs
│ │ │ │ ├── Entity.cs
│ │ │ │ ├── EventSourcedAggregate.cs
│ │ │ │ ├── EventStore.cs
│ │ │ │ ├── EventStream.cs
│ │ │ │ ├── EventWrapper.cs
│ │ │ │ ├── IClock.cs
│ │ │ │ ├── PasAsYouGoSnapshotJob.cs
│ │ │ │ ├── PayAsYouGoAccountRepository.cs
│ │ │ │ ├── SystemClock.cs
│ │ │ │ └── ValueObject.cs
│ │ │ ├── Model/
│ │ │ │ └── PayAsYouGo/
│ │ │ │ ├── AccountCreated.cs
│ │ │ │ ├── CreditAdded.cs
│ │ │ │ ├── CreditSatisfiesFreeCallAllowanceOffer.cs
│ │ │ │ ├── FreeCallAllowance.cs
│ │ │ │ ├── IPayAsYouGoAccountRepository.cs
│ │ │ │ ├── Minutes.cs
│ │ │ │ ├── Money.cs
│ │ │ │ ├── PayAsYouGoAccount.cs
│ │ │ │ ├── PayAsYouGoAccountSnapshot.cs
│ │ │ │ ├── PayAsYouGoInclusiveMinutesOffer.cs
│ │ │ │ ├── PhoneCall.cs
│ │ │ │ ├── PhoneCallCharged.cs
│ │ │ │ ├── PhoneCallCosting.cs
│ │ │ │ └── PhoneNumber.cs
│ │ │ ├── PPPDDDChap23.EventSourcing.Application.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests/
│ │ │ ├── PPPDDDChap23.EventSourcing.ApplicationTests.csproj
│ │ │ ├── PayAsYouGoAccount_Tests.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── PPPDDDChap23.EventSourcing.Presentation/
│ │ │ ├── App.config
│ │ │ ├── PPPDDDChap23.EventSourcing.Presentation.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── PPPDDDChap23.EventSourcing.sln
│ └── README.md
├── 23 - Architecting Application User Interfaces/
│ ├── PPPDDD.NonDist.UIComp/
│ │ ├── PPPDDD.NonDist.UIComp/
│ │ │ ├── App_Start/
│ │ │ │ └── RouteConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── CatalogueBoundedContextController.cs
│ │ │ │ ├── HomeController.cs
│ │ │ │ ├── PricingBoundedContextController.cs
│ │ │ │ └── ShippingBoundedContextController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── PPPDDD.NonDist.UIComp.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Scripts/
│ │ │ │ ├── jquery-1.10.2.intellisense.js
│ │ │ │ ├── jquery-1.10.2.js
│ │ │ │ ├── jquery.validate-vsdoc.js
│ │ │ │ ├── jquery.validate.js
│ │ │ │ └── jquery.validate.unobtrusive.js
│ │ │ ├── Views/
│ │ │ │ ├── CatalogBoundedContext/
│ │ │ │ │ └── ItemInBasket.cshtml
│ │ │ │ ├── Home/
│ │ │ │ │ └── Index.cshtml
│ │ │ │ ├── PricingBoundedContext/
│ │ │ │ │ └── Price.cshtml
│ │ │ │ ├── ShippingBoundedContext/
│ │ │ │ │ └── DeliveryOptions.cshtml
│ │ │ │ └── web.config
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPDDD.NonDist.UIComp.sln
│ ├── PPPSSS.Dist.UIComp/
│ │ ├── PPPSSS.Dist.UIComp/
│ │ │ ├── App_Start/
│ │ │ │ └── RouteConfig.cs
│ │ │ ├── Controllers/
│ │ │ │ ├── HolidaysController.cs
│ │ │ │ ├── HomeController.cs
│ │ │ │ ├── PromotionsController.cs
│ │ │ │ └── RecommendationsController.cs
│ │ │ ├── Global.asax
│ │ │ ├── Global.asax.cs
│ │ │ ├── PPPSSS.Dist.UIComp.csproj
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Scripts/
│ │ │ │ ├── jquery-1.10.2.intellisense.js
│ │ │ │ ├── jquery-1.10.2.js
│ │ │ │ ├── jquery.validate-vsdoc.js
│ │ │ │ ├── jquery.validate.js
│ │ │ │ ├── jquery.validate.unobtrusive.js
│ │ │ │ └── pppddd-application.js
│ │ │ ├── Views/
│ │ │ │ ├── Home/
│ │ │ │ │ └── Index.cshtml
│ │ │ │ └── web.config
│ │ │ ├── Web.Debug.config
│ │ │ ├── Web.Release.config
│ │ │ ├── Web.config
│ │ │ └── packages.config
│ │ └── PPPSSS.Dist.UIComp.sln
│ └── README.md
├── 24 - CQRS An Architecture of A Bounded Context/
│ └── README.md
├── 25 - Commands Application Service Patterns for processing Business Use Cases/
│ ├── .nuget/
│ │ ├── NuGet.Config
│ │ └── NuGet.targets
│ ├── DDDPPP.Chap20.CommandHandler.Application/
│ │ ├── Application/
│ │ │ ├── Api.cs
│ │ │ ├── Commands/
│ │ │ │ ├── AddProductToBasketCommand.cs
│ │ │ │ ├── ApplyCouponToBasketCommand.cs
│ │ │ │ ├── CreateABasketCommand.cs
│ │ │ │ ├── RemoveOfferFromBasketCommand.cs
│ │ │ │ ├── RemoveProductFromBasketCommand.cs
│ │ │ │ └── UpdateBasketDeliveryCountry.cs
│ │ │ ├── Contract/
│ │ │ │ └── _readme.txt
│ │ │ ├── Handlers/
│ │ │ │ ├── AddProductToBasketCommandHandler.cs
│ │ │ │ ├── ApplyCouponToBasketCommandHandler.cs
│ │ │ │ ├── CreateABasketCommandHandler.cs
│ │ │ │ ├── RemoveCouponFromBasketCommandHandler.cs
│ │ │ │ └── RemoveProductFromBasketCommandHandler.cs
│ │ │ └── ReadModel/
│ │ │ └── Product.cs
│ │ ├── CommandHandlerRegistry.cs
│ │ ├── DDDPPP.Chap20.CommandHandler.Application.csproj
│ │ ├── DomainEventHandlerRegistery.cs
│ │ ├── Infrastructure/
│ │ │ ├── BasketRepository.cs
│ │ │ ├── Mapping/
│ │ │ │ ├── Basket.hbm.xml
│ │ │ │ ├── BasketItem.hbm.xml
│ │ │ │ ├── BasketVoucher.hbm.xml
│ │ │ │ ├── Offer.hbm.xml
│ │ │ │ └── Product.hbm.xml
│ │ │ └── PromotionsRepository.cs
│ │ ├── Model/
│ │ │ ├── Baskets/
│ │ │ │ ├── Basket.cs
│ │ │ │ ├── BasketItem.cs
│ │ │ │ ├── BasketItemFactory.cs
│ │ │ │ ├── BasketPricingBreakdown.cs
│ │ │ │ ├── BasketPricingService.cs
│ │ │ │ ├── Events/
│ │ │ │ │ ├── BasketCreated.cs
│ │ │ │ │ ├── BasketModified.cs
│ │ │ │ │ ├── BasketPriceChanged.cs
│ │ │ │ │ └── CouponNotApplicableForBasketItems.cs
│ │ │ │ ├── IBasketPricingService.cs
│ │ │ │ ├── IBasketRepository.cs
│ │ │ │ ├── NonNegativeQuantity.cs
│ │ │ │ └── ProductSnapshot.cs
│ │ │ └── Promotions/
│ │ │ ├── Coupon.cs
│ │ │ ├── CouponIssues.cs
│ │ │ ├── ICouponPolicy.cs
│ │ │ ├── IPromotionsRepository.cs
│ │ │ ├── Promotion.cs
│ │ │ └── PromotionNotApplicableException.cs
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── DDDPPP.Chap20.CommandHandler.Presentation/
│ │ ├── Content/
│ │ │ ├── Site.css
│ │ │ └── themes/
│ │ │ └── base/
│ │ │ ├── jquery-ui.css
│ │ │ ├── jquery.ui.accordion.css
│ │ │ ├── jquery.ui.all.css
│ │ │ ├── jquery.ui.autocomplete.css
│ │ │ ├── jquery.ui.base.css
│ │ │ ├── jquery.ui.button.css
│ │ │ ├── jquery.ui.core.css
│ │ │ ├── jquery.ui.datepicker.css
│ │ │ ├── jquery.ui.dialog.css
│ │ │ ├── jquery.ui.progressbar.css
│ │ │ ├── jquery.ui.resizable.css
│ │ │ ├── jquery.ui.selectable.css
│ │ │ ├── jquery.ui.slider.css
│ │ │ ├── jquery.ui.tabs.css
│ │ │ └── jquery.ui.theme.css
│ │ ├── Controllers/
│ │ │ ├── AccountController.cs
│ │ │ └── HomeController.cs
│ │ ├── DDDPPP.Chap20.CommandHandler.Presentation.csproj
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── Models/
│ │ │ └── AccountModels.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Scripts/
│ │ │ ├── MicrosoftAjax.debug.js
│ │ │ ├── MicrosoftAjax.js
│ │ │ ├── MicrosoftMvcAjax.debug.js
│ │ │ ├── MicrosoftMvcAjax.js
│ │ │ ├── MicrosoftMvcValidation.debug.js
│ │ │ ├── MicrosoftMvcValidation.js
│ │ │ ├── jquery-1.7.1.intellisense.js
│ │ │ ├── jquery-1.7.1.js
│ │ │ ├── jquery-ui-1.8.20.js
│ │ │ ├── jquery.unobtrusive-ajax.js
│ │ │ ├── jquery.validate-vsdoc.js
│ │ │ ├── jquery.validate.js
│ │ │ ├── jquery.validate.unobtrusive.js
│ │ │ └── modernizr-2.5.3.js
│ │ ├── Views/
│ │ │ ├── Account/
│ │ │ │ ├── ChangePassword.aspx
│ │ │ │ ├── ChangePasswordSuccess.aspx
│ │ │ │ ├── LogOn.aspx
│ │ │ │ └── Register.aspx
│ │ │ ├── Home/
│ │ │ │ ├── About.aspx
│ │ │ │ └── Index.aspx
│ │ │ ├── Shared/
│ │ │ │ ├── Error.aspx
│ │ │ │ ├── LogOnUserControl.ascx
│ │ │ │ └── Site.Master
│ │ │ └── Web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── DDDPPP.Chap20.CommandHandler.sln
│ ├── PPPDDD.ApplicationServices.Gambling/
│ │ ├── App_Start/
│ │ │ └── RouteConfig.cs
│ │ ├── ApplicationServices/
│ │ │ ├── 1_validation/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 2_transaction/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 3_error_handling/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 4_logging_metrics/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── 5_authentication/
│ │ │ │ └── AdminRecommendAFriendService.cs
│ │ │ ├── 6_communication/
│ │ │ │ └── RecommendAFriendService.cs
│ │ │ ├── AsyncAwait/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── CommandProcessor/
│ │ │ │ ├── BloatedRecommendAFriendService.cs
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── CommandProcessorChained/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── FrameworkHooks/
│ │ │ │ ├── ErrorFilter.cs
│ │ │ │ └── TransactionFilter.cs
│ │ │ ├── PublishSubscribe/
│ │ │ │ └── RecommendAFriend.cs
│ │ │ ├── PublishSubscribeAsync/
│ │ │ │ └── ReferAFriend.cs
│ │ │ └── RequestReply/
│ │ │ └── RecommendAFriend.cs
│ │ ├── Controllers/
│ │ │ └── RecommendAFriendController.cs
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── PPPDDD.ApplicationServices.RecommendAFriend.csproj
│ │ ├── PPPDDD.ApplicationServices.RecommendAFriend.sln
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ └── web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── PPPDDD.ApplicationServices.RecommendAFriend.sln
│ └── PPPDDD.ApplicationServices.Tests/
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Refer_a_friend.cs
│ ├── Tests.csproj
│ └── packages.config
├── 26 - Queries Domain Reporting/
│ ├── PPPDDD.Reporting/
│ │ ├── App_Start/
│ │ │ └── RouteConfig.cs
│ │ ├── Controllers/
│ │ │ ├── DealershipPerformanceReportController.cs
│ │ │ ├── DealershipReportUsingMediatorController.cs
│ │ │ ├── DenormalizedLoyaltyReportController.cs
│ │ │ ├── HealthcareEventProjectionReportController.cs
│ │ │ └── LoyaltyReportQueryingDatastoreController.cs
│ │ ├── Global.asax
│ │ ├── Global.asax.cs
│ │ ├── PPPDDD.Reporting.csproj
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Views/
│ │ │ └── web.config
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ ├── Web.config
│ │ └── packages.config
│ ├── PPPDDD.Reporting.sln
│ ├── README.md
│ └── SportsStoreDatabase/
│ ├── LoyaltyAccounts.sql
│ ├── LoyaltySettings.sql
│ ├── Orders.sql
│ ├── TestData.sql
│ ├── Users.sql
│ └── sportsstoredatabase.sqlproj
├── README.md
└── eBidder Case Study/
└── README.md
Showing preview only (291K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2630 symbols across 530 files)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Application/BidOnAuctionService.cs
class BidOnAuctionService (line 6) | public class BidOnAuctionService
method BidOnAuctionService (line 10) | public BidOnAuctionService(IAuctionRepository auctions)
method Bid (line 16) | public void Bid(Guid auctionId, Guid memberId, decimal amount, DateTim...
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Auction.cs
class Auction (line 6) | public class Auction
method Auction (line 8) | private Auction() { }
method Auction (line 10) | public Auction(Guid id, Guid listingId, Money startingPrice, DateTime ...
method StillInProgress (line 38) | private bool StillInProgress(DateTime currentTime)
method CanPlaceBid (line 43) | public bool CanPlaceBid()
method PlaceBidFor (line 48) | public void PlaceBidFor(Bid bid, DateTime currentTime)
method BidderIsIncreasingMaximumBid (line 63) | private bool BidderIsIncreasingMaximumBid(Bid bid)
method IsFirstBid (line 68) | private bool IsFirstBid()
method RegisterFirst (line 73) | private void RegisterFirst(Bid bid)
method Place (line 79) | private void Place(WinningBid newBid)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Bid.cs
class Bid (line 6) | public class Bid
method Bid (line 8) | public Bid(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/HistoricalBid.cs
class HistoricalBid (line 9) | public class HistoricalBid
method HistoricalBid (line 11) | public HistoricalBid(Guid bidder, Money Bid, DateTime timeOfBid)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/IAuctionRepository.cs
type IAuctionRepository (line 5) | public interface IAuctionRepository
method Add (line 7) | void Add(Auction item);
method FindBy (line 8) | Auction FindBy(Guid Id);
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Money.cs
class Money (line 6) | public class Money
method Money (line 10) | public Money()
method Money (line 15) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 22) | private void ThrowExceptionIfNotValid(decimal value)
method Add (line 31) | public Money Add(Money money)
method IsGreaterThan (line 36) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 41) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 46) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 51) | public override string ToString()
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Price.cs
class Price (line 6) | public class Price
method Price (line 8) | private Price()
method Price (line 11) | public Price(Money amount)
method BidIncrement (line 21) | public Money BidIncrement()
method CanBeExceededBy (line 36) | public bool CanBeExceededBy(Money offer)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/WinningBid.cs
class WinningBid (line 6) | public class WinningBid
method WinningBid (line 8) | private WinningBid() { }
method WinningBid (line 10) | public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime t...
method RaiseMaximumBidTo (line 34) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 42) | public bool WasMadeBy(Guid bidder)
method DetermineWinningBidIncrement (line 47) | public WinningBid DetermineWinningBidIncrement(Bid newbid)
method DetermineWinnerFromProxyBidding (line 61) | private WinningBid DetermineWinnerFromProxyBidding(WinningBid winningB...
method CreateNewBid (line 85) | private WinningBid CreateNewBid(Guid bidder, Money bid, Money maxBid, ...
method MaxBidCanBeExceededBy (line 90) | private bool MaxBidCanBeExceededBy(Money bid)
method CanMeetOrExceedBidIncrement (line 95) | public bool CanMeetOrExceedBidIncrement(Money offer)
method HasNotReachedMaximumBid (line 100) | public bool HasNotReachedMaximumBid()
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Customers.cs
class Customers (line 9) | public class Customers
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Orders.cs
class Orders (line 10) | public class Orders
method Orders (line 13) | public Orders(DataSet dataSet)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/TableModuleBase.cs
class TableModuleBase (line 9) | public class TableModuleBase
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Application/BidOnAuctionService.cs
class BidOnAuctionService (line 6) | public class BidOnAuctionService
method BidOnAuctionService (line 10) | public BidOnAuctionService(BidOnAuctionCommand bidOnAuctionCommand)
method Bid (line 15) | public void Bid(Guid auctionId, Guid memberId, decimal amount, DateTim...
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/Auction.cs
class Auction (line 5) | public class Auction
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuction.cs
class BidOnAuction (line 9) | public class BidOnAuction: ICommand
method Execute (line 11) | public void Execute()
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuctionCommand.cs
class BidOnAuctionCommand (line 10) | public class BidOnAuctionCommand: ICommand
method BidOnAuctionCommand (line 17) | public BidOnAuctionCommand(Guid auctionId, Guid bidderId, decimal amou...
method Execute (line 25) | public void Execute()
method ThrowExceptionIfAuctionHasEnded (line 42) | private void ThrowExceptionIfAuctionHasEnded(Guid auctionId)
method CanMeetOrExceedBidIncrement (line 47) | private bool CanMeetOrExceedBidIncrement(decimal amount)
method UpdatePrice (line 52) | private void UpdatePrice(Guid auctionId, Guid bidderId, decimal amount...
method IncreaseMaximumBidTo (line 57) | private void IncreaseMaximumBidTo(decimal amount)
method IsIncreasingMaximimBid (line 62) | private bool IsIncreasingMaximimBid(Guid auctionId, decimal amount, Gu...
method IsFirstBid (line 67) | private bool IsFirstBid(Guid auctionId)
method PlaceFirstBid (line 72) | private void PlaceFirstBid(Guid auctionId, Guid bidderId, decimal amou...
method FirstBid (line 77) | private void FirstBid(Auction auction, Guid bidderId, decimal amount, ...
method ThrowExceptionIfNotValid (line 90) | private void ThrowExceptionIfNotValid(Guid auctionId, Guid bidderId, d...
method BidIncrement (line 108) | private decimal BidIncrement(decimal currentAuctionWinningBid)
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/CreateAuction.cs
class CreateAuction (line 9) | public class CreateAuction : ICommand
method Execute (line 11) | public void Execute()
FILE: 05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/ICommand.cs
type ICommand (line 9) | public interface ICommand
method Execute (line 11) | public void Execute();
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItem.cs
class BasketItem (line 9) | public class BasketItem
method quantity (line 11) | public Quantity quantity()
method increase_item_quantity_by (line 16) | internal void increase_item_quantity_by(Quantity quantity)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItemFactory.cs
class BasketItemFactory (line 9) | public class BasketItemFactory
method create_item_for (line 11) | internal static BasketItem create_item_for(Product product, basket bas...
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItems.cs
class BasketItems (line 9) | public class BasketItems : List<BasketItem>
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Country.cs
class Country (line 8) | public class Country
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverSeasSellingPolicyException.cs
class OverSeasSellingPolicyException (line 8) | class OverSeasSellingPolicyException : Exception
method OverSeasSellingPolicyException (line 10) | public OverSeasSellingPolicyException(string message)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverseasSellingPolicy.cs
class OverSeasSellingPolicy (line 9) | public class OverSeasSellingPolicy
method is_satisfied_by (line 13) | public bool is_satisfied_by(Quantity item_quantity, Country country)
method is_satisfied_by (line 21) | internal bool is_satisfied_by(Quantity item_quantity)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Product.cs
class Product (line 9) | public class Product
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Quantity.cs
class Quantity (line 9) | public class Quantity
method Quantity (line 11) | public Quantity(int p)
method add (line 15) | public Quantity add(Quantity quantity)
method contains_more_than (line 20) | internal bool contains_more_than(Quantity quantity_threshold)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/basket.cs
class basket (line 11) | public class basket
method add (line 16) | public void add(Product product)
method get_item_for (line 34) | private BasketItem get_item_for(Product product)
method basket_contains_an_item_for (line 39) | private bool basket_contains_an_item_for(Product product)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItem.cs
class BasketItem (line 9) | public class BasketItem
method quantity (line 11) | public Quantity quantity()
method increase_item_quantity_by (line 16) | internal void increase_item_quantity_by(Quantity quantity)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItemFactory.cs
class BasketItemFactory (line 9) | public class BasketItemFactory
method create_item_for (line 11) | internal static BasketItem create_item_for(Product product, basket bas...
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItems.cs
class BasketItems (line 9) | public class BasketItems : List<BasketItem>
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Product.cs
class Product (line 9) | public class Product
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Quantity.cs
class Quantity (line 9) | public class Quantity
method Quantity (line 11) | public Quantity(int p)
method add (line 15) | public Quantity add(Quantity quantity)
method contains_more_than (line 20) | internal bool contains_more_than(Quantity quantity_threshold)
FILE: 10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/basket.cs
class basket (line 11) | public class basket
method add (line 15) | public void add(Product product)
method get_item_for (line 32) | private BasketItem get_item_for(Product product)
method basket_contains_an_item_for (line 37) | private bool basket_contains_an_item_for(Product product)
FILE: 12 - Integrating Via Messaging/Billing.Messages/Commands/RecordPaymentAttempt.cs
class RecordPaymentAttempt (line 5) | public class RecordPaymentAttempt
type PaymentStatus (line 11) | public enum PaymentStatus
FILE: 12 - Integrating Via Messaging/Billing.Messages/Events/PaymentAccepted.cs
class PaymentAccepted (line 5) | public class PaymentAccepted
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/EndpointConfig.cs
class EndpointConfig (line 4) | public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantC...
method Init (line 6) | public void Init()
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/OrderCreatedHandler.cs
class OrderCreatedHandler (line 8) | public class OrderCreatedHandler : IHandleMessages<OrderCreated>
method Handle (line 13) | public void Handle(OrderCreated message)
class PaymentProvider (line 27) | public static class PaymentProvider
method ChargeCreditCard (line 31) | public static PaymentConfirmation ChargeCreditCard(CardDetails details...
class PaymentConfirmation (line 42) | public class PaymentConfirmation
class Database (line 47) | public static class Database
method GetCardDetailsFor (line 49) | public static CardDetails GetCardDetailsFor(string userId)
class CardDetails (line 55) | public class CardDetails
FILE: 12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/RecordPaymentAttemptHandler.cs
class RecordPaymentAttemptHandler (line 7) | public class RecordPaymentAttemptHandler : IHandleMessages<RecordPayment...
method Handle (line 12) | public void Handle(RecordPaymentAttempt message)
class Database (line 33) | public static class Database
method SavePaymentAttempt (line 35) | public static void SavePaymentAttempt(string orderId, PaymentStatus ...
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/FilterConfig.cs
class FilterConfig (line 6) | public class FilterConfig
method RegisterGlobalFilters (line 8) | public static void RegisterGlobalFilters(GlobalFilterCollection filters)
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/RouteConfig.cs
class RouteConfig (line 10) | public class RouteConfig
method RegisterRoutes (line 12) | public static void RegisterRoutes(RouteCollection routes)
FILE: 12 - Integrating Via Messaging/DDDesign.Web/App_Start/WebApiConfig.cs
class WebApiConfig (line 8) | public static class WebApiConfig
method Register (line 10) | public static void Register(HttpConfiguration config)
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Controllers/OrdersController.cs
class OrdersController (line 9) | public class OrdersController : Controller
method Index (line 11) | [HttpGet]
method Place (line 17) | [HttpPost]
FILE: 12 - Integrating Via Messaging/DDDesign.Web/Global.asax.cs
class MvcApplication (line 9) | public class MvcApplication : System.Web.HttpApplication
method Application_Start (line 15) | protected void Application_Start()
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Application/OrderCreatedHandler.cs
class OrderCreatedHandler (line 13) | public class OrderCreatedHandler : IHandleMessages<OrderCreated_V2>
method Handle (line 16) | public void Handle(OrderCreated_V2 message)
method ConvertToMassTransitXmlMessageFormat (line 35) | private string ConvertToMassTransitXmlMessageFormat(OrderCreated_V2 me...
method GenerateProductIdsXml (line 54) | private string GenerateProductIdsXml(IEnumerable<string> productIds)
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Infrastructure/EndpointConfig.cs
class EndpointConfig (line 6) | public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantC...
method Init (line 8) | public void Init()
FILE: 12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Application/Program.cs
class Program (line 12) | public class Program
method Main (line 14) | public static void Main(string[] args)
class OrderCreated (line 38) | public class OrderCreated
class OrderCreatedHandler (line 53) | public class OrderCreatedHandler
method Handle (line 55) | public void Handle(OrderCreated message)
FILE: 12 - Integrating Via Messaging/Sales.Messages/Commands/PlaceOrder.cs
class PlaceOrder (line 9) | public class PlaceOrder
FILE: 12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated.cs
class OrderCreated (line 6) | public class OrderCreated
FILE: 12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated_V2.cs
class OrderCreated_V2 (line 5) | public class OrderCreated_V2 : OrderCreated
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Application/PlaceOrderHandler.cs
class PlaceOrderHandler (line 8) | public class PlaceOrderHandler : IHandleMessages<PlaceOrder>
method Handle (line 12) | public void Handle(PlaceOrder message)
method CalculateCostOf (line 40) | private double CalculateCostOf(IEnumerable<string> productIds)
class Database (line 48) | public static class Database
method SaveOrder (line 52) | public static string SaveOrder(IEnumerable<string> productIds, string ...
FILE: 12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Infrastructure/EndpointConfig.cs
class EndpointConfig (line 5) | public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantC...
method Init (line 7) | public void Init()
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Application/Handlers.cs
class OrderCreatedHandler (line 11) | public class OrderCreatedHandler : IHandleMessages<OrderCreated_V2>
method Handle (line 17) | public void Handle(OrderCreated_V2 message)
class PaymentAcceptedHandler (line 34) | public class PaymentAcceptedHandler : IHandleMessages<PaymentAccepted>
method Handle (line 39) | public void Handle(PaymentAccepted message)
class ShippingDatabase (line 62) | public static class ShippingDatabase
method AddOrderDetails (line 66) | public static void AddOrderDetails(ShippingOrder order)
method GetCustomerAddress (line 71) | public static string GetCustomerAddress(string orderId)
class ShippingOrder (line 83) | public class ShippingOrder
class ShippingProvider (line 94) | public static class ShippingProvider
method ArrangeShippingFor (line 96) | public static ShippingConfirmation ArrangeShippingFor(string address, ...
class ShippingConfirmation (line 101) | public class ShippingConfirmation
type ShippingStatus (line 105) | public enum ShippingStatus
FILE: 12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Infrastructure/EndpointConfig.cs
class EndpointConfig (line 5) | public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Pu...
method Init (line 7) | public void Init()
FILE: 12 - Integrating Via Messaging/Shipping.Messages/Events/ShippingArranged.cs
class ShippingArranged (line 5) | public class ShippingArranged
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/App_Start/WebApiConfig.cs
class WebApiConfig (line 8) | public static class WebApiConfig
method Register (line 10) | public static void Register(HttpConfiguration config)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Controllers/FollowerDirectoryController.cs
class FollowerDirectoryController (line 10) | public class FollowerDirectoryController : ApiController
method GetUsersFollowers (line 12) | public IHttpActionResult GetUsersFollowers(string accountId)
method GenerateDummyFollowers (line 18) | private IEnumerable<Follower> GenerateDummyFollowers()
class Follower (line 33) | public class Follower
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Global.asax.cs
class WebApiApplication (line 10) | public class WebApiApplication : System.Web.HttpApplication
method Application_Start (line 12) | protected void Application_Start()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/App_Start/WebApiConfig.cs
class WebApiConfig (line 8) | public static class WebApiConfig
method Register (line 10) | public static void Register(HttpConfiguration config)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Controllers/RecommenderController.cs
class RecommenderController (line 11) | public class RecommenderController : ApiController
method GetRecommendedUsers (line 13) | public List<string> GetRecommendedUsers(string accountId)
method FindRecommendedUsersBasedOnSocialTags (line 27) | private List<string> FindRecommendedUsersBasedOnSocialTags(List<Follow...
class Follower (line 43) | public class Follower
FILE: 13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Global.asax.cs
class WebApiApplication (line 10) | public class WebApiApplication : System.Web.HttpApplication
method Application_Start (line 12) | protected void Application_Start()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/App_Start/WebApiConfig.cs
class WebApiConfig (line 7) | public static class WebApiConfig
method Register (line 9) | public static void Register(HttpConfiguration config)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Controllers/AccountsController.cs
class AccountsController (line 8) | public class AccountsController : ApiController
method Index (line 13) | [HttpGet]
method Account (line 60) | [HttpGet]
class AccountRepresentation (line 98) | public class AccountRepresentation : Representation
method CreateHypermedia (line 103) | protected override void CreateHypermedia()
class AccountsRepresentation (line 108) | public class AccountsRepresentation : Representation
method CreateHypermedia (line 110) | protected override void CreateHypermedia()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Controllers/FollowersController.cs
class FollowersController (line 13) | public class FollowersController : ApiController
method Index (line 17) | [HttpGet]
method GetFollowers (line 36) | private List<Follower> GetFollowers(string accountId)
method IndexPOST (line 56) | [HttpPost] // respond to POST requests only
class FollowersRepresentation (line 73) | public class FollowersRepresentation : Representation
method CreateHypermedia (line 77) | protected override void CreateHypermedia()
class Follower (line 82) | public class Follower
class BeganFollowing (line 88) | public class BeganFollowing
class EventPersister (line 95) | public static class EventPersister
method EventPersister (line 103) | static EventPersister()
method PersistEvent (line 108) | public static void PersistEvent(object ev)
method ToEventData (line 121) | private static EventData ToEventData(Guid eventId, object evnt, IDicti...
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Global.asax.cs
class WebApiApplication (line 7) | public class WebApiApplication : System.Web.HttpApplication
method Application_Start (line 9) | protected void Application_Start()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/App_Start/WebApiConfig.cs
class WebApiConfig (line 6) | public static class WebApiConfig
method Register (line 8) | public static void Register(HttpConfiguration config)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Controllers/EntryPointController.cs
class EntryPointController (line 8) | public class EntryPointController : ApiController
method Get (line 13) | [HttpGet]
class EntryPointRepresentation (line 37) | public class EntryPointRepresentation : Representation
method CreateHypermedia (line 39) | protected override void CreateHypermedia() { }
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Global.asax.cs
class WebApiApplication (line 7) | public class WebApiApplication : System.Web.HttpApplication
method Application_Start (line 9) | protected void Application_Start()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal.js
function isCurie (line 4) | function isCurie(string) {
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/bootstrap.js
function removeElement (line 115) | function removeElement() {
function clearMenus (line 739) | function clearMenus() {
function getParent (line 745) | function getParent($this) {
function removeWithAnimation (line 1278) | function removeWithAnimation() {
function ScrollSpy (line 1549) | function ScrollSpy(element, options) {
function next (line 1760) | function next() {
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/jquery-1.10.2.js
function isArraylike (line 983) | function isArraylike( obj ) {
function Sizzle (line 1183) | function Sizzle( selector, context, results, seed ) {
function createCache (line 1298) | function createCache() {
function markFunction (line 1316) | function markFunction( fn ) {
function assert (line 1325) | function assert( fn ) {
function addHandle (line 1347) | function addHandle( attrs, handler ) {
function siblingCheck (line 1362) | function siblingCheck( a, b ) {
function createInputPseudo (line 1389) | function createInputPseudo( type ) {
function createButtonPseudo (line 1400) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1411) | function createPositionalPseudo( fn ) {
function setFilters (line 2394) | function setFilters() {}
function tokenize (line 2398) | function tokenize( selector, parseOnly ) {
function toSelector (line 2465) | function toSelector( tokens ) {
function addCombinator (line 2475) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2525) | function elementMatcher( matchers ) {
function condense (line 2539) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2560) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2653) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2708) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function multipleContexts (line 2836) | function multipleContexts( selector, contexts, results ) {
function select (line 2845) | function select( selector, context, results, seed ) {
function createOptions (line 2985) | function createOptions( options ) {
function internalData (line 3568) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
function internalRemoveData (line 3657) | function internalRemoveData( elem, name, pvt ) {
function dataAttr (line 3854) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3886) | function isEmptyDataObject( obj ) {
function returnTrue (line 4712) | function returnTrue() {
function returnFalse (line 4716) | function returnFalse() {
function safeActiveElement (line 4720) | function safeActiveElement() {
function sibling (line 5838) | function sibling( cur, dir ) {
function winnow (line 5956) | function winnow( elements, qualifier, not ) {
function createSafeFragment (line 5984) | function createSafeFragment( document ) {
function manipulationTarget (line 6298) | function manipulationTarget( elem, content ) {
function disableScript (line 6308) | function disableScript( elem ) {
function restoreScript (line 6312) | function restoreScript( elem ) {
function setGlobalEval (line 6323) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 6331) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 6359) | function fixCloneNodeIssues( src, dest ) {
function getAll (line 6452) | function getAll( context, tag ) {
function fixDefaultChecked (line 6475) | function fixDefaultChecked( elem ) {
function vendorPropName (line 6817) | function vendorPropName( style, name ) {
function isHidden (line 6839) | function isHidden( elem, el ) {
function showHide (line 6846) | function showHide( elements, show ) {
function setPositiveNumber (line 7175) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 7183) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 7222) | function getWidthOrHeight( elem, name, extra ) {
function css_defaultDisplay (line 7266) | function css_defaultDisplay( nodeName ) {
function actualDisplay (line 7298) | function actualDisplay( name, doc ) {
function buildParams (line 7527) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 7642) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7674) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7701) | function ajaxExtend( target, src ) {
function done (line 8149) | function done( status, nativeStatusText, responses, headers ) {
function ajaxHandleResponses (line 8296) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8351) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function createStandardXHR (line 8619) | function createStandardXHR() {
function createActiveXHR (line 8625) | function createActiveXHR() {
function createFxNow (line 8871) | function createFxNow() {
function createTween (line 8878) | function createTween( value, prop, animation ) {
function Animation (line 8892) | function Animation( elem, properties, options ) {
function propFilter (line 8996) | function propFilter( props, specialEasing ) {
function defaultPrefilter (line 9063) | function defaultPrefilter( elem, props, opts ) {
function Tween (line 9188) | function Tween( elem, options, prop, end, easing ) {
function genFx (line 9412) | function genFx( type, includeWidth ) {
function getWindow (line 9708) | function getWindow( elem ) {
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/uritemplates.js
function isFunction (line 13) | function isFunction(fn) {
function isEmptyObject (line 17) | function isEmptyObject (obj) {
function extend (line 24) | function extend(base, newprops) {
function CachingContext (line 38) | function CachingContext(context) {
function UriTemplate (line 83) | function UriTemplate(set) {
function Literal (line 101) | function Literal(txt ) {
function encodeNormal (line 112) | function encodeNormal(val) {
function encodeReserved (line 117) | function encodeReserved(val) {
function addUnNamed (line 123) | function addUnNamed(name, key, val) {
function addNamed (line 127) | function addNamed(name, key, val, noName) {
function addLabeled (line 137) | function addLabeled(name, key, val, noName) {
function Expression (line 174) | function Expression(conf, vars ) {
function Buffer (line 222) | function Buffer(limit) {
function arrayToString (line 253) | function arrayToString(arr, encoder, maxLength) {
function objectToString (line 267) | function objectToString(obj, encoder, maxLength) {
function simpleValueHandler (line 284) | function simpleValueHandler(me, val, valprops, encoder, adder) {
function explodeValueHandler (line 299) | function explodeValueHandler(me, val, valprops, encoder, adder) {
function valueProperties (line 317) | function valueProperties(val) {
function VarSpec (line 332) | function VarSpec (name, vhfn, nums) {
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/App_Start/WebApiConfig.cs
class WebApiConfig (line 9) | public static class WebApiConfig
method Register (line 11) | public static void Register(HttpConfiguration config)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Controllers/BeganFollowingController.cs
class BeganFollowingController (line 16) | public class BeganFollowingController : ApiController
method Feed (line 20) | [HttpGet]
method GetFeedContent (line 42) | private string GetFeedContent(SyndicationFeed feed)
method MapToFeedItem (line 54) | private SyndicationItem MapToFeedItem(ResolvedEvent ev)
class EventRetriever (line 67) | public static class EventRetriever
method EventRetriever (line 72) | static EventRetriever()
method RecentEvents (line 77) | public static IEnumerable<ResolvedEvent> RecentEvents(string stream)
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Global.asax.cs
class WebApiApplication (line 10) | public class WebApiApplication : System.Web.HttpApplication
method Application_Start (line 12) | protected void Application_Start()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/Discovery.Reccommendations.Followers/BeganFollowingPollingFeedConsumer.cs
class BeganFollowingPollingFeedConsumer (line 15) | public class BeganFollowingPollingFeedConsumer
method Main (line 21) | public static void Main(string[] args)
method FetchAndProcessNextBatchOfEvents (line 32) | private static void FetchAndProcessNextBatchOfEvents()
method FetchFeed (line 43) | private static SyndicationFeed FetchFeed()
method GetUnprocessedEvents (line 59) | private static List<SyndicationItem> GetUnprocessedEvents(List<Syndica...
method ProcessEvents (line 67) | private static void ProcessEvents(List<SyndicationItem> events)
method ParseEvent (line 78) | private static BeganFollowing ParseEvent(SyndicationContent content)
method ParseFeedContent (line 86) | private static string ParseFeedContent(SyndicationContent syndicationC...
class HALResource (line 99) | public class HALResource
class Link (line 104) | public class Link
class BeganFollowing (line 109) | public class BeganFollowing
FILE: 13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/AccountManagement/FollowerDirectory.svc.cs
class FollowerDirectory (line 9) | public class FollowerDirectory : IFollowerDirectory
method FindUsersFollowers (line 11) | public List<Follower> FindUsersFollowers(string accountId)
method GenerateDummyFollowers (line 16) | private IEnumerable<Follower> GenerateDummyFollowers()
FILE: 13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/AccountManagement/IFollowerDirectory.cs
type IFollowerDirectory (line 8) | [ServiceContract]
method FindUsersFollowers (line 11) | [OperationContract]
class Follower (line 15) | public class Follower
FILE: 13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/Discovery/IRecommender.cs
type IRecommender (line 8) | [ServiceContract]
method GetRecommendedUsers (line 11) | [OperationContract]
FILE: 13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/Discovery/Recommender.svc.cs
class Recommender (line 8) | public class Recommender : IRecommender
method GetRecommendedUsers (line 10) | public List<string> GetRecommendedUsers(string accountId)
method FindRecommendedUsersBasedOnSocialTags (line 17) | private List<string> FindRecommendedUsersBasedOnSocialTags(Follower[] ...
FILE: 13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/Discovery/Service References/AccountManagement/Reference.cs
class Follower (line 16) | [System.Diagnostics.DebuggerStepThroughAttribute()]
method RaisePropertyChanged (line 85) | protected void RaisePropertyChanged(string propertyName) {
type IFollowerDirectory (line 93) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "...
method FindUsersFollowers (line 97) | [System.ServiceModel.OperationContractAttribute(Action="http://tempuri...
method FindUsersFollowersAsync (line 100) | [System.ServiceModel.OperationContractAttribute(Action="http://tempuri...
type IFollowerDirectoryChannel (line 104) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "...
class FollowerDirectoryClient (line 108) | [System.Diagnostics.DebuggerStepThroughAttribute()]
method FollowerDirectoryClient (line 112) | public FollowerDirectoryClient() {
method FollowerDirectoryClient (line 115) | public FollowerDirectoryClient(string endpointConfigurationName) :
method FollowerDirectoryClient (line 119) | public FollowerDirectoryClient(string endpointConfigurationName, strin...
method FollowerDirectoryClient (line 123) | public FollowerDirectoryClient(string endpointConfigurationName, Syste...
method FollowerDirectoryClient (line 127) | public FollowerDirectoryClient(System.ServiceModel.Channels.Binding bi...
method FindUsersFollowers (line 131) | public Discovery.AccountManagement.Follower[] FindUsersFollowers(strin...
method FindUsersFollowersAsync (line 135) | public System.Threading.Tasks.Task<Discovery.AccountManagement.Followe...
FILE: 15 - Value Objects/Examples/BankAccount/BankAccount.cs
class BankAccount (line 10) | public class BankAccount
method BankAccount (line 12) | public BankAccount(Guid id)
FILE: 15 - Value Objects/Examples/Model/BankAccount.cs
class BankAccount (line 10) | public class BankAccount
method BankAccount (line 12) | public BankAccount(Guid id, Money startingBalance)
class Money (line 26) | public class Money
method Money (line 28) | public Money(int amount, Currency currency)
type Currency (line 41) | public enum Currency
FILE: 15 - Value Objects/Examples/Model/Customer.cs
class Customer (line 11) | public class Customer
method Customer (line 13) | public Customer(Guid id)
method Customer (line 48) | public Customer(Guid id)
class PhoneNumber (line 25) | public class PhoneNumber : ValueObject<PhoneNumber>
method PhoneNumber (line 29) | public PhoneNumber(string number)
method GetAttributesToIncludeInEqualityCheck (line 34) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method PhoneNumber (line 83) | public PhoneNumber(string number)
method GetAttributesToIncludeInEqualityCheck (line 88) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class Customer (line 46) | public class Customer
method Customer (line 13) | public Customer(Guid id)
method Customer (line 48) | public Customer(Guid id)
class PhoneBook (line 60) | public class PhoneBook : ValueObject<PhoneBook>
method PhoneBook (line 66) | public PhoneBook(PhoneNumber homeNum, PhoneNumber mobileNum, PhoneNumb...
method GetAttributesToIncludeInEqualityCheck (line 73) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class PhoneNumber (line 79) | public class PhoneNumber : ValueObject<PhoneNumber>
method PhoneNumber (line 29) | public PhoneNumber(string number)
method GetAttributesToIncludeInEqualityCheck (line 34) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method PhoneNumber (line 83) | public PhoneNumber(string number)
method GetAttributesToIncludeInEqualityCheck (line 88) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 15 - Value Objects/Examples/Model/Meters.cs
class Meters (line 10) | public class Meters
method Meters (line 12) | public Meters(decimal distanceInMeters)
method ToYards (line 22) | public Yards ToYards()
method ToKilometers (line 27) | public Kilometers ToKilometers()
method Add (line 32) | public Meters Add(Meters meters)
method IsLongerThan (line 37) | public bool IsLongerThan(Meters meters)
method Equals (line 42) | public override bool Equals(object obj)
method ToTwoDecimalPlaces (line 50) | private decimal ToTwoDecimalPlaces(decimal distanceInMeters)
method Meters (line 82) | public Meters(decimal distanceInMeters)
method ToYards (line 92) | public Yards ToYards()
method ToKilometers (line 97) | public Kilometers ToKilometers()
method Add (line 102) | public Meters Add(Meters meters)
method IsLongerThan (line 107) | public bool IsLongerThan(Meters meters)
method GetAttributesToIncludeInEqualityCheck (line 112) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class Yards (line 56) | public class Yards
method Yards (line 58) | public Yards(decimal distanceInYards)
class Kilometers (line 66) | public class Kilometers
method Kilometers (line 68) | public Kilometers(decimal distainceInKillometers)
class DistancesInMetersCannotBeNegative (line 76) | public class DistancesInMetersCannotBeNegative : Exception { }
class Meters (line 80) | public class Meters : ValueObject<Meters>
method Meters (line 12) | public Meters(decimal distanceInMeters)
method ToYards (line 22) | public Yards ToYards()
method ToKilometers (line 27) | public Kilometers ToKilometers()
method Add (line 32) | public Meters Add(Meters meters)
method IsLongerThan (line 37) | public bool IsLongerThan(Meters meters)
method Equals (line 42) | public override bool Equals(object obj)
method ToTwoDecimalPlaces (line 50) | private decimal ToTwoDecimalPlaces(decimal distanceInMeters)
method Meters (line 82) | public Meters(decimal distanceInMeters)
method ToYards (line 92) | public Yards ToYards()
method ToKilometers (line 97) | public Kilometers ToKilometers()
method Add (line 102) | public Meters Add(Meters meters)
method IsLongerThan (line 107) | public bool IsLongerThan(Meters meters)
method GetAttributesToIncludeInEqualityCheck (line 112) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 15 - Value Objects/Examples/Model/MicroTypes.cs
class OvertimeCalculator (line 10) | public class OvertimeCalculator
method Calculate (line 12) | public OvertimeHours Calculate(HoursWorked worked, ContractedHours con...
class Hours (line 19) | public class Hours : ValueObject<Hours>
method Hours (line 23) | public Hours(int amount)
method GetAttributesToIncludeInEqualityCheck (line 33) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class HoursWorked (line 40) | public class HoursWorked : ValueObject<HoursWorked>
method HoursWorked (line 44) | public HoursWorked(Hours hours)
method GetAttributesToIncludeInEqualityCheck (line 49) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class ContractedHours (line 55) | public class ContractedHours : ValueObject<ContractedHours>
method ContractedHours (line 59) | public ContractedHours(Hours hours)
method GetAttributesToIncludeInEqualityCheck (line 64) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class OvertimeHours (line 70) | public class OvertimeHours : ValueObject<OvertimeHours>
method OvertimeHours (line 74) | public OvertimeHours(Hours hours)
method GetAttributesToIncludeInEqualityCheck (line 79) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 15 - Value Objects/Examples/Model/Money.cs
class Money (line 11) | public class Money : ValueObject<Money>
method Money (line 15) | public Money()
method Money (line 20) | public Money(decimal value)
method Add (line 25) | public Money Add(Money money)
method Subtract (line 30) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 35) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 48) | public Money()
method Money (line 53) | public Money(decimal value)
method Add (line 58) | public Money Add(Money money)
method Subtract (line 63) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 68) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 90) | public Money()
method Money (line 95) | public Money(decimal value)
method Validate (line 102) | private void Validate(decimal value)
method Add (line 111) | public Money Add(Money money)
method GetAttributesToIncludeInEqualityCheck (line 116) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Create (line 122) | public static Money Create(int amount)
class Money (line 44) | public class Money : ValueObject<Money>
method Money (line 15) | public Money()
method Money (line 20) | public Money(decimal value)
method Add (line 25) | public Money Add(Money money)
method Subtract (line 30) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 35) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 48) | public Money()
method Money (line 53) | public Money(decimal value)
method Add (line 58) | public Money Add(Money money)
method Subtract (line 63) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 68) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 90) | public Money()
method Money (line 95) | public Money(decimal value)
method Validate (line 102) | private void Validate(decimal value)
method Add (line 111) | public Money Add(Money money)
method GetAttributesToIncludeInEqualityCheck (line 116) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Create (line 122) | public static Money Create(int amount)
class Money (line 87) | public class Money : ValueObject<Money>
method Money (line 15) | public Money()
method Money (line 20) | public Money(decimal value)
method Add (line 25) | public Money Add(Money money)
method Subtract (line 30) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 35) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 48) | public Money()
method Money (line 53) | public Money(decimal value)
method Add (line 58) | public Money Add(Money money)
method Subtract (line 63) | public Money Subtract(Money money)
method GetAttributesToIncludeInEqualityCheck (line 68) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Money (line 90) | public Money()
method Money (line 95) | public Money(decimal value)
method Validate (line 102) | private void Validate(decimal value)
method Add (line 111) | public Money Add(Money money)
method GetAttributesToIncludeInEqualityCheck (line 116) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Create (line 122) | public static Money Create(int amount)
class MoreThanTwoDecimalPlacesInMoneyValueException (line 134) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
class MoneyCannotBeANegativeValueException (line 138) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 15 - Value Objects/Examples/Model/Name.cs
class Name (line 17) | public class Name : ValueObject<Name>
method Name (line 22) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 38) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Name (line 99) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 109) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method ToString (line 114) | public override string ToString()
method Name (line 147) | protected Name()
method Name (line 152) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 162) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class StringExtensions (line 44) | public static class StringExtensions
method is_not_empty (line 46) | public static bool is_not_empty(this String string_to_check)
class CheckConstraint (line 52) | public class CheckConstraint
method CheckConstraint (line 56) | public CheckConstraint(bool assertion)
method on_constraint_failure (line 61) | public void on_constraint_failure(Action onFailure)
class Check (line 67) | public sealed class Check
method that (line 69) | public static CheckConstraint that(bool assertion)
class Customer (line 78) | public class Customer
method Customer (line 80) | public Customer()
method Customer (line 85) | public Customer(Guid id, Name name)
method Customer (line 127) | protected Customer()
method Customer (line 132) | public Customer(Guid id, Name name)
class Name (line 97) | public class Name : ValueObject<Name>
method Name (line 22) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 38) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Name (line 99) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 109) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method ToString (line 114) | public override string ToString()
method Name (line 147) | protected Name()
method Name (line 152) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 162) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
class Customer (line 125) | public class Customer
method Customer (line 80) | public Customer()
method Customer (line 85) | public Customer(Guid id, Name name)
method Customer (line 127) | protected Customer()
method Customer (line 132) | public Customer(Guid id, Name name)
class Name (line 145) | public class Name : ValueObject<Name>
method Name (line 22) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 38) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method Name (line 99) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 109) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method ToString (line 114) | public override string ToString()
method Name (line 147) | protected Name()
method Name (line 152) | public Name(string firstName, string surname)
method GetAttributesToIncludeInEqualityCheck (line 162) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 15 - Value Objects/Examples/Model/ValueObject.cs
class ValueObject (line 9) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 11) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 13) | public override bool Equals(object other)
method Equals (line 18) | public virtual bool Equals(T other)
method GetHashCode (line 37) | public override int GetHashCode()
FILE: 15 - Value Objects/Tests/Tests/Combining_money_tests.cs
class Combining_money_tests (line 11) | [TestClass]
method Money_supports_native_addition_syntax (line 14) | [TestMethod]
method Money_supports_native_subtraction_syntax (line 25) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/DateTime_immutability_tests.cs
class DateTime_immutability_tests (line 10) | [TestClass]
method AddMonths_creates_new_immutable_DateTime (line 13) | [TestMethod]
method AddYears_creates_new_immutable_DateTime (line 26) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/Denormalized_persistence_example.cs
class Denormalized_persistence_example (line 17) | [TestClass]
method Persisting_denormalized_value_objects (line 22) | [TestMethod]
method NHibernateTransaction (line 43) | private void NHibernateTransaction(Action<ISession> action)
method CreateSession (line 53) | private static ISession CreateSession()
method BuildSchema (line 71) | private static void BuildSchema(Configuration config, ISession session)
class CustomerMap (line 78) | public class CustomerMap : ClassMap<Customer>
method CustomerMap (line 80) | public CustomerMap()
class NameValueObjectPersister (line 89) | public class NameValueObjectPersister : IUserType
method GetHashCode (line 113) | public int GetHashCode(object x)
method NullSafeGet (line 122) | public object NullSafeGet(IDataReader rs, string[] names, object owner)
method NullSafeSet (line 138) | public void NullSafeSet(IDbCommand cmd, object value, int index)
method DeepCopy (line 151) | public object DeepCopy(object value)
method Replace (line 157) | public object Replace(object original, object target, object owner)
method Assemble (line 163) | public object Assemble(object cached, object owner)
method Disassemble (line 169) | public object Disassemble(object value)
method Equals (line 175) | bool IUserType.Equals(object x, object y)
FILE: 15 - Value Objects/Tests/Tests/Meters_equality_tests.cs
class Meters_equality_tests (line 7) | [TestClass]
method Same_distances_are_equal_even_if_different_references (line 10) | [TestMethod]
method Same_distances_are_equal_even_if_different_references_with_base (line 22) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/Micro_types_example_tests.cs
class Micro_types_example_tests (line 11) | [TestClass]
method Calculates_overtime_hours_as_hours_additional_to_contracted (line 14) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/Name_validation_tests.cs
class Name_validation_tests (line 11) | [TestClass]
method First_names_cannot_be_empty (line 14) | [TestMethod]
method Surnames_cannot_be_empty (line 30) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/Normalized_persistence_example.cs
class Normalized_persistence_example (line 16) | [TestClass]
method Persisting_normalized_value_objects (line 21) | [TestMethod]
method NHibernateTransaction (line 42) | private void NHibernateTransaction(Action<ISession> action)
method CreateSession (line 52) | private static ISession CreateSession()
method BuildSchema (line 70) | private static void BuildSchema(Configuration config, ISession session)
class CustomerNormalizedMap (line 78) | public class CustomerNormalizedMap : ClassMap<Customer>
method CustomerNormalizedMap (line 80) | public CustomerNormalizedMap()
FILE: 15 - Value Objects/Tests/Tests/Persistence_format_examples.cs
class Persistence_format_examples (line 11) | [TestClass]
method Each_value_has_a_unique_representation (line 14) | [TestMethod]
FILE: 15 - Value Objects/Tests/Tests/TimeSpan_factory_method_tests.cs
class TimeSpan_factory_method_tests (line 10) | [TestClass]
method TimeSpan_factory_methods (line 13) | [TestMethod]
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Customer.cs
class Customer (line 11) | public class Customer
method Customer (line 13) | public Customer(Guid id, AddressBook addresses, Orders orderHistory, P...
class Loyalty (line 38) | public class Loyalty
class CustomerOrderHistory (line 52) | public class CustomerOrderHistory
class PaymentDetails (line 66) | public class PaymentDetails
class AddressBook (line 82) | public class AddressBook
class Address (line 91) | public class Address {}
class Orders (line 93) | public class Orders
method Orders (line 97) | public Orders(IEnumerable<Order> orders)
class Order (line 105) | public class Order
class PaymentDetails (line 112) | public class PaymentDetails
class CardDetails (line 119) | public class CardDetails
class LoyaltySummary (line 128) | public class LoyaltySummary
type LoyaltyStatus (line 135) | public enum LoyaltyStatus
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/Book.cs
class Book (line 10) | public class Book
method Book (line 12) | public Book(ISBN isbn)
class ISBN (line 24) | public class ISBN
method ISBN (line 26) | public ISBN(string isbn)
method Validate (line 35) | private void Validate(string isbn)
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/Dice.cs
class Dice (line 11) | public class Dice
method Dice (line 15) | public Dice(Guid id)
method Value (line 23) | public int Value()
method Dice (line 38) | public Dice(Guid id)
method Roll (line 49) | public void Roll()
class Dice (line 34) | public class Dice
method Dice (line 15) | public Dice(Guid id)
method Value (line 23) | public int Value()
method Dice (line 38) | public Dice(Guid id)
method Roll (line 49) | public void Roll()
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/FlightBooking.cs
class FlightBooking (line 11) | public class FlightBooking
method FlightBooking (line 15) | public FlightBooking(Guid id, DateTime departureDate, Guid customerId)
method Reschedule (line 37) | public void Reschedule(DateTime newDeparture)
method Confirm (line 44) | public void Confirm()
method FlightBooking (line 66) | public FlightBooking(Guid Id, DateTime departureDate, Guid customerId,...
method Reschedule (line 86) | public void Reschedule(DateTime newDeparture)
method Confirm (line 93) | public void Confirm()
class IdMissing (line 50) | public class IdMissing : Exception {}
class DepartureDateMissing (line 52) | public class DepartureDateMissing : Exception { }
class CustomerIdMissing (line 54) | public class CustomerIdMissing : Exception { }
class RescheduleRejected (line 56) | public class RescheduleRejected : Exception { }
class FlightBooking (line 60) | public class FlightBooking
method FlightBooking (line 15) | public FlightBooking(Guid id, DateTime departureDate, Guid customerId)
method Reschedule (line 37) | public void Reschedule(DateTime newDeparture)
method Confirm (line 44) | public void Confirm()
method FlightBooking (line 66) | public FlightBooking(Guid Id, DateTime departureDate, Guid customerId,...
method Reschedule (line 86) | public void Reschedule(DateTime newDeparture)
method Confirm (line 93) | public void Confirm()
class NoDepartureReschedulingAfterBookingConfirmation (line 99) | public class NoDepartureReschedulingAfterBookingConfirmation : Specifica...
method IsSatisfiedBy (line 101) | public override bool IsSatisfiedBy(FlightBooking booking)
class FrequentFlyersCanRescheduleAfterBookingConfirmation (line 107) | public class FrequentFlyersCanRescheduleAfterBookingConfirmation : Speci...
method IsSatisfiedBy (line 109) | public override bool IsSatisfiedBy(FlightBooking booking)
class OrSpecification (line 116) | public class OrSpecification<T> : Specification<T>
method OrSpecification (line 121) | public OrSpecification(Specification<T> first, Specification<T> second)
method IsSatisfiedBy (line 127) | public override bool IsSatisfiedBy(T entity)
class Specification (line 133) | public abstract class Specification<T>
method Or (line 135) | public Specification<T> Or(Specification<T> specification)
method IsSatisfiedBy (line 140) | public abstract bool IsSatisfiedBy(T entity);
type CustomerStatus (line 144) | public enum CustomerStatus
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/GlobalCounter.cs
class RandomEntityFactory (line 9) | public static class RandomEntityFactory
method CreateEntity (line 13) | public static RandomEntity CreateEntity()
class RandomEntity (line 19) | public class RandomEntity
method RandomEntity (line 21) | public RandomEntity(long Id)
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/HolidayBooking.cs
class HolidayBooking (line 9) | public class HolidayBooking
method HolidayBooking (line 11) | public HolidayBooking(int travelerId, DateTime firstNight, DateTime la...
method GenerateId (line 33) | private string GenerateId(int travelerId, DateTime firstNight, DateTim...
method ToIdFormat (line 41) | private string ToIdFormat(DateTime date)
method HolidayBooking (line 53) | public HolidayBooking(int travelerId, Stay stay, DateTime booked)
method GenerateId (line 69) | private string GenerateId(int travelerId, DateTime firstNight, DateTim...
method ToIdFormat (line 77) | private string ToIdFormat(DateTime date)
class HolidayBooking (line 51) | public class HolidayBooking
method HolidayBooking (line 11) | public HolidayBooking(int travelerId, DateTime firstNight, DateTime la...
method GenerateId (line 33) | private string GenerateId(int travelerId, DateTime firstNight, DateTim...
method ToIdFormat (line 41) | private string ToIdFormat(DateTime date)
method HolidayBooking (line 53) | public HolidayBooking(int travelerId, Stay stay, DateTime booked)
method GenerateId (line 69) | private string GenerateId(int travelerId, DateTime firstNight, DateTim...
method ToIdFormat (line 77) | private string ToIdFormat(DateTime date)
class Stay (line 85) | public class Stay
method Stay (line 87) | public Stay(DateTime firstNight, DateTime lastNight)
method DoesNotMeetMinimumStayDuration (line 103) | private bool DoesNotMeetMinimumStayDuration(DateTime firstNight, DateT...
class FirstNightOfStayCannotBeAfterLastNight (line 109) | public class FirstNightOfStayCannotBeAfterLastNight : Exception { }
class StayDoesNotMeetMinimumDuration (line 111) | public class StayDoesNotMeetMinimumDuration : Exception { }
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/Hotel.cs
class Hotel (line 9) | public class Hotel
method Hotel (line 11) | public Hotel(Guid id, HotelAvailability initialAvailability, HotelRoom...
method EnforceInvariants (line 19) | private void EnforceInvariants(HotelRoomSummary rooms)
class HotelAvailability (line 37) | public class HotelAvailability
method HotelAvailability (line 39) | public HotelAvailability(RoomAvailability singleRooms, RoomAvailabilit...
method HasSingleRoomAvailability (line 54) | public bool HasSingleRoomAvailability(DateTime start, DateTime end)
method HasDoubleRoomAvailability (line 59) | public bool HasDoubleRoomAvailability(DateTime start, DateTime end)
method HasFamilyRoomAvailability (line 64) | public bool HasFamilyRoomAvailability(DateTime start, DateTime end)
method GetSingleRoomPriceFor (line 69) | public Money GetSingleRoomPriceFor(DateTime start, DateTime end)
method GetDoubleRoomPriceFor (line 74) | public Money GetDoubleRoomPriceFor(DateTime start, DateTime end)
method GetFamilyRoomPriceFor (line 79) | public Money GetFamilyRoomPriceFor(DateTime start, DateTime end)
method GetSingleRoomAvailability (line 84) | private AvailableBookingSlot GetSingleRoomAvailability(DateTime start,...
method GetDoubleRoomAvailability (line 89) | private AvailableBookingSlot GetDoubleRoomAvailability(DateTime start,...
method GetFamilyRoomAvailability (line 94) | private AvailableBookingSlot GetFamilyRoomAvailability(DateTime start,...
class RoomAvailability (line 101) | public class RoomAvailability
class AvailableBookingSlot (line 106) | public class AvailableBookingSlot
method AvailableBookingSlot (line 108) | public AvailableBookingSlot(DateTime start, DateTime end)
class Money (line 124) | public class Money
method Money (line 128) | public Money()
method Money (line 133) | public Money(decimal value)
class HotelRoomSummary (line 139) | public class HotelRoomSummary
method HotelRoomSummary (line 141) | public HotelRoomSummary(int singleRooms, int doubleRooms, int familyRo...
class HotelsMustHaveRooms (line 155) | public class HotelsMustHaveRooms : Exception { }
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/OnlineTakeawayOrder.cs
class InKitchenOnlineTakeawayOrder (line 11) | public class InKitchenOnlineTakeawayOrder
method InKitchenOnlineTakeawayOrder (line 13) | public InKitchenOnlineTakeawayOrder(Guid id, Address address)
method Cook (line 25) | public InOvenOnlineTakeawayOrder Cook()
class InOvenOnlineTakeawayOrder (line 32) | public class InOvenOnlineTakeawayOrder
method InOvenOnlineTakeawayOrder (line 34) | public InOvenOnlineTakeawayOrder(Guid id, Address address)
method TakeOutOfOven (line 44) | public CookedOnlineTakeawayOrder TakeOutOfOven()
class CookedOnlineTakeawayOrder (line 51) | public class CookedOnlineTakeawayOrder
method CookedOnlineTakeawayOrder (line 53) | public CookedOnlineTakeawayOrder(Guid id, Address address)
method Package (line 63) | public OutForDeliveryOnlineTakeawayOrder Package()
class OutForDeliveryOnlineTakeawayOrder (line 70) | public class OutForDeliveryOnlineTakeawayOrder
method OutForDeliveryOnlineTakeawayOrder (line 72) | public OutForDeliveryOnlineTakeawayOrder(Guid id, Address address)
method Deliver (line 82) | public void Deliver()
class OnlineTakeawayOrder (line 91) | public class OnlineTakeawayOrder
method OnlineTakeawayOrder (line 95) | public OnlineTakeawayOrder(Guid id, Address address)
method Cook (line 106) | public void Cook()
method TakeOutOfOven (line 111) | public void TakeOutOfOven()
method Package (line 116) | public void Package()
method Deliver (line 121) | public void Deliver()
type IOnlineTakeawayOrderState (line 127) | public interface IOnlineTakeawayOrderState
method Cook (line 129) | IOnlineTakeawayOrderState Cook();
method TakeOutOfOven (line 131) | IOnlineTakeawayOrderState TakeOutOfOven();
method Package (line 133) | IOnlineTakeawayOrderState Package();
method Deliver (line 135) | IOnlineTakeawayOrderState Deliver();
class InKitchenQueue (line 138) | public class InKitchenQueue : IOnlineTakeawayOrderState
method InKitchenQueue (line 142) | public InKitchenQueue(OnlineTakeawayOrder order)
method Cook (line 147) | public IOnlineTakeawayOrderState Cook()
method TakeOutOfOven (line 153) | public IOnlineTakeawayOrderState TakeOutOfOven()
method Package (line 158) | public IOnlineTakeawayOrderState Package()
method Deliver (line 163) | public IOnlineTakeawayOrderState Deliver()
class InOven (line 169) | public class InOven : IOnlineTakeawayOrderState
method InOven (line 173) | public InOven(OnlineTakeawayOrder order)
method Cook (line 178) | public IOnlineTakeawayOrderState Cook()
method TakeOutOfOven (line 183) | public IOnlineTakeawayOrderState TakeOutOfOven()
method Package (line 189) | public IOnlineTakeawayOrderState Package()
method Deliver (line 194) | public IOnlineTakeawayOrderState Deliver()
class Cooked (line 200) | public class Cooked : IOnlineTakeawayOrderState
method Cooked (line 204) | public Cooked(OnlineTakeawayOrder order)
method Cook (line 209) | public IOnlineTakeawayOrderState Cook()
method TakeOutOfOven (line 214) | public IOnlineTakeawayOrderState TakeOutOfOven()
method Package (line 219) | public IOnlineTakeawayOrderState Package()
method Deliver (line 225) | public IOnlineTakeawayOrderState Deliver()
class OutForDelivery (line 231) | public class OutForDelivery : IOnlineTakeawayOrderState
method OutForDelivery (line 235) | public OutForDelivery(OnlineTakeawayOrder order)
method Cook (line 240) | public IOnlineTakeawayOrderState Cook()
method TakeOutOfOven (line 245) | public IOnlineTakeawayOrderState TakeOutOfOven()
method Package (line 250) | public IOnlineTakeawayOrderState Package()
method Deliver (line 255) | public IOnlineTakeawayOrderState Deliver()
class Delivered (line 262) | public class Delivered : IOnlineTakeawayOrderState
method Delivered (line 266) | public Delivered(OnlineTakeawayOrder order)
method Cook (line 271) | public IOnlineTakeawayOrderState Cook()
method TakeOutOfOven (line 276) | public IOnlineTakeawayOrderState TakeOutOfOven()
method Package (line 281) | public IOnlineTakeawayOrderState Package()
method Deliver (line 286) | public IOnlineTakeawayOrderState Deliver()
class ActionNotPermittedInThisState (line 292) | public class ActionNotPermittedInThisState : Exception { }
class Address (line 296) | public class Address
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/SoccerMatch.cs
class SoccerCupMatch (line 14) | public class SoccerCupMatch
method SoccerCupMatch (line 16) | public SoccerCupMatch(Guid id, Scores team1Scores, Scores team2Scores)
method SoccerCupMatch (line 44) | public SoccerCupMatch(Guid id, Scores team1Scores, Scores team2Scores)
method FindWinnerUsingAwayGoalsRule (line 84) | private Scores FindWinnerUsingAwayGoalsRule()
method FindWinnerOfPenaltyShootout (line 96) | private Scores FindWinnerOfPenaltyShootout()
class SoccerCupMatch (line 42) | public class SoccerCupMatch
method SoccerCupMatch (line 16) | public SoccerCupMatch(Guid id, Scores team1Scores, Scores team2Scores)
method SoccerCupMatch (line 44) | public SoccerCupMatch(Guid id, Scores team1Scores, Scores team2Scores)
method FindWinnerUsingAwayGoalsRule (line 84) | private Scores FindWinnerUsingAwayGoalsRule()
method FindWinnerOfPenaltyShootout (line 96) | private Scores FindWinnerOfPenaltyShootout()
class Scores (line 109) | public class Scores
method Scores (line 111) | public Scores(Guid teamId, int homeLegGoals, int awayLegGoals, int sho...
class ThereWasNoPenaltyShootout (line 136) | public class ThereWasNoPenaltyShootout : Exception { }
FILE: 16 - Entities/PPPDDDChap17.Entities.Examples/Model/Vehicle.cs
class VehicleFactory (line 10) | public static class VehicleFactory
method CreateVehicle (line 12) | public static Vehicle CreateVehicle()
class Vehicle (line 19) | public class Vehicle
method Vehicle (line 21) | public Vehicle(Guid id)
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/BookTests.cs
class BookTests (line 7) | [TestClass]
method Books_identity_is_its_ISBN (line 10) | [TestMethod]
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/DatastoreIdGenerationExample.cs
class DatastoreIdGenerationExample (line 14) | [TestClass]
method Id_is_set_by_datastore_via_ORM (line 19) | [TestMethod]
method NHibernateTransaction (line 40) | private void NHibernateTransaction(Action<ISession> action)
method CreateSession (line 50) | private static ISession CreateSession()
method BuildSchema (line 68) | private static void BuildSchema(Configuration config, ISession session)
class IdTestEntity (line 74) | public class IdTestEntity
class IdTestEntityMap (line 80) | public class IdTestEntityMap : ClassMap<IdTestEntity>
method IdTestEntityMap (line 82) | public IdTestEntityMap()
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/FlightBookingTests.cs
class FlightBookingTests (line 7) | [TestClass]
method Departure_date_can_be_rescheduled_whilst_pending_confirmation_from_airline (line 10) | [TestMethod]
method Departure_date_cannot_be_rescheduled_after_booking_confirmed_by_airline (line 24) | [TestMethod]
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/GlobalCounterTest.cs
class GlobalCounterTest (line 7) | [TestClass]
method Each_new_entity_gets_the_next_sequential_Id (line 10) | [TestMethod]
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/HolidayBookingTest.cs
class HolidayBookingTest (line 11) | [TestClass]
method Id_is_an_amalgamation_of_travelerId_and_dates (line 14) | [TestMethod]
FILE: 16 - Entities/PPPDDDChap17.Entities.Tests/HotelTests.cs
class HotelTests (line 7) | [TestClass]
method Hotels_must_have_rooms_else_they_are_not_hotels (line 10) | [TestMethod]
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Application/MultiMemberInsurancePremium.cs
class MultiMemberInsurancePremium (line 11) | public class MultiMemberInsurancePremium
method MultiMemberInsurancePremium (line 19) | public MultiMemberInsurancePremium(IPolicyRepository policyRepository,...
method GetQuote (line 27) | public Quote GetQuote(int policyId, IEnumerable<int> memberIds)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/IMemberRepository.cs
type IMemberRepository (line 9) | public interface IMemberRepository
method Get (line 11) | IEnumerable<Member> Get(IEnumerable<int> memberIds);
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/IMultiMemberPremiumCalculator.cs
type IMultiMemberPremiumCalculator (line 10) | public interface IMultiMemberPremiumCalculator
method CalculatePremium (line 12) | Quote CalculatePremium(Policy mainPolicy, IEnumerable<Member> addition...
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/IPolicyRepository.cs
type IPolicyRepository (line 9) | public interface IPolicyRepository
method Get (line 11) | Policy Get(int policyId);
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/Member.cs
class Member (line 9) | public class Member
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/Policy.cs
class Policy (line 9) | public class Policy
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Insurance/Model/Quote.cs
class Quote (line 9) | public class Quote
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineDating/Model/BloodType.cs
class BloodType (line 10) | public class BloodType
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineDating/Model/CompatibilityRating.cs
class CompatibilityRating (line 9) | public class CompatibilityRating
method Boost (line 11) | public CompatibilityRating Boost(CompatibilityRating rating)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineDating/Model/LoveSeeker.cs
class LoveSeeker (line 10) | public class LoveSeeker
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineDating/Model/RomanceOMeter.cs
class RomanceOMeter (line 10) | public class RomanceOMeter
method AssessCompatibility (line 15) | public CompatibilityRating AssessCompatibility(LoveSeeker seeker1, Lov...
method CompatibilityRating (line 32) | private CompatibilityRating CompatibilityRating(int value)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/Competitor.cs
class Competitor (line 9) | public class Competitor
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/IGame.cs
type IGame (line 9) | public interface IGame
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/IGameRewardPolicy.cs
type IGamingRewardPolicy (line 10) | public interface IGamingRewardPolicy
method Apply (line 12) | void Apply(IGame game);
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/IGameScoringPolicy.cs
type IGamingScorePolicy (line 10) | public interface IGamingScorePolicy
method Apply (line 12) | void Apply(IGame game);
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/IScoreFinder.cs
type IScoreFinder (line 10) | public interface IScoreFinder
method FindTopScore (line 12) | Score FindTopScore(IGame game, int resultNumber);
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/OnlineDeathmatch.cs
class OnlineDeathmatch (line 9) | public class OnlineDeathmatch : IGame
method OnlineDeathmatch (line 21) | public OnlineDeathmatch(Competitor player1, Competitor player2, Guid id,
method CommenceBattle (line 37) | public void CommenceBattle()
method UpdateScoresAndRewards (line 50) | private void UpdateScoresAndRewards()
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/Ranking.cs
class Ranking (line 9) | public class Ranking
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithDomainServices/Model/Score.cs
class Score (line 9) | public class Score
method Score (line 13) | public Score(int value)
method Add (line 18) | public Score Add(Score amount)
method Subtract (line 23) | public Score Subtract(Score amount)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithoutDomainServices/Model/Competitor.cs
class Competitor (line 9) | public class Competitor
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithoutDomainServices/Model/OnlineDeathmatch.cs
class OnlineDeathmatch (line 10) | public class OnlineDeathmatch
method OnlineDeathmatch (line 15) | public OnlineDeathmatch(Competitor player1, Competitor player2, Guid id)
method CommenceBattle (line 24) | public void CommenceBattle()
method UpdateScoresAndRewards (line 37) | private void UpdateScoresAndRewards(Competitor winner, Competitor loser)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithoutDomainServices/Model/Ranking.cs
class Ranking (line 9) | public class Ranking
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/OnlineGaming/WithoutDomainServices/Model/Score.cs
class Score (line 9) | public class Score
method Score (line 13) | public Score(int value)
method Add (line 18) | public Score Add(Score amount)
method Subtract (line 23) | public Score Subtract(Score amount)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/BookingDetails.cs
class BookingDetails (line 10) | public class BookingDetails
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/Customer.cs
class Customer (line 10) | public class Customer
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/DomainEvents.cs
class DomainEvents (line 12) | public static class DomainEvents
method Register (line 28) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 35) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 47) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 51) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 56) | public void Dispose()
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/Events/BookingConfirmedByCustomer.cs
class BookingConfirmedByCustomer (line 9) | public class BookingConfirmedByCustomer
method BookingConfirmedByCustomer (line 13) | public BookingConfirmedByCustomer(RestaurantBooking booking)
method BookingConfirmedByCustomer (line 18) | public BookingConfirmedByCustomer(DomainEventsAlternative.RestaurantBo...
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/Handlers/NotifyRestaurantOnCustomerBookingConfirmation.cs
class NotifyRestaurantOnCustomerBookingConfirmation (line 10) | public class NotifyRestaurantOnCustomerBookingConfirmation : IHandleEven...
method NotifyRestaurantOnCustomerBookingConfirmation (line 14) | public NotifyRestaurantOnCustomerBookingConfirmation(IRestaurantNotifi...
method Handle (line 19) | public void Handle(BookingConfirmedByCustomer @event)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/IHandleEvents.cs
type IHandleEvents (line 9) | interface IHandleEvents<T>
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/Restaurant.cs
class Restaurant (line 10) | public class Restaurant
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/RestaurantBooking.cs
class RestaurantBooking (line 9) | public class RestaurantBooking
method ConfirmBooking (line 25) | public void ConfirmBooking()
method ConfirmBooking (line 57) | public void ConfirmBooking(IRestaurantNotifier restaurantNotifier)
method ConfirmBooking (line 86) | public void ConfirmBooking()
class RestaurantBooking (line 42) | public class RestaurantBooking
method ConfirmBooking (line 25) | public void ConfirmBooking()
method ConfirmBooking (line 57) | public void ConfirmBooking(IRestaurantNotifier restaurantNotifier)
method ConfirmBooking (line 86) | public void ConfirmBooking()
class RestaurantBooking (line 71) | public class RestaurantBooking
method ConfirmBooking (line 25) | public void ConfirmBooking()
method ConfirmBooking (line 57) | public void ConfirmBooking(IRestaurantNotifier restaurantNotifier)
method ConfirmBooking (line 86) | public void ConfirmBooking()
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/RestaurantBookingFactory.cs
class RestaurantBookingFactory (line 9) | public static class RestaurantBookingFactory
method CreateBooking (line 13) | public static RestaurantBooking CreateBooking(Restaurant restaurant, C...
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/RestaurantBooking/Model/RestaurantNotifier.cs
class RestaurantNotifier (line 10) | public class RestaurantNotifier : IRestaurantNotifier
method NotifyBookingConfirmation (line 13) | public bool NotifyBookingConfirmation(Restaurant Restaurant, Customer ...
type IRestaurantNotifier (line 19) | public interface IRestaurantNotifier
method NotifyBookingConfirmation (line 21) | bool NotifyBookingConfirmation(Restaurant Restaurant, Customer Custome...
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Shipping/Application/ShippingRouteFinder.cs
class ShippingRouteFinder (line 11) | public class ShippingRouteFinder : IShippingRouteFinder
method FindFastestRoute (line 13) | public Route FindFastestRoute(Location departing, Location destination...
method QueryRoutingApi (line 23) | private String QueryRoutingApi(Location departing, Location destinatio...
method ParseRoute (line 29) | private Route ParseRoute(String apiResponse)
FILE: 17 - Domain Services/PPPDDDChap18.DomainServices/Shipping/Model/IShippingRouteFinder.cs
type IShippingRouteFinder (line 11) | public interface IShippingRouteFinder
method FindFastestRoute (line 13) | Route FindFastestRoute(Location departing, Location destination, DateT...
class Route (line 16) | public class Route
class Location (line 21) | public class Location
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Application/ConfirmDeliveryOfOrder.cs
class ConfirmDeliveryOfOrder (line 13) | public class ConfirmDeliveryOfOrder
method ConfirmDeliveryOfOrder (line 17) | public ConfirmDeliveryOfOrder(IOrderRepository orderRepository)
method Confirm (line 22) | public void Confirm(DateTime timeThatPizzaWasDelivered, Guid orderId)
class RefundOnDeliveryGuaranteeFailureHandler (line 30) | public class RefundOnDeliveryGuaranteeFailureHandler : IHandleMessages<D...
method Handle (line 35) | public void Handle(DeliveryGuaranteeFailed message)
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Application/Events/RefundDueToLateDelivery.cs
class RefundDueToLateDelivery (line 9) | public class RefundDueToLateDelivery
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Infrastructure/EndpointConfig.cs
class EndpointConfig (line 10) | public class EndpointConfig : IConfigureThisEndpoint, IWantCustomInitial...
method Init (line 13) | public void Init()
class DependencyRegistration (line 23) | public class DependencyRegistration : INeedInitialization
method Init (line 25) | public void Init()
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Model/Events/DeliveryGuaranteeFailed.cs
class DeliveryGuaranteeFailed (line 9) | public class DeliveryGuaranteeFailed
method DeliveryGuaranteeFailed (line 11) | public DeliveryGuaranteeFailed(OrderForDelivery order)
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Model/FoodDeliveryOrderSteps.cs
type FoodDeliveryOrderSteps (line 9) | enum FoodDeliveryOrderSteps
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Model/IDeliveryGuaranteeOffer.cs
type IDeliveryGuaranteeOffer (line 9) | public interface IDeliveryGuaranteeOffer
method IsNotSatisfiedBy (line 11) | bool IsNotSatisfiedBy(DateTime timeOfOrderBeingPlaced, DateTime timeTh...
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Model/IOrderRepository.cs
type IOrderRepository (line 9) | public interface IOrderRepository
method FindBy (line 11) | OrderForDelivery FindBy(Guid id);
FILE: 18 - Domain Events/OnlineTakeawayStore.NServiceBus/Model/OrderForDelivery.cs
class OrderForDelivery (line 12) | public class OrderForDelivery
method OrderForDelivery (line 21) | public OrderForDelivery(Guid id, Guid customerId, Guid restuarantId, L...
method ConfirmReceipt (line 29) | public void ConfirmReceipt(DateTime timeThatPizzaWasDelivered)
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Application/CofirmDeliveryOfOrder.cs
class ConfirmDeliveryOfOrder (line 13) | public class ConfirmDeliveryOfOrder
method ConfirmDeliveryOfOrder (line 18) | public ConfirmDeliveryOfOrder(IOrderRepository orderRepository, IBus bus)
method Confirm (line 24) | public void Confirm(DateTime timeThatPizzaWasDelivered, Guid orderId)
method onDeliveryGuaranteeFailed (line 31) | private void onDeliveryGuaranteeFailed(DeliveryGuaranteeFailed evnt)
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Application/Events/RefundDueToLateDelivery.cs
class RefundDueToLateDelivery (line 9) | public class RefundDueToLateDelivery
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Model/Events/DeliveryGuaranteeFailed.cs
class DeliveryGuaranteeFailed (line 9) | public class DeliveryGuaranteeFailed
method DeliveryGuaranteeFailed (line 11) | public DeliveryGuaranteeFailed(OrderForDelivery order)
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Model/FoodDeliveryOrderSteps.cs
type FoodDeliveryOrderSteps (line 9) | enum FoodDeliveryOrderSteps
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Model/IDeliveryGuaranteeOffer.cs
type IDeliveryGuaranteeOffer (line 9) | public interface IDeliveryGuaranteeOffer
method IsNotSatisfiedBy (line 11) | bool IsNotSatisfiedBy(DateTime timeOfOrderBeingPlaced, DateTime timeTh...
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Model/IOrderRepository.cs
type IOrderRepository (line 9) | public interface IOrderRepository
method FindBy (line 11) | OrderForDelivery FindBy(Guid id);
FILE: 18 - Domain Events/OnlineTakeawayStore.NativeEvents/Model/OrderForDelivery.cs
class OrderForDelivery (line 10) | public class OrderForDelivery
method OrderForDelivery (line 21) | public OrderForDelivery(Guid id, Guid customerId, Guid restuarantId, L...
method ConfirmReceipt (line 28) | public void ConfirmReceipt(DateTime timeThatPizzaWasDelivered)
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Application/ConfirmDeliveryOfOrder.cs
class ConfirmDeliveryOfOrder (line 11) | public class ConfirmDeliveryOfOrder
method ConfirmDeliveryOfOrder (line 16) | public ConfirmDeliveryOfOrder(IOrderRepository orderRepository, IEvent...
method Confirm (line 22) | public void Confirm(DateTime timeThatPizzaWasDelivered, Guid orderId)
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Infrastructure/IEventDispatcher.cs
type IEventDispatcher (line 9) | public interface IEventDispatcher
method Dispatch (line 11) | void Dispatch<T> (T evnt);
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Model/Events/DeliveryGuaranteeFailed.cs
class DeliveryGuaranteeFailed (line 9) | public class DeliveryGuaranteeFailed
method DeliveryGuaranteeFailed (line 11) | public DeliveryGuaranteeFailed(OrderForDelivery order)
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Model/FoodDeliveryOrderSteps.cs
type FoodDeliveryOrderSteps (line 9) | enum FoodDeliveryOrderSteps
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Model/IDeliveryGuaranteeOffer.cs
type IDeliveryGuaranteeOffer (line 9) | public interface IDeliveryGuaranteeOffer
method IsNotSatisfiedBy (line 11) | bool IsNotSatisfiedBy(DateTime timeOfOrderBeingPlaced, DateTime timeTh...
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Model/IOrderRepository.cs
type IOrderRepository (line 9) | public interface IOrderRepository
method FindBy (line 11) | OrderForDelivery FindBy(Guid id);
FILE: 18 - Domain Events/OnlineTakeawayStore.ReturnEvents/Model/OrderForDelivery.cs
class OrderForDelivery (line 10) | public class OrderForDelivery
method OrderForDelivery (line 18) | public OrderForDelivery(Guid id, Guid customerId, Guid restuarantId, L...
method ConfirmReceipt (line 30) | public void ConfirmReceipt(DateTime timeThatPizzaWasDelivered)
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Application/ConfirmDeliveryOfOrder.cs
class ConfirmDeliveryOfOrder (line 14) | public class ConfirmDeliveryOfOrder
method ConfirmDeliveryOfOrder (line 19) | public ConfirmDeliveryOfOrder(IOrderRepository orderRepository, IBus bus)
method Confirm (line 25) | public void Confirm(DateTime timeThatPizzaWasDelivered, Guid orderId)
method onDeliveryFailure (line 34) | private void onDeliveryFailure(DeliveryGuaranteeFailed evnt)
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Application/Events/RefundDueToLateDelivery.cs
class RefundDueToLateDelivery (line 9) | public class RefundDueToLateDelivery
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Infrastructure/DomainEvents.cs
class DomainEvents (line 12) | public static class DomainEvents
method Register (line 28) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 35) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 47) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 51) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 56) | public void Dispose()
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Model/Events/DeliveryGuaranteeFailed.cs
class DeliveryGuaranteeFailed (line 9) | public class DeliveryGuaranteeFailed
method DeliveryGuaranteeFailed (line 11) | public DeliveryGuaranteeFailed(OrderForDelivery order)
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Model/FoodDeliveryOrderSteps.cs
type FoodDeliveryOrderSteps (line 9) | enum FoodDeliveryOrderSteps
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Model/IDeliveryGuaranteeOffer.cs
type IDeliveryGuaranteeOffer (line 9) | public interface IDeliveryGuaranteeOffer
method IsNotSatisfiedBy (line 11) | bool IsNotSatisfiedBy(DateTime timeOfOrderBeingPlaced, DateTime timeTh...
class ThirtyMinuteDeliveryGuaranteeOffer (line 14) | public class ThirtyMinuteDeliveryGuaranteeOffer : IDeliveryGuaranteeOffer
method IsNotSatisfiedBy (line 16) | public bool IsNotSatisfiedBy(DateTime timeOfOrderBeingPlaced, DateTime...
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Model/IOrderRepository.cs
type IOrderRepository (line 9) | public interface IOrderRepository
method FindBy (line 11) | OrderForDelivery FindBy(Guid id);
FILE: 18 - Domain Events/OnlineTakeawayStore.StaticDomainEvents/Model/OrderForDelivery.cs
class OrderForDelivery (line 11) | public class OrderForDelivery
method OrderForDelivery (line 19) | public OrderForDelivery(Guid id, Guid customerId, Guid restuarantId, L...
method ConfirmReceipt (line 28) | public void ConfirmReceipt(DateTime timeThatPizzaWasDelivered)
FILE: 18 - Domain Events/OnlineTakeawayStore.Tests/ServiceLayerTestExamples/Delivery_guarantee_failed.cs
class Delivery_guarantee_failed (line 12) | [TestClass]
method If_an_order_is_not_delivered_within_the_agreed_upon_timeframe (line 25) | [TestInitialize]
method An_external_refund_due_to_late_delivery_instruction_will_be_published (line 42) | [TestMethod]
FILE: 18 - Domain Events/OnlineTakeawayStore.Tests/UnitTestExamples/ReturnDomainEvents.cs
class Delivery_guarantee_events_are_recorded_on_guarantee_offer_failure (line 13) | [TestClass]
method When_confirming_an_order_that_is_late (line 26) | [TestInitialize]
method A_delivery_guarantee_failed_event_will_be_recorded (line 34) | [TestMethod]
FILE: 18 - Domain Events/OnlineTakeawayStore.Tests/UnitTestExamples/StaticDomainEvents.cs
class Delivery_guarantee_events_are_raised_on_guarantee_offer_failure (line 11) | [TestClass]
method When_confirming_an_order_that_is_late (line 23) | [TestInitialize]
method setTestFlag (line 35) | private void setTestFlag(DeliveryGuaranteeFailed obj)
method A_delivery_guarantee_failed_event_will_be_raised (line 40) | [TestMethod]
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Auctions/BusinessUseCases/AuctionCreation.cs
class AuctionCreation (line 5) | public class AuctionCreation
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Auctions/BusinessUseCases/BidOnAuctionService.cs
class BidOnAuctionService (line 10) | public class BidOnAuctionService
method BidOnAuctionService (line 18) | public BidOnAuctionService(IAuctionRepository auctions,
method Bid (line 29) | public void Bid(Guid auctionId, Guid memberId, decimal amount)
method BidPlaced (line 49) | private Action<BidPlaced> BidPlaced()
method OutBid (line 59) | private Action<OutBid> OutBid()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Auctions/BusinessUseCases/CreateAuctionService.cs
class CreateAuctionService (line 9) | public class CreateAuctionService
method CreateAuctionService (line 16) | public CreateAuctionService(IAuctionRepository auctions, IListingRepos...
method Create (line 24) | public Guid Create(AuctionCreation command)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/QandA/BusinessUseCases/Answer.cs
class Answer (line 9) | public class Answer
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/QandA/BusinessUseCases/AnswerAQuestionService.cs
class AnswerAQuestionService (line 14) | public class AnswerAQuestionService
method AnswerAQuestionService (line 21) | public AnswerAQuestionService(IQuestionRepository questions, IClock cl...
method Answer (line 27) | public void Answer(Guid questionId, Guid sellerId, string answer, bool...
method QuestionAnswered (line 37) | private Action<QuestionAnswered> QuestionAnswered()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/QandA/BusinessUseCases/AskAQuestionService.cs
class AskAQuestionService (line 15) | public class AskAQuestionService
method AskAQuestionService (line 22) | public AskAQuestionService(IListingRepository listings,
method Ask (line 32) | public void Ask(Guid listingId, Guid memberId, string question)
method QuestionSubmitted (line 44) | private Action<QuestionSubmitted> QuestionSubmitted()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Watching/BusinessUseCases/UnWatchItem.cs
class UnWatchItem (line 9) | public class UnWatchItem
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Watching/BusinessUseCases/WatchItem.cs
class WatchItem (line 9) | public class WatchItem
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Application/Watching/BusinessUseCases/WatchItemService.cs
class WatchItemService (line 12) | public class WatchItemService
method WatchItemService (line 18) | public WatchItemService(IListingRepository listings, IWatchedItemRepos...
method Watch (line 25) | public void Watch(WatchItem command)
method UnWatch (line 37) | public void UnWatch(UnWatchItem command)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Infrastructure/DomainEvents.cs
class DomainEvents (line 9) | public static class DomainEvents
method Register (line 25) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 32) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 44) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 48) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 53) | public void Dispose()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Infrastructure/Entity.cs
class Entity (line 3) | public abstract class Entity<TId>
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Infrastructure/IClock.cs
type IClock (line 5) | public interface IClock
method Time (line 7) | DateTime Time();
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Infrastructure/SystemClock.cs
class SystemClock (line 5) | public class SystemClock : IClock
method Time (line 7) | public DateTime Time()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Infrastructure/ValueObject.cs
class ValueObject (line 6) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 8) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 10) | public override bool Equals(object other)
method Equals (line 15) | public bool Equals(T other)
method GetHashCode (line 34) | public override int GetHashCode()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/Auction.cs
class Auction (line 6) | public class Auction : Entity<Guid>
method Auction (line 8) | private Auction() { }
method Auction (line 10) | public Auction(Guid id, Guid listingId, Money startingPrice, DateTime ...
method ReduceTheStartingPrice (line 27) | public void ReduceTheStartingPrice()
method StillInProgress (line 45) | private bool StillInProgress(DateTime currentTime)
method CanPlaceBid (line 50) | public bool CanPlaceBid()
method PlaceBidFor (line 55) | public void PlaceBidFor(Offer offer, DateTime currentTime)
method BidderIsIncreasingMaximumBidToNew (line 73) | private bool BidderIsIncreasingMaximumBidToNew(Offer offer)
method FirstOffer (line 78) | private bool FirstOffer()
method PlaceABidForTheFirst (line 83) | private void PlaceABidForTheFirst(Offer offer)
method Place (line 89) | private void Place(WinningBid newBid)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/AuctionId.cs
class AuctionId (line 9) | public class AuctionId
method AuctionId (line 11) | public AuctionId(Guid id)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/AutomaticBidder.cs
class AutomaticBidder (line 5) | public class AutomaticBidder
method GenerateNextSequenceOfBidsAfter (line 7) | public IEnumerable<WinningBid> GenerateNextSequenceOfBidsAfter(Offer o...
method CalculateNextBid (line 34) | private WinningBid CalculateNextBid(WinningBid winningbid, Offer offer)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/BidHistory/Bid.cs
class Bid (line 8) | public class Bid : ValueObject<Bid>
method Bid (line 10) | private Bid()
method Bid (line 13) | public Bid(Guid auctionId, Guid bidderId, Money amountBid, DateTime ti...
method GetAttributesToIncludeInEqualityCheck (line 39) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/BidHistory/IBidHistoryRepository.cs
type IBidHistoryRepository (line 5) | public interface IBidHistoryRepository
method NoOfBidsFor (line 7) | int NoOfBidsFor(Guid autionId);
method Add (line 8) | void Add(Bid bid);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/BidPlaced.cs
class BidPlaced (line 5) | public class BidPlaced
method BidPlaced (line 7) | public BidPlaced(Guid auctionId, Guid bidderId, Money amountBid, DateT...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/IAuctionRepository.cs
type IAuctionRepository (line 5) | public interface IAuctionRepository
method Add (line 7) | void Add(Auction item);
method FindBy (line 8) | Auction FindBy(Guid Id);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/Offer.cs
class Offer (line 7) | public class Offer : ValueObject<Offer>
method Offer (line 9) | public Offer(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
method GetAttributesToIncludeInEqualityCheck (line 29) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/OutBid.cs
class OutBid (line 5) | public class OutBid
method OutBid (line 7) | public OutBid(Guid auctionId, Guid bidderId)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/Price.cs
class Price (line 7) | public class Price : ValueObject<Price>
method Price (line 9) | private Price()
method Price (line 12) | public Price(Money amount)
method BidIncrement (line 22) | public Money BidIncrement()
method CanBeExceededBy (line 37) | public bool CanBeExceededBy(Money offer)
method GetAttributesToIncludeInEqualityCheck (line 42) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/Auctions/WinningBid.cs
class WinningBid (line 7) | public class WinningBid : ValueObject<WinningBid>
method WinningBid (line 9) | private WinningBid() { }
method WinningBid (line 11) | public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime t...
method RaiseMaximumBidTo (line 33) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 41) | public bool WasMadeBy(Guid bidder)
method CanBeExceededBy (line 46) | public bool CanBeExceededBy(Money offer)
method HasNotReachedMaximumBid (line 51) | public bool HasNotReachedMaximumBid()
method GetAttributesToIncludeInEqualityCheck (line 56) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/FixedPriceListings/FixedPriceListing.cs
class FixedPriceListing (line 12) | public class FixedPriceListing
method FixedPriceListing (line 14) | private FixedPriceListing() { }
method FixedPriceListing (line 16) | public FixedPriceListing(Guid id, Guid sellerId, Money buyNowPrice, Da...
method BestOffer (line 45) | public void BestOffer()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/FixedPriceListings/IFixedPriceListingRepository.cs
type IFixedPriceListingRepository (line 9) | public interface IFixedPriceListingRepository
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/ListingFormat/FixedPriceListings/Offers/BestOffer.cs
class BestOffer (line 9) | public class BestOffer
method CounterOffer (line 11) | public void CounterOffer()
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/FormatType.cs
type FormatType (line 9) | public enum FormatType
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/IListingRepository.cs
type IListingRepository (line 9) | public interface IListingRepository
method Add (line 11) | void Add(Listing listing);
method FindBy (line 12) | Listing FindBy(Guid id);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/Listing.cs
class Listing (line 11) | public class Listing
method Listing (line 13) | public Listing(Guid id, Guid sellerId, ListingFormat format)
method Watch (line 42) | public WatchedItem Watch(Guid watchedItemId, Guid memberId)
method AskQuestion (line 57) | public Question AskQuestion(Guid MemberId, string quesiton, DateTime t...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/ListingFormat.cs
class ListingFormat (line 9) | public class ListingFormat
method ListingFormat (line 11) | public ListingFormat(Guid formatId, FormatType format)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/ListingRevision.cs
class ListingRevision (line 9) | public class ListingRevision
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Listings/ListingRevisionEvent.cs
class ListingRevisionEvent (line 9) | public class ListingRevisionEvent
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Members/IMemberService.cs
type IMemberService (line 9) | public interface IMemberService
method GetMember (line 11) | Member GetMember(Guid memberId);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Members/Member.cs
class Member (line 9) | public class Member
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Money.cs
class Money (line 7) | public class Money : ValueObject<Money>
method Money (line 11) | public Money()
method Money (line 16) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 23) | private void ThrowExceptionIfNotValid(decimal value)
method add (line 32) | public Money add(Money money)
method IsGreaterThan (line 37) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 42) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 47) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 52) | public override string ToString()
method GetAttributesToIncludeInEqualityCheck (line 59) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/MoneyCannotBeANegativeValueException.cs
class MoneyCannotBeANegativeValueException (line 5) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/MoreThanTwoDecimalPlacesInMoneyValueException.cs
class MoreThanTwoDecimalPlacesInMoneyValueException (line 5) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/QandA/Answer.cs
class Answer (line 9) | public class Answer
method Answer (line 11) | public Answer(DateTime dateAnswered, string text)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/QandA/IQuestionRepository.cs
type IQuestionRepository (line 9) | public interface IQuestionRepository
method FindBy (line 11) | Question FindBy(Guid id);
method Add (line 12) | void Add(Question question);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/QandA/Question.cs
class Question (line 10) | public class Question
method Question (line 19) | public Question(Guid id, Guid listingId, Guid memberId, string questio...
method SubmitAnAnswer (line 32) | public void SubmitAnAnswer(string answer, Guid sellerId, bool publishO...
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/QandA/QuestionAnswered.cs
class QuestionAnswered (line 9) | public class QuestionAnswered
method QuestionAnswered (line 11) | public QuestionAnswered(Guid questionId, Guid listingId)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/QandA/QuestionSubmitted.cs
class QuestionSubmitted (line 9) | public class QuestionSubmitted
method QuestionSubmitted (line 11) | public QuestionSubmitted(Guid questionId, Guid listingId)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Sellers/ISellerService.cs
type ISellerService (line 9) | public interface ISellerService
method GetSeller (line 11) | Seller GetSeller(Guid sellerId);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/Sellers/Seller.cs
class Seller (line 9) | public class Seller
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/WatchLists/IWatchedItemRepository.cs
type IWatchedItemRepository (line 9) | public interface IWatchedItemRepository
method FindBy (line 11) | WatchedItem FindBy(Guid id);
method Add (line 12) | void Add(WatchedItem watched);
method Remove (line 13) | void Remove(WatchedItem watched);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Listings/Model/WatchLists/WatchedItem.cs
class WatchedItem (line 9) | public class WatchedItem
method WatchedItem (line 11) | public WatchedItem(Guid id, Guid listingId, Guid memberId)
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Membership/Model/Members/IMemberRepository.cs
type IMemberRepository (line 9) | public interface IMemberRepository
method FindBy (line 11) | Member FindBy(Guid memberId);
FILE: 19 - Aggregates/PPPDDDChap19.eBidder/PPPDDDChap19.eBidder.Membership/Model/Members/Member.cs
class Member (line 9) | public class Member
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/BusinessUseCases/BidOnAuction.cs
class BidOnAuction (line 10) | public class BidOnAuction
method BidOnAuction (line 17) | public BidOnAuction(IAuctionRepository auctions, IBidHistoryRepository...
method Bid (line 25) | public void Bid(Guid auctionId, Guid memberId, decimal amount)
method BidPlaced (line 53) | private Action<BidPlaced> BidPlaced()
method OutBid (line 63) | private Action<OutBid> OutBid()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/BusinessUseCases/CreateAuction.cs
class CreateAuction (line 10) | public class CreateAuction
method CreateAuction (line 15) | public CreateAuction(IAuctionRepository auctions, AuctionDatabaseConte...
method Create (line 21) | public Guid Create(NewAuctionRequest command)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/BusinessUseCases/NewAuctionRequest.cs
class NewAuctionRequest (line 9) | public class NewAuctionRequest
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/Queries/AuctionStatus.cs
class AuctionStatus (line 10) | public class AuctionStatus
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/Queries/AuctionStatusQuery.cs
class AuctionStatusQuery (line 9) | public class AuctionStatusQuery
method AuctionStatusQuery (line 15) | public AuctionStatusQuery(IAuctionRepository auctions,
method AuctionStatus (line 24) | public AuctionStatus AuctionStatus(Guid auctionId)
method ConvertToStatus (line 33) | public AuctionStatus ConvertToStatus(AuctionSnapshot snapshot)
method TimeRemaining (line 51) | public TimeSpan TimeRemaining(DateTime AuctionEnds)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/Queries/BidHistoryQuery.cs
class BidHistoryQuery (line 8) | public class BidHistoryQuery
method BidHistoryQuery (line 12) | public BidHistoryQuery(IBidHistoryRepository bidHistory)
method BidHistoryFor (line 17) | public IEnumerable<BidInformation> BidHistoryFor(Guid auctionId)
method Convert (line 24) | public IEnumerable<BidInformation> Convert(IEnumerable<Bid> bids)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Application/Queries/BidInformation.cs
class BidInformation (line 9) | public class BidInformation
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Bootstrapper.cs
class Bootstrapper (line 9) | public static class Bootstrapper
method Startup (line 11) | public static void Startup()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/AuctionDatabaseContext.cs
class AuctionDatabaseContext (line 8) | public partial class AuctionDatabaseContext : DbContext
method AuctionDatabaseContext (line 10) | static AuctionDatabaseContext()
method AuctionDatabaseContext (line 15) | public AuctionDatabaseContext()
method OnModelCreating (line 23) | protected override void OnModelCreating(DbModelBuilder modelBuilder)
method Clear (line 29) | public void Clear()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/AuctionRepository.cs
class AuctionRepository (line 9) | public class AuctionRepository : IAuctionRepository
method AuctionRepository (line 13) | public AuctionRepository(AuctionDatabaseContext auctionExampleContext)
method Add (line 18) | public void Add(Auction auction)
method Save (line 27) | public void Save(Auction auction)
method FindBy (line 34) | public Auction FindBy(Guid Id)
method Map (line 58) | public void Map(AuctionDTO auctionDTO, AuctionSnapshot snapshot)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/BidHistoryRepository.cs
class BidHistoryRepository (line 10) | public class BidHistoryRepository : IBidHistoryRepository
method BidHistoryRepository (line 14) | public BidHistoryRepository(AuctionDatabaseContext auctionExampleContext)
method NoOfBidsFor (line 19) | public int NoOfBidsFor(Guid autionId)
method Add (line 24) | public void Add(Bid bid)
method FindBy (line 38) | public BidHistory FindBy(Guid auctionId)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/DataModel/AuctionDTO.cs
class AuctionDTO (line 6) | public partial class AuctionDTO
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/DataModel/BidDTO.cs
class BidDTO (line 6) | public partial class BidDTO
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/DomainEvents.cs
class DomainEvents (line 12) | public static class DomainEvents
method Register (line 28) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 35) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 47) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 51) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 56) | public void Dispose()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/Entity.cs
class Entity (line 5) | public abstract class Entity<TId>
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/IClock.cs
type IClock (line 9) | public interface IClock
method Time (line 11) | DateTime Time();
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/Mapping/AuctionMap.cs
class AuctionMap (line 7) | public class AuctionMap : EntityTypeConfiguration<AuctionDTO>
method AuctionMap (line 9) | public AuctionMap()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/Mapping/BidMap.cs
class BidMap (line 7) | public class BidMap : EntityTypeConfiguration<BidDTO>
method BidMap (line 9) | public BidMap()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/SystemClock.cs
class SystemClock (line 9) | public class SystemClock : IClock
method Time (line 11) | public DateTime Time()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Infrastructure/ValueObject.cs
class ValueObject (line 7) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 9) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 11) | public override bool Equals(object other)
method Equals (line 16) | public bool Equals(T other)
method GetHashCode (line 35) | public override int GetHashCode()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/Auction.cs
class Auction (line 10) | public class Auction : Entity<Guid>
method Auction (line 12) | public Auction(Guid id, Money startingPrice, DateTime endsAt)
method Auction (line 28) | private Auction(AuctionSnapshot snapshot)
method CreateFrom (line 39) | public static Auction CreateFrom(AuctionSnapshot snapshot)
method GetSnapshot (line 48) | public AuctionSnapshot GetSnapshot()
method HasACurrentBid (line 62) | private bool HasACurrentBid()
method StillInProgress (line 67) | private bool StillInProgress(DateTime currentTime)
method PlaceBidFor (line 72) | public void PlaceBidFor(Offer offer, DateTime currentTime)
method BidderIsIncreasingMaximumBidToNew (line 90) | private bool BidderIsIncreasingMaximumBidToNew(Offer offer)
method FirstOffer (line 95) | private bool FirstOffer()
method PlaceABidForTheFirst (line 100) | private void PlaceABidForTheFirst(Offer offer)
method Place (line 106) | private void Place(WinningBid newBid)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/AuctionSnapshot.cs
class AuctionSnapshot (line 5) | public class AuctionSnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/AutomaticBidder.cs
class AutomaticBidder (line 9) | public class AutomaticBidder
method GenerateNextSequenceOfBidsAfter (line 11) | public IEnumerable<WinningBid> GenerateNextSequenceOfBidsAfter(Offer o...
method CalculateNextBid (line 38) | private WinningBid CalculateNextBid(WinningBid winningbid, Offer offer)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/BidPlaced.cs
class BidPlaced (line 7) | public class BidPlaced
method BidPlaced (line 9) | public BidPlaced(Guid auctionId, Guid bidderId, Money amountBid, DateT...
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/IAuctionRepository.cs
type IAuctionRepository (line 6) | public interface IAuctionRepository
method Add (line 8) | void Add(Auction auction);
method Save (line 9) | void Save(Auction auction);
method FindBy (line 10) | Auction FindBy(Guid Id);
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/Money.cs
class Money (line 8) | public class Money : ValueObject<Money>, IComparable<Money>
method Money (line 12) | public Money()
method Money (line 17) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 24) | private void ThrowExceptionIfNotValid(decimal value)
method Add (line 33) | public Money Add(Money money)
method IsGreaterThan (line 38) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 43) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 48) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 53) | public override string ToString()
method GetSnapshot (line 58) | public MoneySnapshot GetSnapshot()
method GetAttributesToIncludeInEqualityCheck (line 63) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method CompareTo (line 68) | public int CompareTo(Money other)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/MoneyCannotBeANegativeValueException.cs
class MoneyCannotBeANegativeValueException (line 5) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/MoneySnapshot.cs
class MoneySnapshot (line 5) | public class MoneySnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/MoreThanTwoDecimalPlacesInMoneyValueException.cs
class MoreThanTwoDecimalPlacesInMoneyValueException (line 5) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/Offer.cs
class Offer (line 8) | public class Offer : ValueObject<Offer>
method Offer (line 10) | public Offer(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
method GetAttributesToIncludeInEqualityCheck (line 30) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/OutBid.cs
class OutBid (line 9) | public class OutBid
method OutBid (line 11) | public OutBid(Guid auctionId, Guid bidderId)
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/Price.cs
class Price (line 8) | public class Price : ValueObject<Price>
method Price (line 10) | private Price()
method Price (line 13) | public Price(Money amount)
method BidIncrement (line 23) | public Money BidIncrement()
method CanBeExceededBy (line 38) | public bool CanBeExceededBy(Money offer)
method GetAttributesToIncludeInEqualityCheck (line 43) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/WinningBid.cs
class WinningBid (line 8) | public class WinningBid : ValueObject<WinningBid>
method WinningBid (line 10) | private WinningBid() { }
method WinningBid (line 12) | public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime t...
method RaiseMaximumBidTo (line 35) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 43) | public bool WasMadeBy(Guid bidder)
method CanBeExceededBy (line 48) | public bool CanBeExceededBy(Money offer)
method HasNotReachedMaximumBid (line 53) | public bool HasNotReachedMaximumBid()
method GetSnapshot (line 58) | public WinningBidSnapshot GetSnapshot()
method CreateFrom (line 70) | public static WinningBid CreateFrom(WinningBidSnapshot bidSnapShot)
method GetAttributesToIncludeInEqualityCheck (line 75) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/Auction/WinningBidSnapshot.cs
class WinningBidSnapshot (line 5) | public class WinningBidSnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/BidHistory/Bid.cs
class Bid (line 11) | public class Bid : ValueObject<Bid>
method Bid (line 13) | public Bid(Guid auctionId, Guid bidderId, Money amountBid, DateTime ti...
method GetAttributesToIncludeInEqualityCheck (line 38) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/BidHistory/BidHistory.cs
class BidHistory (line 7) | public class BidHistory
method BidHistory (line 11) | public BidHistory(IEnumerable<Bid> bids)
method ShowAllBids (line 19) | public IEnumerable<Bid> ShowAllBids()
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Application/Model/BidHistory/IBidHistoryRepository.cs
type IBidHistoryRepository (line 9) | public interface IBidHistoryRepository
method NoOfBidsFor (line 11) | int NoOfBidsFor(Guid autionId);
method Add (line 12) | void Add(Bid bid);
method FindBy (line 13) | BidHistory FindBy(Guid auctionId);
FILE: 21 - Repositories/DDDPPP.Chap21.EFExample/DDDPPP.Chap21.EFExample.Presentation/Program.cs
class Program (line 13) | public class Program
method Main (line 17) | public static void Main(string[] args)
method CreateAution (line 36) | public static Guid CreateAution()
method Bid (line 50) | public static void Bid(Guid auctionId, Guid memberId, decimal amount)
method PrintStatusOfAuctionBy (line 62) | public static void PrintStatusOfAuctionBy(Guid auctionId)
method PrintBidHistoryOf (line 74) | public static void PrintBidHistoryOf(Guid auctionId)
method FindNameOfBidderWith (line 87) | public static string FindNameOfBidderWith(Guid id)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/BusinessUseCases/BidOnAuction.cs
class BidOnAuction (line 8) | public class BidOnAuction
method BidOnAuction (line 15) | public BidOnAuction(IAuctionRepository auctionRepository, IBidHistoryR...
method Bid (line 23) | public void Bid(Guid auctionId, Guid memberId, decimal amount)
method BidPlaced (line 49) | private Action<BidPlaced> BidPlaced()
method OutBid (line 59) | private Action<OutBid> OutBid()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/BusinessUseCases/CreateAuction.cs
class CreateAuction (line 7) | public class CreateAuction
method CreateAuction (line 12) | public CreateAuction(IAuctionRepository auctionRepository, IUnitOfWork...
method Create (line 18) | public Guid Create(NewAuctionRequest command)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/BusinessUseCases/NewAuctionRequest.cs
class NewAuctionRequest (line 9) | public class NewAuctionRequest
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/Queries/AuctionStatus.cs
class AuctionStatus (line 10) | public class AuctionStatus
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/Queries/AuctionStatusQuery.cs
class AuctionStatusQuery (line 9) | public class AuctionStatusQuery
method AuctionStatusQuery (line 15) | public AuctionStatusQuery(IAuctionRepository auctions, IBidHistoryRepo...
method AuctionStatus (line 22) | public AuctionStatus AuctionStatus(Guid auctionId)
method ConvertToStatus (line 31) | public AuctionStatus ConvertToStatus(AuctionSnapshot snapshot)
method TimeRemaining (line 49) | public TimeSpan TimeRemaining(DateTime AuctionEnds)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/Queries/BidHistoryQuery.cs
class BidHistoryQuery (line 8) | public class BidHistoryQuery
method BidHistoryQuery (line 12) | public BidHistoryQuery(IBidHistoryRepository bidHistory)
method BidHistoryFor (line 17) | public IEnumerable<BidInformation> BidHistoryFor(Guid auctionId)
method Convert (line 24) | public IEnumerable<BidInformation> Convert(IEnumerable<HistoricalBid> ...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Application/Queries/BidInformation.cs
class BidInformation (line 9) | public class BidInformation
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Bootstrapper.cs
class Bootstrapper (line 9) | public static class Bootstrapper
method Startup (line 11) | public static void Startup()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/AuctionRepository.cs
class AuctionRepository (line 12) | public class AuctionRepository : IAuctionRepository, IUnitOfWorkRepository
method AuctionRepository (line 16) | public AuctionRepository(IUnitOfWork unitOfWork)
method Add (line 21) | public void Add(Auction auction)
method Save (line 31) | public void Save(Auction auction)
method FindBy (line 41) | public Auction FindBy(Guid Id)
method PersistCreationOf (line 72) | public void PersistCreationOf(IAggregateDataModel entity)
method PersistUpdateOf (line 96) | public void PersistUpdateOf(IAggregateDataModel entity)
method Map (line 136) | public void Map(AuctionDTO auctionDTO, AuctionSnapshot snapshot)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/BidHistoryRepository.cs
class BidHistoryRepository (line 12) | public class BidHistoryRepository : IBidHistoryRepository, IUnitOfWorkRe...
method BidHistoryRepository (line 16) | public BidHistoryRepository(IUnitOfWork unitOfWork)
method NoOfBidsFor (line 21) | public int NoOfBidsFor(Guid auctionId)
method Add (line 35) | public void Add(HistoricalBid bid)
method FindBy (line 49) | public BidHistory FindBy(Guid auctionId)
method PersistCreationOf (line 68) | public void PersistCreationOf(IAggregateDataModel entity)
method PersistUpdateOf (line 98) | public void PersistUpdateOf(IAggregateDataModel entity)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/ConcurrencyException.cs
class ConcurrencyException (line 5) | public class ConcurrencyException : ApplicationException
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/DataModel/AuctionDTO.cs
class AuctionDTO (line 6) | public partial class AuctionDTO : IAggregateDataModel
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/DataModel/BidDTO.cs
class BidDTO (line 6) | public partial class BidDTO : IAggregateDataModel
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/DomainEvents.cs
class DomainEvents (line 12) | public static class DomainEvents
method Register (line 28) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 35) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 47) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 51) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 56) | public void Dispose()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/Entity.cs
class Entity (line 6) | public abstract class Entity<TId>
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/IAggregateDataModel.cs
type IAggregateDataModel (line 5) | public interface IAggregateDataModel
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/IClock.cs
type IClock (line 9) | public interface IClock
method Time (line 11) | DateTime Time();
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/IUnitOfWork.cs
type IUnitOfWork (line 5) | public interface IUnitOfWork
method RegisterAmended (line 7) | void RegisterAmended(IAggregateDataModel entity, IUnitOfWorkRepository...
method RegisterNew (line 8) | void RegisterNew(IAggregateDataModel entity, IUnitOfWorkRepository uni...
method Commit (line 9) | void Commit();
method Clear (line 10) | void Clear();
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/IUnitOfWorkRepository.cs
type IUnitOfWorkRepository (line 5) | public interface IUnitOfWorkRepository
method PersistCreationOf (line 7) | void PersistCreationOf(IAggregateDataModel entity);
method PersistUpdateOf (line 8) | void PersistUpdateOf(IAggregateDataModel entity);
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/SystemClock.cs
class SystemClock (line 9) | public class SystemClock : IClock
method Time (line 11) | public DateTime Time()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/UnitOfWork.cs
class UnitOfWork (line 7) | public class UnitOfWork : IUnitOfWork
method UnitOfWork (line 12) | public UnitOfWork()
method RegisterAmended (line 18) | public void RegisterAmended(IAggregateDataModel entity, IUnitOfWorkRep...
method RegisterNew (line 26) | public void RegisterNew(IAggregateDataModel entity, IUnitOfWorkReposit...
method Clear (line 34) | public void Clear()
method Commit (line 40) | public void Commit()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Infrastructure/ValueObject.cs
class ValueObject (line 7) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 9) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 11) | public override bool Equals(object other)
method Equals (line 16) | public bool Equals(T other)
method GetHashCode (line 35) | public override int GetHashCode()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/Auction.cs
class Auction (line 10) | public class Auction : Entity<Guid>
method Auction (line 12) | public Auction(Guid id, Money startingPrice, DateTime endsAt)
method Auction (line 28) | private Auction(AuctionSnapshot snapshot)
method CreateFrom (line 39) | public static Auction CreateFrom(AuctionSnapshot snapshot)
method GetSnapshot (line 48) | public AuctionSnapshot GetSnapshot()
method HasACurrentBid (line 62) | private bool HasACurrentBid()
method StillInProgress (line 67) | private bool StillInProgress(DateTime currentTime)
method PlaceBidFor (line 72) | public void PlaceBidFor(Bid bid, DateTime currentTime)
method BidderIsIncreasingMaximumBid (line 85) | private bool BidderIsIncreasingMaximumBid(Bid bid)
method FirstOffer (line 90) | private bool FirstOffer()
method PlaceABidForTheFirst (line 95) | private void PlaceABidForTheFirst(Bid offer)
method Set (line 105) | private void Set(WinningBid newBid)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/AuctionSnapshot.cs
class AuctionSnapshot (line 5) | public class AuctionSnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/Bid.cs
class Bid (line 8) | public class Bid : ValueObject<Bid>
method Bid (line 10) | public Bid(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
method GetAttributesToIncludeInEqualityCheck (line 30) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/BidPlaced.cs
class BidPlaced (line 7) | public class BidPlaced
method BidPlaced (line 9) | public BidPlaced(Guid auctionId, Guid bidderId, Money amountBid, DateT...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/IAuctionRepository.cs
type IAuctionRepository (line 6) | public interface IAuctionRepository
method Add (line 8) | void Add(Auction auction);
method Save (line 9) | void Save(Auction auction);
method FindBy (line 10) | Auction FindBy(Guid Id);
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/Money.cs
class Money (line 8) | public class Money : ValueObject<Money>, IComparable<Money>
method Money (line 12) | public Money()
method Money (line 17) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 24) | private void ThrowExceptionIfNotValid(decimal value)
method Add (line 33) | public Money Add(Money money)
method IsGreaterThan (line 38) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 43) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 48) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 53) | public override string ToString()
method GetSnapshot (line 58) | public MoneySnapshot GetSnapshot()
method GetAttributesToIncludeInEqualityCheck (line 63) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method CompareTo (line 68) | public int CompareTo(Money other)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/MoneyCannotBeANegativeValueException.cs
class MoneyCannotBeANegativeValueException (line 5) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/MoneySnapshot.cs
class MoneySnapshot (line 5) | public class MoneySnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/MoreThanTwoDecimalPlacesInMoneyValueException.cs
class MoreThanTwoDecimalPlacesInMoneyValueException (line 5) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/OutBid.cs
class OutBid (line 9) | public class OutBid
method OutBid (line 11) | public OutBid(Guid auctionId, Guid bidderId)
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/Price.cs
class Price (line 8) | public class Price : ValueObject<Price>
method Price (line 10) | private Price()
method Price (line 13) | public Price(Money amount)
method BidIncrement (line 23) | public Money BidIncrement()
method CanBeExceededBy (line 38) | public bool CanBeExceededBy(Money offer)
method GetAttributesToIncludeInEqualityCheck (line 43) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/WinningBid.cs
class WinningBid (line 8) | public class WinningBid : ValueObject<WinningBid>
method WinningBid (line 10) | private WinningBid() { }
method WinningBid (line 12) | public WinningBid(Guid auctionId, Guid bidder, Money maximumBid, Money...
method RaiseMaximumBidTo (line 37) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 45) | public bool WasMadeBy(Guid bidder)
method DetermineWinningBidIncrement (line 50) | public WinningBid DetermineWinningBidIncrement(Bid newbid)
method DetermineWinnerFromProxyBidding (line 64) | private WinningBid DetermineWinnerFromProxyBidding(WinningBid winningB...
method CreateNewBid (line 88) | private WinningBid CreateNewBid(Guid bidder, Money bid, Money maxBid, ...
method MaxBidCanBeExceededBy (line 95) | private bool MaxBidCanBeExceededBy(Money bid)
method CanBeExceededBy (line 100) | public bool CanBeExceededBy(Money offer)
method HasNotReachedMaximumBid (line 105) | public bool HasNotReachedMaximumBid()
method GetSnapshot (line 110) | public WinningBidSnapshot GetSnapshot()
method CreateFrom (line 123) | public static WinningBid CreateFrom(WinningBidSnapshot bidSnapShot)
method GetAttributesToIncludeInEqualityCheck (line 128) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/Auction/WinningBidSnapshot.cs
class WinningBidSnapshot (line 5) | public class WinningBidSnapshot
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/BidHistory/BidHistory.cs
class BidHistory (line 7) | public class BidHistory
method BidHistory (line 11) | public BidHistory(IEnumerable<HistoricalBid> bids)
method ShowAllBids (line 19) | public IEnumerable<HistoricalBid> ShowAllBids()
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/BidHistory/HistoricalBid.cs
class HistoricalBid (line 11) | public class HistoricalBid : ValueObject<HistoricalBid>
method HistoricalBid (line 13) | public HistoricalBid(Guid auctionId, Guid bidderId, Money amountBid, D...
method GetAttributesToIncludeInEqualityCheck (line 38) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Application/Model/BidHistory/IBidHistoryRepository.cs
type IBidHistoryRepository (line 9) | public interface IBidHistoryRepository
method NoOfBidsFor (line 11) | int NoOfBidsFor(Guid autionId);
method Add (line 12) | void Add(HistoricalBid bid);
method FindBy (line 13) | BidHistory FindBy(Guid auctionId);
FILE: 21 - Repositories/DDDPPP.Chap21.MicroORM/DDDPPP.Chap21.MicroORM.Presentation/Program.cs
class Program (line 10) | public class Program
method Main (line 14) | public static void Main(string[] args)
method CreateAuction (line 38) | public static Guid CreateAuction()
method Bid (line 52) | public static void Bid(Guid auctionId, Guid memberId, decimal amount)
method PrintStatusOfAuctionBy (line 64) | public static void PrintStatusOfAuctionBy(Guid auctionId)
method PrintBidHistoryOf (line 76) | public static void PrintBidHistoryOf(Guid auctionId)
method FindNameOfBidderWith (line 89) | public static string FindNameOfBidderWith(Guid id)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/BusinessUseCases/BidOnAuction.cs
class BidOnAuction (line 9) | public class BidOnAuction
method BidOnAuction (line 16) | public BidOnAuction(IAuctionRepository auctionRepository,
method Bid (line 26) | public void Bid(Guid auctionId, Guid memberId, decimal amount)
method BidPlaced (line 53) | private Action<BidPlaced> BidPlaced()
method OutBid (line 63) | private Action<OutBid> OutBid()
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/BusinessUseCases/CreateAuction.cs
class CreateAuction (line 7) | public class CreateAuction
method CreateAuction (line 12) | public CreateAuction(IAuctionRepository auctionRepository,ISession uni...
method Create (line 18) | public Guid Create(NewAuctionRequest command)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/BusinessUseCases/NewAuctionRequest.cs
class NewAuctionRequest (line 5) | public class NewAuctionRequest
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/Queries/AuctionStatus.cs
class AuctionStatus (line 5) | public class AuctionStatus
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/Queries/AuctionStatusQuery.cs
class AuctionStatusQuery (line 10) | public class AuctionStatusQuery
method AuctionStatusQuery (line 16) | public AuctionStatusQuery(ISession session,
method AuctionStatus (line 25) | public AuctionStatus AuctionStatus(Guid auctionId)
method TimeRemaining (line 38) | public TimeSpan TimeRemaining(DateTime AuctionEnds)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/Queries/BidHistoryQuery.cs
class BidHistoryQuery (line 9) | public class BidHistoryQuery
method BidHistoryQuery (line 13) | public BidHistoryQuery(ISession session)
method BidHistoryFor (line 18) | public IEnumerable<BidInformation> BidHistoryFor(Guid auctionId)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Application/Queries/BidInformation.cs
class BidInformation (line 5) | public class BidInformation
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Bootstrapper.cs
class Bootstrapper (line 12) | public static class Bootstrapper
method Startup (line 14) | public static void Startup()
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/AuctionRepository.cs
class AuctionRepository (line 10) | public class AuctionRepository : IAuctionRepository
method AuctionRepository (line 14) | public AuctionRepository(ISession session)
method Add (line 19) | public void Add(Auction auction)
method FindBy (line 24) | public Auction FindBy(Guid Id)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/BidHistoryRepository.cs
class BidHistoryRepository (line 8) | public class BidHistoryRepository : IBidHistoryRepository
method BidHistoryRepository (line 12) | public BidHistoryRepository(ISession session)
method NoOfBidsFor (line 17) | public int NoOfBidsFor(Guid autionId)
method Add (line 26) | public void Add(Bid bid)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/DomainEvents.cs
class DomainEvents (line 9) | public static class DomainEvents
method Register (line 25) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 32) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 44) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 48) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 53) | public void Dispose()
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/Entity.cs
class Entity (line 3) | public abstract class Entity<TId>
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/IClock.cs
type IClock (line 5) | public interface IClock
method Time (line 7) | DateTime Time();
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/SystemClock.cs
class SystemClock (line 5) | public class SystemClock : IClock
method Time (line 7) | public DateTime Time()
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Infrastructure/ValueObject.cs
class ValueObject (line 6) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 8) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 10) | public override bool Equals(object other)
method Equals (line 15) | public bool Equals(T other)
method GetHashCode (line 34) | public override int GetHashCode()
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/Auction.cs
class Auction (line 6) | public class Auction : Entity<Guid>
method Auction (line 8) | private Auction() { }
method Auction (line 10) | public Auction(Guid id, Money startingPrice, DateTime endsAt)
method StillInProgress (line 30) | private bool StillInProgress(DateTime currentTime)
method PlaceBidFor (line 35) | public void PlaceBidFor(Offer offer, DateTime currentTime)
method BidderIsIncreasingMaximumBidToNew (line 53) | private bool BidderIsIncreasingMaximumBidToNew(Offer offer)
method FirstOffer (line 58) | private bool FirstOffer()
method PlaceABidForTheFirst (line 63) | private void PlaceABidForTheFirst(Offer offer)
method Place (line 69) | private void Place(WinningBid newBid)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/AutomaticBidder.cs
class AutomaticBidder (line 5) | public class AutomaticBidder
method GenerateNextSequenceOfBidsAfter (line 7) | public IEnumerable<WinningBid> GenerateNextSequenceOfBidsAfter(Offer o...
method CalculateNextBid (line 34) | private WinningBid CalculateNextBid(WinningBid winningbid, Offer offer)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/BidPlaced.cs
class BidPlaced (line 5) | public class BidPlaced
method BidPlaced (line 7) | public BidPlaced(Guid auctionId, Guid bidderId, Money amountBid, DateT...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/IAuctionRepository.cs
type IAuctionRepository (line 5) | public interface IAuctionRepository
method Add (line 7) | void Add(Auction auction);
method FindBy (line 8) | Auction FindBy(Guid Id);
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/Money.cs
class Money (line 7) | public class Money : ValueObject<Money>
method Money (line 11) | public Money()
method Money (line 16) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 23) | private void ThrowExceptionIfNotValid(decimal value)
method add (line 32) | public Money add(Money money)
method IsGreaterThan (line 37) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 42) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 47) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 52) | public override string ToString()
method GetAttributesToIncludeInEqualityCheck (line 59) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/MoneyCannotBeANegativeValueException.cs
class MoneyCannotBeANegativeValueException (line 5) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/MoreThanTwoDecimalPlacesInMoneyValueException.cs
class MoreThanTwoDecimalPlacesInMoneyValueException (line 5) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/Offer.cs
class Offer (line 7) | public class Offer : ValueObject<Offer>
method Offer (line 9) | public Offer(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
method GetAttributesToIncludeInEqualityCheck (line 29) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/OutBid.cs
class OutBid (line 5) | public class OutBid
method OutBid (line 7) | public OutBid(Guid auctionId, Guid bidderId)
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/Price.cs
class Price (line 7) | public class Price : ValueObject<Price>
method Price (line 9) | private Price()
method Price (line 12) | public Price(Money amount)
method BidIncrement (line 22) | public Money BidIncrement()
method CanBeExceededBy (line 37) | public bool CanBeExceededBy(Money offer)
method GetAttributesToIncludeInEqualityCheck (line 42) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/Auction/WinningBid.cs
class WinningBid (line 7) | public class WinningBid : ValueObject<WinningBid>
method WinningBid (line 9) | private WinningBid() { }
method WinningBid (line 11) | public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime t...
method RaiseMaximumBidTo (line 33) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 41) | public bool WasMadeBy(Guid bidder)
method CanBeExceededBy (line 46) | public bool CanBeExceededBy(Money offer)
method HasNotReachedMaximumBid (line 51) | public bool HasNotReachedMaximumBid()
method GetAttributesToIncludeInEqualityCheck (line 56) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/BidHistory/Bid.cs
class Bid (line 8) | public class Bid : ValueObject<Bid>
method Bid (line 10) | private Bid()
method Bid (line 13) | public Bid(Guid auctionId, Guid bidderId, Money amountBid, DateTime ti...
method GetAttributesToIncludeInEqualityCheck (line 39) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Application/Model/BidHistory/IBidHistoryRepository.cs
type IBidHistoryRepository (line 5) | public interface IBidHistoryRepository
method NoOfBidsFor (line 7) | int NoOfBidsFor(Guid autionId);
method Add (line 8) | void Add(Bid bid);
FILE: 21 - Repositories/DDDPPP.Chap21.NHibernateExample/DDDPPP.Chap21.NHibernateExample.Presentation/Program.cs
class Program (line 10) | public class Program
method Main (line 14) | public static void Main(string[] args)
method CreateAuction (line 33) | public static Guid CreateAuction()
method Bid (line 47) | public static void Bid(Guid auctionId, Guid memberId, decimal amount)
method PrintStatusOfAuctionBy (line 59) | public static void PrintStatusOfAuctionBy(Guid auctionId)
method PrintBidHistoryOf (line 71) | public static void PrintBidHistoryOf(Guid auctionId)
method FindNameOfBidderWith (line 84) | public static string FindNameOfBidderWith(Guid id)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application.Tests/Domain/AutomaticBidderScenarios.cs
class AutomaticBidderScenarios (line 10) | [TestFixture]
method ScenarioA (line 13) | [Test]
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/BusinessUseCases/BidOnAuction.cs
class BidOnAuction (line 10) | public class BidOnAuction
method BidOnAuction (line 17) | public BidOnAuction(IAuctionRepository auctions,
method Bid (line 28) | public void Bid(Guid auctionId, Guid memberId, decimal amount)
method BidPlaced (line 51) | private Action<BidPlaced> BidPlaced()
method OutBid (line 61) | private Action<OutBid> OutBid()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/BusinessUseCases/CreateAuction.cs
class CreateAuction (line 9) | public class CreateAuction
method CreateAuction (line 14) | public CreateAuction(IAuctionRepository auctions, IDocumentSession uni...
method Create (line 20) | public Guid Create(NewAuctionRequest command)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/BusinessUseCases/NewAuctionRequest.cs
class NewAuctionRequest (line 5) | public class NewAuctionRequest
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/Queries/AuctionStatus.cs
class AuctionStatus (line 5) | public class AuctionStatus
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/Queries/AuctionStatusQuery.cs
class AuctionStatusQuery (line 10) | public class AuctionStatusQuery
method AuctionStatusQuery (line 16) | public AuctionStatusQuery(IAuctionRepository auctions,
method AuctionStatus (line 25) | public AuctionStatus AuctionStatus(Guid auctionId)
method TimeRemaining (line 46) | public TimeSpan TimeRemaining(DateTime AuctionEnds)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/Queries/BidHistoryQuery.cs
class BidHistoryQuery (line 8) | public class BidHistoryQuery
method BidHistoryQuery (line 12) | public BidHistoryQuery(IBidHistoryRepository bidHistory)
method BidHistoryFor (line 17) | public IEnumerable<BidInformation> BidHistoryFor(Guid auctionId)
method Convert (line 24) | public IEnumerable<BidInformation> Convert(IEnumerable<Bid> bids)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Application/Queries/BidInformation.cs
class BidInformation (line 9) | public class BidInformation
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Bootstrapper.cs
class Bootstrapper (line 15) | public static class Bootstrapper
method Startup (line 17) | public static void Startup()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/AuctionRepository.cs
class AuctionRepository (line 8) | public class AuctionRepository : IAuctionRepository
method AuctionRepository (line 12) | public AuctionRepository(IDocumentSession documentSession)
method Add (line 17) | public void Add(Auction auction)
method FindBy (line 22) | public Auction FindBy(Guid Id)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/BidHistoryRepository.cs
class BidHistoryRepository (line 9) | public class BidHistoryRepository : IBidHistoryRepository
method BidHistoryRepository (line 13) | public BidHistoryRepository(IDocumentSession documentSession)
method NoOfBidsFor (line 18) | public int NoOfBidsFor(Guid autionId)
method Add (line 29) | public void Add(Bid bid)
method FindBy (line 34) | public Model.BidHistory.BidHistory FindBy(Guid auctionId)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/BidHistory_NumberOfBids.cs
class BidHistory_NumberOfBids (line 12) | public class BidHistory_NumberOfBids : AbstractIndexCreationTask<Bid, Bi...
class ReduceResult (line 14) | public class ReduceResult
method BidHistory_NumberOfBids (line 20) | public BidHistory_NumberOfBids()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/DomainEvents.cs
class DomainEvents (line 12) | public static class DomainEvents
method Register (line 28) | public static IDisposable Register<T>(Action<T> callback)
method Raise (line 35) | public static void Raise<T>(T eventArgs)
class DomainEventRegistrationRemover (line 47) | private sealed class DomainEventRegistrationRemover : IDisposable
method DomainEventRegistrationRemover (line 51) | public DomainEventRegistrationRemover(Action toCall)
method Dispose (line 56) | public void Dispose()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/Entity.cs
class Entity (line 5) | public abstract class Entity<TId>
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/IClock.cs
type IClock (line 9) | public interface IClock
method Time (line 11) | DateTime Time();
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/SystemClock.cs
class SystemClock (line 9) | public class SystemClock : IClock
method Time (line 11) | public DateTime Time()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Infrastructure/ValueObject.cs
class ValueObject (line 6) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 8) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 10) | public override bool Equals(object other)
method Equals (line 15) | public bool Equals(T other)
method GetHashCode (line 34) | public override int GetHashCode()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/Auction.cs
class Auction (line 6) | public class Auction : Entity<Guid>
method Auction (line 8) | private Auction() { }
method Auction (line 10) | public Auction(Guid id, Money startingPrice, DateTime endsAt)
method StillInProgress (line 30) | public bool StillInProgress(DateTime currentTime)
method PlaceBidFor (line 35) | public void PlaceBidFor(Offer offer, DateTime currentTime)
method BidderIsIncreasingMaximumBidToNew (line 53) | private bool BidderIsIncreasingMaximumBidToNew(Offer offer)
method HasBeenBidOn (line 58) | public bool HasBeenBidOn()
method FirstOffer (line 63) | private bool FirstOffer()
method PlaceABidForTheFirst (line 68) | private void PlaceABidForTheFirst(Offer offer)
method Place (line 74) | private void Place(WinningBid newBid)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/AutomaticBidder.cs
class AutomaticBidder (line 9) | public class AutomaticBidder // DomainService
method GenerateNextSequenceOfBidsAfter (line 11) | public IEnumerable<WinningBid> GenerateNextSequenceOfBidsAfter(Offer o...
method CalculateNextBid (line 38) | private WinningBid CalculateNextBid(WinningBid winningbid, Offer offer)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/BidPlaced.cs
class BidPlaced (line 5) | public class BidPlaced
method BidPlaced (line 7) | public BidPlaced(Guid auctionId, Guid bidderId, Money amountBid, DateT...
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/IAuctionRepository.cs
type IAuctionRepository (line 10) | public interface IAuctionRepository
method Add (line 12) | void Add(Auction auction);
method FindBy (line 13) | Auction FindBy(Guid Id);
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/Money.cs
class Money (line 7) | public class Money : ValueObject<Money>, IComparable<Money>
method Money (line 11) | public Money()
method Money (line 16) | public Money(decimal value)
method ThrowExceptionIfNotValid (line 23) | private void ThrowExceptionIfNotValid(decimal value)
method add (line 32) | public Money add(Money money)
method IsGreaterThan (line 37) | public bool IsGreaterThan(Money money)
method IsGreaterThanOrEqualTo (line 42) | public bool IsGreaterThanOrEqualTo(Money money)
method IsLessThanOrEqualTo (line 47) | public bool IsLessThanOrEqualTo(Money money)
method ToString (line 52) | public override string ToString()
method GetAttributesToIncludeInEqualityCheck (line 57) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method CompareTo (line 62) | public int CompareTo(Money other)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/MoneyCannotBeANegativeValueException.cs
class MoneyCannotBeANegativeValueException (line 5) | public class MoneyCannotBeANegativeValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/MoreThanTwoDecimalPlacesInMoneyValueException.cs
class MoreThanTwoDecimalPlacesInMoneyValueException (line 5) | public class MoreThanTwoDecimalPlacesInMoneyValueException : Exception
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/Offer.cs
class Offer (line 7) | public class Offer : ValueObject<Offer>
method Offer (line 9) | public Offer(Guid bidderId, Money maximumBid, DateTime timeOfOffer)
method GetAttributesToIncludeInEqualityCheck (line 29) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/OutBid.cs
class OutBid (line 5) | public class OutBid
method OutBid (line 7) | public OutBid(Guid auctionId, Guid bidderId)
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/Price.cs
class Price (line 7) | public class Price : ValueObject<Price>
method Price (line 9) | private Price()
method Price (line 12) | public Price(Money amount)
method BidIncrement (line 22) | public Money BidIncrement()
method CanBeExceededBy (line 37) | public bool CanBeExceededBy(Money offer)
method GetAttributesToIncludeInEqualityCheck (line 42) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/Auction/WinningBid.cs
class WinningBid (line 7) | public class WinningBid : ValueObject<WinningBid>
method WinningBid (line 9) | private WinningBid() { }
method WinningBid (line 11) | public WinningBid(Guid bidder, Money maximumBid, Money bid, DateTime t...
method RaiseMaximumBidTo (line 33) | public WinningBid RaiseMaximumBidTo(Money newAmount)
method WasMadeBy (line 41) | public bool WasMadeBy(Guid bidder)
method CanBeExceededBy (line 46) | public bool CanBeExceededBy(Money offer)
method HasNotReachedMaximumBid (line 51) | public bool HasNotReachedMaximumBid()
method GetAttributesToIncludeInEqualityCheck (line 56) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/BidHistory/Bid.cs
class Bid (line 8) | public class Bid : ValueObject<Bid>
method Bid (line 10) | private Bid()
method Bid (line 13) | public Bid(Guid auctionId, Guid bidderId, Money amountBid, DateTime ti...
method GetAttributesToIncludeInEqualityCheck (line 39) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/BidHistory/BidHistory.cs
class BidHistory (line 7) | public class BidHistory
method BidHistory (line 11) | public BidHistory(IEnumerable<Bid> bids)
method ShowAllBids (line 19) | public IEnumerable<Bid> ShowAllBids()
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Application/Model/BidHistory/IBidHistoryRepository.cs
type IBidHistoryRepository (line 5) | public interface IBidHistoryRepository
method NoOfBidsFor (line 7) | int NoOfBidsFor(Guid autionId);
method Add (line 8) | void Add(Bid bid);
method FindBy (line 9) | BidHistory FindBy(Guid auctionId);
FILE: 21 - Repositories/DDDPPP.Chap21.RavenDBExample/DDDPPP.Chap21.RavenDBExample.Presentation/Program.cs
class Program (line 13) | public class Program
method Main (line 17) | public static void Main(string[] args)
method CreateAuction (line 36) | public static Guid CreateAuction()
method Bid (line 50) | public static void Bid(Guid auctionId, Guid memberId, decimal amount)
method PrintStatusOfAuctionBy (line 62) | public static void PrintStatusOfAuctionBy(Guid auctionId)
method PrintBidHistoryOf (line 74) | public static void PrintBidHistoryOf(Guid auctionId)
method FindNameOfBidderWith (line 87) | public static string FindNameOfBidderWith(Guid id)
FILE: 22 - Event Sourcing/PPPDDD.Chap23.EventSourcing.EventStoreDemo/GetEventStore.cs
class GetEventStore (line 13) | public class GetEventStore : IEventStore
method GetEventStore (line 19) | public GetEventStore(IEventStoreConnection esConn)
method CreateNewStream (line 24) | public void CreateNewStream(string streamName, IEnumerable<DomainEvent...
method AppendEventsToStream (line 30) | public void AppendEventsToStream(string streamName, IEnumerable<Domain...
method MapToEventStoreStorageFormat (line 37) | private EventData MapToEventStoreStorageFormat(object evnt, Guid commi...
method GetStream (line 55) | public IEnumerable<DomainEvent> GetStream(string streamName, int fromV...
method RebuildEvent (line 66) | private object RebuildEvent(ResolvedEvent eventStoreEvent)
method AddSnapshot (line 77) | public void AddSnapshot<T>(string streamName, T snapshot)
method GetLatestSnapshot (line 84) | public T GetLatestSnapshot<T>(string streamName) where T : class
method SnapshotStreamNameFor (line 96) | private string SnapshotStreamNameFor(string streamName)
method StreamName (line 102) | private string StreamName(string streamName)
FILE: 22 - Event Sourcing/PPPDDD.Chap23.EventSourcing.EventStoreDemo/ImportTestData.cs
class ImportTestData (line 16) | [TestClass]
method Import_test_data_for_temporal_queries_and_projections_example_in_the_book (line 34) | [TestMethod]
method Create5EmptyAccounts (line 53) | private void Create5EmptyAccounts()
method SimulateCustomerActivityFor3rdJune (line 71) | private void SimulateCustomerActivityFor3rdJune()
method SimulateCustomerActivityFor4thJune (line 85) | private void SimulateCustomerActivityFor4thJune()
method SimulateCustomerActivityFor5thJune (line 117) | private void SimulateCustomerActivityFor5thJune()
method TestClock (line 131) | private IClock TestClock(DateTime date)
method PhoneCall (line 136) | private PhoneCall PhoneCall(DateTime start, int minutes)
method Cost (line 141) | private PhoneCallCosting Cost()
method PersistAllUncommittedEvents (line 146) | private void PersistAllUncommittedEvents(PayAsYouGoAccountRepository r...
class TestClockThatReturnsFixedDate (line 156) | public class TestClockThatReturnsFixedDate : IClock
method TestClockThatReturnsFixedDate (line 160) | public TestClockThatReturnsFixedDate(DateTime date)
method Time (line 165) | public DateTime Time()
class FreePhoneCallCosting (line 171) | public class FreePhoneCallCosting : PhoneCallCosting
method DetermineCostOfCall (line 173) | public override Money DetermineCostOfCall(Minutes minutes)
FILE: 22 - Event Sourcing/PPPDDD.Chap23.EventSourcing.EventStoreDemo/Tests.cs
class Tests (line 15) | [TestClass]
method Events_are_persisted_and_can_be_retrieved (line 18) | [TestMethod]
method A_subset_of_events_can_be_retrieved_by_querying_on_version_numbers (line 37) | [TestMethod]
method Snapshots_are_persisted_and_the_latest_one_is_always_returned (line 53) | [TestMethod]
method Optimistic_concurrency_is_supported (line 75) | [TestMethod]
method CreateDisposableStreamName (line 108) | private string CreateDisposableStreamName()
method NewConnection (line 115) | private void NewConnection(Action<IEventStoreConnection> action)
class TestEvent (line 148) | public class TestEvent : DomainEvent
method TestEvent (line 150) | public TestEvent(Guid id): base(id) { }
method Equals (line 156) | public override bool Equals(object obj)
class TestSnapshot (line 167) | public class TestSnapshot
method Equals (line 171) | public override bool Equals(object obj)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/CreateAccount.cs
class CreateAccount (line 13) | public class CreateAccount
method CreateAccount (line 18) | public CreateAccount(IPayAsYouGoAccountRepository payAsYouGoAccountRep...
method Execute (line 25) | public void Execute(Guid id)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/RecordPhonecall.cs
class RecordPhonecall (line 13) | public class RecordPhonecall
method RecordPhonecall (line 19) | public RecordPhonecall(IPayAsYouGoAccountRepository payAsYouGoAccountR...
method Execute (line 27) | public void Execute(Guid id, string phoneNumber, DateTime callStart, i...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/TopUpCredit.cs
class TopUpCredit (line 9) | public class TopUpCredit
method TopUpCredit (line 15) | public TopUpCredit(IPayAsYouGoAccountRepository payAsYouGoAccountRepos...
method Execute (line 24) | public void Execute(Guid id, decimal amount)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Bootstrapper.cs
class Bootstrapper (line 16) | public static class Bootstrapper
method Startup (line 18) | public static void Startup()
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/Entity.cs
class Entity (line 5) | public abstract class Entity
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventSourcedAggregate.cs
class EventSourcedAggregate (line 9) | public abstract class EventSourcedAggregate : Entity
method EventSourcedAggregate (line 14) | public EventSourcedAggregate()
method Apply (line 19) | public abstract void Apply(DomainEvent changes);
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventStore.cs
class EventStore (line 10) | public class EventStore
method EventStore (line 14) | public EventStore(IDocumentSession documentSession)
method CreateNewStream (line 19) | public void CreateNewStream(string streamName, IEnumerable<Object> dom...
method AppendEventsToStream (line 27) | public void AppendEventsToStream(string streamName, IEnumerable<Object...
method GetStream (line 37) | public IEnumerable<Object> GetStream(string streamName, int fromVersio...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventStream.cs
class EventStream (line 9) | public class EventStream
method EventStream (line 14) | private EventStream() { }
method EventStream (line 16) | public EventStream(string id)
method RegisterEvent (line 22) | public EventWrapper RegisterEvent(DomainEvent @event)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventWrapper.cs
class EventWrapper (line 9) | public class EventWrapper
method EventWrapper (line 16) | public EventWrapper(DomainEvent @event, int eventNumber, string stream...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/IClock.cs
type IClock (line 9) | public interface IClock
method Time (line 11) | DateTime Time();
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/PayAsYouGoAccountRepository.cs
class PayAsYouGoAccountRepository (line 11) | public class PayAsYouGoAccountRepository : IPayAsYouGoAccountRepository
method PayAsYouGoAccountRepository (line 15) | public PayAsYouGoAccountRepository(EventStore eventStore)
method FindBy (line 20) | public PayAsYouGoAccount FindBy(Guid id)
method Add (line 42) | public void Add(PayAsYouGoAccount payAsYouGoAccount)
method Save (line 49) | public void Save(PayAsYouGoAccount payAsYouGoAccount)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/SystemClock.cs
class SystemClock (line 9) | public class SystemClock : IClock
method Time (line 11) | public DateTime Time()
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Infrastructure/ValueObject.cs
class ValueObject (line 6) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 8) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 10) | public override bool Equals(object other)
method Equals (line 15) | public bool Equals(T other)
method GetHashCode (line 34) | public override int GetHashCode()
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/AccountCreated.cs
class AccountCreated (line 10) | public class AccountCreated : DomainEvent
method AccountCreated (line 12) | public AccountCreated(Guid aggregateId, Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/CreditAdded.cs
class CreditAdded (line 10) | public class CreditAdded : DomainEvent
method CreditAdded (line 12) | public CreditAdded(Guid aggregateId, Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/CreditSatisfiesFreeCallAllowanceOffer.cs
class CreditSatisfiesFreeCallAllowanceOffer (line 10) | public class CreditSatisfiesFreeCallAllowanceOffer : DomainEvent
method CreditSatisfiesFreeCallAllowanceOffer (line 12) | public CreditSatisfiesFreeCallAllowanceOffer(Guid aggregateId, DateTim...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/FreeCallAllowance.cs
class FreeCallAllowance (line 10) | public class FreeCallAllowance
method FreeCallAllowance (line 18) | public FreeCallAllowance(Minutes allowance, DateTime dateStarted)
method Subtract (line 24) | public void Subtract(Minutes minutes)
method MinutesWhichCanCover (line 29) | public Minutes MinutesWhichCanCover(PhoneCall phoneCall, IClock clock)
method StillValid (line 41) | private bool StillValid(IClock clock)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/IPayAsYouGoAccountRepository.cs
type IPayAsYouGoAccountRepository (line 9) | public interface IPayAsYouGoAccountRepository
method FindBy (line 11) | PayAsYouGoAccount FindBy(Guid id);
method Add (line 13) | void Add(PayAsYouGoAccount payAsYouGoAccount);
method Save (line 15) | void Save(PayAsYouGoAccount payAsYouGoAccount);
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/Minutes.cs
class Minutes (line 9) | public class Minutes
method Minutes (line 13) | public Minutes() : this(0) { }
method Minutes (line 15) | public Minutes(int number)
method Subtract (line 21) | public Minutes Subtract(Minutes minutes)
method CostAt (line 26) | public Money CostAt(Money chargePerMinute)
method IsGreaterOrEqualTo (line 31) | public bool IsGreaterOrEqualTo(Minutes minutes)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/Money.cs
class Money (line 10) | public class Money : ValueObject<Money>, IComparable<Money>
method Money (line 14) | public Money()
method Money (line 19) | public Money(decimal amount)
method ThrowExceptionIfNotValid (line 26) | private void ThrowExceptionIfNotValid(decimal amount)
method Add (line 35) | public Money Add(Money money)
method IsGreaterThanOrEqualTo (line 40) | public bool IsGreaterThanOrEqualTo(Money money)
method Subtract (line 45) | public Money Subtract(Money money)
method MultiplyBy (line 50) | public Money MultiplyBy(int number)
method GetAttributesToIncludeInEqualityCheck (line 55) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method CompareTo (line 60) | public int CompareTo(Money other)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoAccount.cs
class PayAsYouGoAccount (line 10) | public class PayAsYouGoAccount : EventSourcedAggregate
method PayAsYouGoAccount (line 16) | public PayAsYouGoAccount()
method PayAsYouGoAccount (line 19) | public PayAsYouGoAccount(Guid id, Money credit)
method PayAsYouGoAccount (line 24) | public PayAsYouGoAccount(PayAsYouGoAccountSnapshot snapShot)
method Apply (line 30) | public override void Apply(DomainEvent @event)
method GetPayAsYouGoAccountSnapShot (line 36) | public PayAsYouGoAccountSnapshot GetPayAsYouGoAccountSnapShot()
method Record (line 47) | public void Record(PhoneCall phoneCall, PhoneCallCosting phoneCallCost...
method TopUp (line 61) | public void TopUp(Money credit, IClock clock)
method Causes (line 69) | private void Causes(DomainEvent @event)
method When (line 75) | private void When(CreditAdded creditAdded)
method When (line 80) | private void When(CreditSatisfiesFreeCallAllowanceOffer creditSatisfie...
method When (line 85) | private void When(PhoneCallCharged phoneCallCharged)
method When (line 93) | private void When(AccountCreated accountCreated)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoAccountSnapshot.cs
class PayAsYouGoAccountSnapshot (line 9) | public class PayAsYouGoAccountSnapshot
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoInclusiveMinutesOffer.cs
class PayAsYouGoInclusiveMinutesOffer (line 9) | public class PayAsYouGoInclusiveMinutesOffer
method PayAsYouGoInclusiveMinutesOffer (line 13) | public PayAsYouGoInclusiveMinutesOffer()
method IsSatisfiedBy (line 19) | public bool IsSatisfiedBy(Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCall.cs
class PhoneCall (line 9) | public class PhoneCall
method PhoneCall (line 11) | public PhoneCall(PhoneNumber numberDialled, DateTime callStart, Minute...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCallCharged.cs
class PhoneCallCharged (line 10) | public class PhoneCallCharged : DomainEvent
method PhoneCallCharged (line 12) | public PhoneCallCharged(Guid aggregateId, PhoneCall phoneCall, Money c...
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCallCosting.cs
class PhoneCallCosting (line 9) | public class PhoneCallCosting
method PhoneCallCosting (line 13) | public PhoneCallCosting()
method DetermineCostOfCall (line 18) | public Money DetermineCostOfCall(Minutes minutes)
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneNumber.cs
class PhoneNumber (line 9) | public class PhoneNumber
method PhoneNumber (line 11) | public PhoneNumber(string phoneNumber)
method IsUKLandlineOrMobile (line 18) | public bool IsUKLandlineOrMobile()
method IsInternational (line 23) | public bool IsInternational()
FILE: 22 - Event Sourcing/PPPDDDChap22/PPPDDDChap23.EventSourcing.Presentation/Program.cs
class Program (line 12) | public class Program
method Main (line 14) | public static void Main(string[] args)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/CreateAccount.cs
class CreateAccount (line 13) | public class CreateAccount
method CreateAccount (line 18) | public CreateAccount(IPayAsYouGoAccountRepository payAsYouGoAccountRep...
method Execute (line 25) | public void Execute(Guid id)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/RecordPhonecall.cs
class RecordPhonecall (line 13) | public class RecordPhonecall
method RecordPhonecall (line 19) | public RecordPhonecall(IPayAsYouGoAccountRepository payAsYouGoAccountR...
method Execute (line 27) | public void Execute(Guid id, string phoneNumber, DateTime callStart, i...
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Application/BusinessUseCases/TopUpCredit.cs
class TopUpCredit (line 9) | public class TopUpCredit
method TopUpCredit (line 15) | public TopUpCredit(IPayAsYouGoAccountRepository payAsYouGoAccountRepos...
method Execute (line 24) | public void Execute(Guid id, decimal amount)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Bootstrapper.cs
class Bootstrapper (line 16) | public static class Bootstrapper
method Startup (line 18) | public static void Startup()
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/DomainEvent.cs
class DomainEvent (line 9) | public abstract class DomainEvent
method DomainEvent (line 11) | public DomainEvent(Guid aggregateId)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/Entity.cs
class Entity (line 5) | public abstract class Entity
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventSourcedAggregate.cs
class EventSourcedAggregate (line 9) | public abstract class EventSourcedAggregate : Entity
method EventSourcedAggregate (line 14) | public EventSourcedAggregate()
method Apply (line 19) | public abstract void Apply(DomainEvent changes);
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventStore.cs
class EventStore (line 10) | public class EventStore : IEventStore
method EventStore (line 14) | public EventStore(IDocumentSession documentSession)
method CreateNewStream (line 19) | public void CreateNewStream(string streamName, IEnumerable<DomainEvent...
method AppendEventsToStream (line 27) | public void AppendEventsToStream(string streamName, IEnumerable<Domain...
method CheckForConcurrencyError (line 42) | private static void CheckForConcurrencyError(int? expectedVersion, Eve...
method GetStream (line 52) | public IEnumerable<DomainEvent> GetStream(string streamName, int fromV...
method AddSnapshot (line 75) | public void AddSnapshot<T>(string streamName, T snapshot)
method GetLatestSnapshot (line 87) | public T GetLatestSnapshot<T>(string streamName) where T: class
type IEventStore (line 106) | public interface IEventStore
method CreateNewStream (line 108) | void CreateNewStream(string streamName, IEnumerable<DomainEvent> domai...
method AppendEventsToStream (line 110) | void AppendEventsToStream(string streamName, IEnumerable<DomainEvent> ...
method GetStream (line 112) | IEnumerable<DomainEvent> GetStream(string streamName, int fromVersion,...
method AddSnapshot (line 114) | void AddSnapshot<T>(string streamName, T snapshot);
method GetLatestSnapshot (line 116) | T GetLatestSnapshot<T>(string streamName) where T: class;
class SnapshotWrapper (line 120) | public class SnapshotWrapper
class OptimsticConcurrencyException (line 129) | public class OptimsticConcurrencyException : Exception
method OptimsticConcurrencyException (line 131) | public OptimsticConcurrencyException(string message) : base(message) { }
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventStream.cs
class EventStream (line 9) | public class EventStream
method EventStream (line 14) | private EventStream() { }
method EventStream (line 16) | public EventStream(string id)
method RegisterEvent (line 22) | public EventWrapper RegisterEvent(DomainEvent @event)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/EventWrapper.cs
class EventWrapper (line 9) | public class EventWrapper
method EventWrapper (line 16) | public EventWrapper(DomainEvent @event, int eventNumber, string stream...
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/IClock.cs
type IClock (line 9) | public interface IClock
method Time (line 11) | DateTime Time();
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/PasAsYouGoSnapshotJob.cs
class PasAsYouGoAccountSnapshotJob (line 12) | public class PasAsYouGoAccountSnapshotJob
method PasAsYouGoAccountSnapshotJob (line 16) | public PasAsYouGoAccountSnapshotJob(IDocumentStore documentStore)
method Run (line 21) | public void Run()
method GetIds (line 41) | private IEnumerable<string> GetIds()
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/PayAsYouGoAccountRepository.cs
class PayAsYouGoAccountRepository (line 11) | public class PayAsYouGoAccountRepository : IPayAsYouGoAccountRepository
method PayAsYouGoAccountRepository (line 15) | public PayAsYouGoAccountRepository(IEventStore eventStore)
method FindBy (line 20) | public PayAsYouGoAccount FindBy(Guid id)
method Add (line 55) | public void Add(PayAsYouGoAccount payAsYouGoAccount)
method Save (line 62) | public void Save(PayAsYouGoAccount payAsYouGoAccount)
method GetExpectedVersion (line 70) | private int? GetExpectedVersion(int expectedVersion)
method SaveSnapshot (line 83) | public void SaveSnapshot(PayAsYouGoAccountSnapshot snapshot, PayAsYouG...
method StreamNameFor (line 90) | private string StreamNameFor(Guid id)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/SystemClock.cs
class SystemClock (line 9) | public class SystemClock : IClock
method Time (line 11) | public DateTime Time()
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Infrastructure/ValueObject.cs
class ValueObject (line 6) | public abstract class ValueObject<T> where T : ValueObject<T>
method GetAttributesToIncludeInEqualityCheck (line 8) | protected abstract IEnumerable<object> GetAttributesToIncludeInEqualit...
method Equals (line 10) | public override bool Equals(object other)
method Equals (line 15) | public bool Equals(T other)
method GetHashCode (line 34) | public override int GetHashCode()
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/AccountCreated.cs
class AccountCreated (line 10) | public class AccountCreated : DomainEvent
method AccountCreated (line 12) | public AccountCreated(Guid aggregateId, Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/CreditAdded.cs
class CreditAdded (line 10) | public class CreditAdded : DomainEvent
method CreditAdded (line 12) | public CreditAdded(Guid aggregateId, Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/CreditSatisfiesFreeCallAllowanceOffer.cs
class CreditSatisfiesFreeCallAllowanceOffer (line 10) | public class CreditSatisfiesFreeCallAllowanceOffer : DomainEvent
method CreditSatisfiesFreeCallAllowanceOffer (line 12) | public CreditSatisfiesFreeCallAllowanceOffer(Guid aggregateId, DateTim...
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/FreeCallAllowance.cs
class FreeCallAllowance (line 10) | public class FreeCallAllowance
method FreeCallAllowance (line 18) | public FreeCallAllowance(Minutes allowance, DateTime dateStarted)
method Subtract (line 24) | public void Subtract(Minutes minutes)
method MinutesWhichCanCover (line 29) | public Minutes MinutesWhichCanCover(PhoneCall phoneCall, IClock clock)
method StillValid (line 41) | private bool StillValid(IClock clock)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/IPayAsYouGoAccountRepository.cs
type IPayAsYouGoAccountRepository (line 9) | public interface IPayAsYouGoAccountRepository
method FindBy (line 11) | PayAsYouGoAccount FindBy(Guid id);
method Add (line 13) | void Add(PayAsYouGoAccount payAsYouGoAccount);
method Save (line 15) | void Save(PayAsYouGoAccount payAsYouGoAccount);
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/Minutes.cs
class Minutes (line 9) | public class Minutes
method Minutes (line 13) | public Minutes() : this(0) { }
method Minutes (line 15) | public Minutes(int number)
method Subtract (line 21) | public Minutes Subtract(Minutes minutes)
method CostAt (line 26) | public Money CostAt(Money chargePerMinute)
method IsGreaterOrEqualTo (line 31) | public bool IsGreaterOrEqualTo(Minutes minutes)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/Money.cs
class Money (line 10) | public class Money : ValueObject<Money>, IComparable<Money>
method Money (line 14) | public Money()
method Money (line 19) | public Money(decimal amount)
method ThrowExceptionIfNotValid (line 26) | private void ThrowExceptionIfNotValid(decimal amount)
method Add (line 35) | public Money Add(Money money)
method IsGreaterThanOrEqualTo (line 40) | public bool IsGreaterThanOrEqualTo(Money money)
method Subtract (line 45) | public Money Subtract(Money money)
method MultiplyBy (line 50) | public Money MultiplyBy(int number)
method GetAttributesToIncludeInEqualityCheck (line 55) | protected override IEnumerable<object> GetAttributesToIncludeInEqualit...
method CompareTo (line 60) | public int CompareTo(Money other)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoAccount.cs
class PayAsYouGoAccount (line 10) | public class PayAsYouGoAccount : EventSourcedAggregate
method PayAsYouGoAccount (line 18) | public PayAsYouGoAccount()
method PayAsYouGoAccount (line 21) | public PayAsYouGoAccount(Guid id, Money credit)
method PayAsYouGoAccount (line 26) | public PayAsYouGoAccount(PayAsYouGoAccountSnapshot snapshot)
method Apply (line 33) | public override void Apply(DomainEvent @event)
method GetPayAsYouGoAccountSnapshot (line 39) | public PayAsYouGoAccountSnapshot GetPayAsYouGoAccountSnapshot()
method Record (line 48) | public void Record(PhoneCall phoneCall, PhoneCallCosting phoneCallCost...
method TopUp (line 62) | public void TopUp(Money credit, IClock clock)
method AddInclusiveMinutesOffer (line 70) | public void AddInclusiveMinutesOffer(PayAsYouGoInclusiveMinutesOffer o...
method Causes (line 75) | private void Causes(DomainEvent @event)
method When (line 81) | private void When(CreditAdded creditAdded)
method When (line 86) | private void When(CreditSatisfiesFreeCallAllowanceOffer creditSatisfie...
method When (line 91) | private void When(PhoneCallCharged phoneCallCharged)
method When (line 99) | private void When(AccountCreated accountCreated)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoAccountSnapshot.cs
class PayAsYouGoAccountSnapshot (line 9) | public class PayAsYouGoAccountSnapshot
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PayAsYouGoInclusiveMinutesOffer.cs
class PayAsYouGoInclusiveMinutesOffer (line 9) | public class PayAsYouGoInclusiveMinutesOffer
method PayAsYouGoInclusiveMinutesOffer (line 13) | public PayAsYouGoInclusiveMinutesOffer(Money spendThreshold, Minutes f...
method IsSatisfiedBy (line 19) | public bool IsSatisfiedBy(Money credit)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCall.cs
class PhoneCall (line 9) | public class PhoneCall
method PhoneCall (line 11) | public PhoneCall(PhoneNumber numberDialled, DateTime callStart, Minute...
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCallCharged.cs
class PhoneCallCharged (line 10) | public class PhoneCallCharged : DomainEvent
method PhoneCallCharged (line 12) | public PhoneCallCharged(Guid aggregateId, PhoneCall phoneCall, Money c...
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneCallCosting.cs
class PhoneCallCosting (line 9) | public class PhoneCallCosting
method PhoneCallCosting (line 13) | public PhoneCallCosting()
method DetermineCostOfCall (line 18) | public virtual Money DetermineCostOfCall(Minutes minutes)
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Application/Model/PayAsYouGo/PhoneNumber.cs
class PhoneNumber (line 9) | public class PhoneNumber
method PhoneNumber (line 11) | public PhoneNumber(string phoneNumber)
method IsUKLandlineOrMobile (line 18) | public bool IsUKLandlineOrMobile()
method IsInternational (line 23) | public bool IsInternational()
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.ApplicationTests/PayAsYouGoAccount_Tests.cs
class PayAsYouGoAccount_Tests (line 12) | [TestClass]
method When_applying_a_top_up_that_does_not_qualify_for_inclusive_minutes (line 19) | [ClassInitialize] // runs first
method The_account_will_be_credited_with_the_top_up_amount_but_no_free_minutes (line 30) | [TestMethod]
FILE: 22 - Event Sourcing/PPPDDDChap23.EventSourcing/PPPDDDChap23.EventSourcing.Presentation/Program.cs
class Program (line 12) | public class Program
method Main (line 14) | public static void Main(string[] args)
FILE: 23 - Architecting Application User Interfaces/PPPDDD.NonDist.UIComp/PPPDDD.NonDist.UIComp/App_Start/RouteConfig.cs
class RouteConfig (line 10) | public class RouteConfig
method RegisterRoutes (line 12) | public static void RegisterRoutes(RouteCollection routes)
FILE: 23 - Architecting Application User Interfaces/PPPDDD.NonDist.UIComp/PPPDDD.NonDist.UIComp/Controllers/CatalogueBoundedContextController.cs
class CatalogBoundedContextController (line 7) | public class CatalogBoundedContextController : Controller
method ItemInBasket (line 9) | [ChildActionOnly] // action cannot be rendered as an individual page
class ProductFinder (line 25) | public static class ProductFinder
method Find (line 27) | public static Product Find(string productId)
class Product (line 40) | public class Product
FILE: 23 - Architecting Application User Interfaces/PPPDDD.NonDist.UIComp/PPPDDD.NonDist.UIComp/Controllers/HomeController.cs
class HomeController (line 7) | public class HomeController : Controller
method Index (line 9) | public ActionResult Index()
FILE: 23 - Architecting Application User Interfaces/PPPDDD.NonDist.UIComp/PPPDDD.NonDist.UIComp/Controllers/PricingBoundedContextController.cs
class PricingBoundedContextController (line 7) | public class PricingBoundedContextController : Controller
method Price (line 9) | [ChildActionOnly] // cannot be rendered as a page
class PriceFinder (line 25) | public static class PriceFinder
method PriceFor (line 29) | public static int PriceFor(string productId)
FILE: 23 - Architecting Application User Interfaces/PPPDDD.NonDist.UIComp/PPPDDD.NonDist.UIComp/Controllers/ShippingBoundedContextController.cs
class ShippingBoundedContextController (line 7) | public class ShippingBoundedContextController : Controller
method DeliveryOptions (line 9) | [ChildActionOnly] // cannot be rendered as a page
class DeliveryOptions (line 27) | public static class DeliveryOptions
method All (line 29) | public static IEnumerable<DeliveryOptio
Condensed preview — 919 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,915K chars).
[
{
"path": ".gitattributes",
"chars": 2518,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": ".gitignore",
"chars": 2651,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Application/BidOnAuctionService.cs",
"chars": 764,
"preview": "using System;\nusing PPPDDDChap05.DomainModel.Model;\n\nnamespace PPPPDDDChap05.DomainModel.Application\n{\n public class"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Auction.cs",
"chars": 2596,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace PPPDDDChap05.DomainModel.Model\n{\npublic class Auction \n{\n "
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Bid.cs",
"chars": 862,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace PPPDDDChap05.DomainModel.Model\n{\n public class Bid \n {"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/ClassDiagram.cd",
"chars": 3956,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ClassDiagram MajorVersion=\"1\" MinorVersion=\"1\">\n <Class Name=\"PPPDDDChap05.Dom"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/HistoricalBid.cs",
"chars": 439,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/IAuctionRepository.cs",
"chars": 178,
"preview": "using System;\n\nnamespace PPPDDDChap05.DomainModel.Model\n{\n public interface IAuctionRepository\n {\n void Ad"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Money.cs",
"chars": 1331,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace PPPDDDChap05.DomainModel.Model\n{\n public class Money \n "
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/Price.cs",
"chars": 1194,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace PPPDDDChap05.DomainModel.Model\n{\n public class Price \n "
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Model/WinningBid.cs",
"chars": 4041,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nnamespace PPPDDDChap05.DomainModel.Model\n{\n publi"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel.csproj",
"chars": 2794,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel/Properties/AssemblyInfo.cs",
"chars": 1421,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.DomainModel/PPPDDDChap05.DomainModel.sln",
"chars": 940,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Customers.cs",
"chars": 203,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/Orders.cs",
"chars": 293,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Domain/TableModuleBase.cs",
"chars": 209,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule.csproj",
"chars": 2554,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule/Properties/AssemblyInfo.cs",
"chars": 1421,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TableModule/PPPDDDChap05.TableModule.sln",
"chars": 940,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Application/BidOnAuctionService.cs",
"chars": 624,
"preview": "using System;\nusing PPPDDDChap05.TransactionScript.Domain;\n\nnamespace PPPPDDDChap05.TransactionScript.Application\n{\n "
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/Auction.cs",
"chars": 459,
"preview": "using System;\n\nnamespace PPPDDDChap05.TransactionScript.Domain\n{\n public class Auction \n {\n public Guid Id"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuction.cs",
"chars": 321,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/BidOnAuctionCommand.cs",
"chars": 3866,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/ClassDiagram1.cd",
"chars": 1072,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ClassDiagram MajorVersion=\"1\" MinorVersion=\"1\">\n <Class Name=\"PPPDDDChap05.Tra"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/CreateAuction.cs",
"chars": 323,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Domain/ICommand.cs",
"chars": 243,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript.csproj",
"chars": 2787,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript/Properties/AssemblyInfo.cs",
"chars": 1433,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "05 - Domain Model Implementation Patterns/PPPDDDChap05.TransactionScript/PPPDDDChap05.TransactionScript.sln",
"chars": 958,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItem.cs",
"chars": 457,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItemFactory.cs",
"chars": 375,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/BasketItems.cs",
"chars": 236,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Country.cs",
"chars": 183,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PPPDDD.Chap10.ecommerc"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverSeasSellingPolicyException.cs",
"chars": 293,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PPPDDD.Chap10.ecommerc"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/OverseasSellingPolicy.cs",
"chars": 681,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Product.cs",
"chars": 213,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/Quantity.cs",
"chars": 522,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ExplicitLogic/Model/basket.cs",
"chars": 1506,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItem.cs",
"chars": 457,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItemFactory.cs",
"chars": 375,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/BasketItems.cs",
"chars": 236,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Product.cs",
"chars": 213,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/Quantity.cs",
"chars": 522,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/ImplicitLogic/Model/basket.cs",
"chars": 1352,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce.csproj",
"chars": 3514,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce/Properties/AssemblyInfo.cs",
"chars": 1419,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "10 - Applying the Principles, Practices and Patterns of DDD/PPPDDD.Chap10.ecommerce/PPPDDD.Chap10.ecommerce.sln",
"chars": 1030,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2013 for Web\nVisualStudioVersion ="
},
{
"path": "11 - Integrating Bounded Contexts/README.md",
"chars": 201,
"preview": "PPPDDD\n======\n\nThere is no sample code for chapter 11. This chapter contains theory and \ncase-studies of integrating bou"
},
{
"path": "12 - Integrating Via Messaging/Billing.Messages/Billing.Messages.csproj",
"chars": 2495,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "12 - Integrating Via Messaging/Billing.Messages/Commands/RecordPaymentAttempt.cs",
"chars": 294,
"preview": "using System;\r\n\r\nnamespace Billing.Messages.Commands\r\n{\r\n public class RecordPaymentAttempt\r\n {\r\n public s"
},
{
"path": "12 - Integrating Via Messaging/Billing.Messages/Events/PaymentAccepted.cs",
"chars": 152,
"preview": "using System;\r\n\r\nnamespace Billing.Messages.Events\r\n{\r\n public class PaymentAccepted\r\n {\r\n public string O"
},
{
"path": "12 - Integrating Via Messaging/Billing.Messages/Properties/AssemblyInfo.cs",
"chars": 1441,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/App.config",
"chars": 789,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<configuration>\r\n <configSections>\r\n <section name=\"Messag"
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/Billing.Payments.PaymentAccepted.csproj",
"chars": 3727,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/EndpointConfig.cs",
"chars": 481,
"preview": "using NServiceBus;\r\nnamespace Billing.Payments.PaymentAccepted\r\n{\r\n public class EndpointConfig : IConfigureThisEndpo"
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/OrderCreatedHandler.cs",
"chars": 1705,
"preview": "using Billing.Messages.Commands;\r\nusing NServiceBus;\r\nusing Sales.Messages.Events;\r\nusing System;\r\n\r\nnamespace Billing."
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/Properties/AssemblyInfo.cs",
"chars": 1473,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/RecordPaymentAttemptHandler.cs",
"chars": 1294,
"preview": "using System;\r\nusing Billing.Messages.Commands;\r\nusing NServiceBus;\r\n\r\nnamespace Billing.Payments.PaymentAccepted\r\n{\r\n "
},
{
"path": "12 - Integrating Via Messaging/Billing.Payments.PaymentAccepted/packages.config",
"chars": 296,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"NServiceBus\" version=\"4.3.4\" targetFramework=\"net45\""
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/App_Start/FilterConfig.cs",
"chars": 276,
"preview": "using System.Web;\r\nusing System.Web.Mvc;\r\n\r\nnamespace DDDesign.Web\r\n{\r\n public class FilterConfig\r\n {\r\n pu"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/App_Start/RouteConfig.cs",
"chars": 601,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Mvc;\r\nusing S"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/App_Start/WebApiConfig.cs",
"chars": 479,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web.Http;\r\n\r\nnamespace DDDesign.Web\r"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Controllers/OrdersController.cs",
"chars": 931,
"preview": "using Sales.Messages.Commands;\nusing System;\nusing System.Linq;\nusing System.Web;\nusing System.Web.Mvc;\n\nnamespace DDDe"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/DDDesign.Web.csproj",
"chars": 10008,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Global.asax",
"chars": 102,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"DDDesign.Web.MvcApplication\" Language=\"C#\" %>\r\n"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Global.asax.cs",
"chars": 1151,
"preview": "using System.Web.Http;\r\nusing System.Web.Mvc;\r\nusing System.Web.Routing;\r\nusing NServiceBus;\r\nusing NServiceBus.Install"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Properties/AssemblyInfo.cs",
"chars": 1392,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Views/Orders/Index.cshtml",
"chars": 594,
"preview": "<!DOCTYPE html>\r\n<html>\r\n <head>\r\n <title>Place an order</title>\r\n </head>\r\n <body>\r\n <h1>Place "
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Views/Web.config",
"chars": 2871,
"preview": "<?xml version=\"1.0\"?>\r\n\r\n<configuration>\r\n <configSections>\r\n <sectionGroup name=\"system.web.webPages.razor\" type=\""
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Web.Debug.config",
"chars": 1283,
"preview": "<?xml version=\"1.0\"?>\r\n\r\n<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwl"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Web.Release.config",
"chars": 1344,
"preview": "<?xml version=\"1.0\"?>\r\n\r\n<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwl"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/Web.config",
"chars": 2202,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, plea"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.Web/packages.config",
"chars": 1219,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Microsoft.AspNet.Mvc\" version=\"4.0.30506.0\" targetFr"
},
{
"path": "12 - Integrating Via Messaging/DDDesign.sln",
"chars": 6493,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/App.config",
"chars": 157,
"preview": "<?xml version=\"1.0\"?>\r\n<configuration>\r\n <startup>\r\n <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Application/Program.cs",
"chars": 1654,
"preview": "using MassTransit;\nusing System;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Threading;\nusing Sys"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Promotions.LuckyWinner.LuckyWinnerSelected.csproj",
"chars": 3277,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/Properties/AssemblyInfo.cs",
"chars": 1493,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected/packages.config",
"chars": 356,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Magnum\" version=\"2.1.2\" targetFramework=\"net45\" />\r\n"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/App.config",
"chars": 792,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<configuration>\r\n <configSections>\r\n <section name=\"Messag"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Application/OrderCreatedHandler.cs",
"chars": 2434,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NServiceBus;\nusing System.M"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Infrastructure/EndpointConfig.cs",
"chars": 517,
"preview": "\nnamespace Promotions.LuckyWinner.LuckyWinnerSelected.Bridge\n{\n using NServiceBus;\n\n public class EndpointConfig :"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge.csproj",
"chars": 3614,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/Properties/AssemblyInfo.cs",
"chars": 1507,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Promotions.LuckyWinner.LuckyWinnerSelected.Bridge/packages.config",
"chars": 296,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"NServiceBus\" version=\"4.3.4\" targetFramework=\"net45\""
},
{
"path": "12 - Integrating Via Messaging/README.md",
"chars": 154,
"preview": "PPPDDD\n======\n\nSee chapter 12 in the book for guidance on setting up and running this project, \nincluding NServiceBus an"
},
{
"path": "12 - Integrating Via Messaging/Sales.Messages/Commands/PlaceOrder.cs",
"chars": 408,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;"
},
{
"path": "12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated.cs",
"chars": 431,
"preview": "using System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace Sales.Messages.Events\r\n{\r\n public class OrderCreated\r\n"
},
{
"path": "12 - Integrating Via Messaging/Sales.Messages/Events/OrderCreated_V2.cs",
"chars": 167,
"preview": "using System;\r\n\r\nnamespace Sales.Messages.Events\r\n{\r\n public class OrderCreated_V2 : OrderCreated\r\n {\r\n pu"
},
{
"path": "12 - Integrating Via Messaging/Sales.Messages/Properties/AssemblyInfo.cs",
"chars": 1437,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Sales.Messages/Sales.Messages.csproj",
"chars": 2531,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/App.config",
"chars": 2032,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<configuration>\r\n <configSections>\r\n <section name=\"Messag"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Application/PlaceOrderHandler.cs",
"chars": 1902,
"preview": "using System;\nusing NServiceBus;\nusing Sales.Messages.Commands;\nusing System.Collections.Generic;\n\nnamespace Sales.Orde"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Infrastructure/EndpointConfig.cs",
"chars": 511,
"preview": "using NServiceBus;\n\nnamespace Sales.Orders.OrderCreated\n{\n\tpublic class EndpointConfig : IConfigureThisEndpoint, AsA_Ser"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Properties/AssemblyInfo.cs",
"chars": 1459,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/Sales.Orders.OrderCreated.csproj",
"chars": 3460,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "12 - Integrating Via Messaging/Sales.Orders.OrderCreated/packages.config",
"chars": 296,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"NServiceBus\" version=\"4.3.4\" targetFramework=\"net45\""
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/App.config",
"chars": 921,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<configuration>\r\n <configSections>\r\n <section name=\"Messag"
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Application/Handlers.cs",
"chars": 3250,
"preview": "using Billing.Messages.Events;\nusing NServiceBus;\nusing Sales.Messages.Events;\nusing System;\nusing System.Linq;\nusing S"
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Infrastructure/EndpointConfig.cs",
"chars": 532,
"preview": "using NServiceBus;\n\nnamespace Shipping.BusinessCustomers.ShippingArranged\n{\n public class EndpointConfig : IConfigure"
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Properties/AssemblyInfo.cs",
"chars": 1495,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/Shipping.BusinessCustomers.ShippingArranged.csproj",
"chars": 3936,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "12 - Integrating Via Messaging/Shipping.BusinessCustomers.ShippingArranged/packages.config",
"chars": 296,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"NServiceBus\" version=\"4.3.4\" targetFramework=\"net45\""
},
{
"path": "12 - Integrating Via Messaging/Shipping.Messages/Events/ShippingArranged.cs",
"chars": 322,
"preview": "using System;\r\n\r\nnamespace Shipping.Messages.Events\r\n{\r\n public class ShippingArranged \r\n {\r\n public stri"
},
{
"path": "12 - Integrating Via Messaging/Shipping.Messages/Properties/AssemblyInfo.cs",
"chars": 1443,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "12 - Integrating Via Messaging/Shipping.Messages/Shipping.Messages.csproj",
"chars": 2438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/AccountManagement.csproj",
"chars": 6031,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/App_Start/WebApiConfig.cs",
"chars": 616,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web.Http;\r\n\r\nnamespace AccountManage"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Controllers/FollowerDirectoryController.cs",
"chars": 1102,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Global.asax",
"chars": 110,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"AccountManagement.WebApiApplication\" Language=\"C#\" %>\r\n"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Global.asax.cs",
"chars": 390,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Http;\r\nusing "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Properties/AssemblyInfo.cs",
"chars": 1402,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.Debug.config",
"chars": 1299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.Release.config",
"chars": 1360,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/Web.config",
"chars": 795,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, plea"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/AccountManagement/packages.config",
"chars": 496,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Microsoft.AspNet.WebApi\" version=\"5.0.0\" targetFrame"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/App_Start/WebApiConfig.cs",
"chars": 608,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web.Http;\r\n\r\nnamespace Discovery\r\n{\r"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Controllers/RecommenderController.cs",
"chars": 1633,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Discovery.csproj",
"chars": 6312,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Global.asax",
"chars": 102,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"Discovery.WebApiApplication\" Language=\"C#\" %>\r\n"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Global.asax.cs",
"chars": 382,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Http;\r\nusing "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Properties/AssemblyInfo.cs",
"chars": 1386,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Web.Debug.config",
"chars": 1299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Web.Release.config",
"chars": 1360,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/Web.config",
"chars": 1131,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, pleas"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/Discovery/packages.config",
"chars": 575,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Microsoft.AspNet.WebApi\" version=\"5.0.0\" targetFrame"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.JSON.SocialMedia/PPPDDD.JSON.SocialMedia.sln",
"chars": 2024,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2013 for Web\nVisualStudioVersion ="
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/.gitignore",
"chars": 2711,
"preview": "## Ignore Visual Studio temporary files, build results, and\r\n## files generated by popular Visual Studio add-ons.\r\n\r\n# U"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/AccountManagement.Accounts.Api.csproj",
"chars": 7483,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/App_Start/WebApiConfig.cs",
"chars": 1169,
"preview": "using System;\r\nusing System.Web.Http;\r\nusing System.Web.Http.Cors;\r\n\r\nnamespace AccountManagement.Accounts.Api\r\n{\r\n "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Controllers/AccountsController.cs",
"chars": 3751,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Web.Http;\r\nusing WebApi.Hal;\r\n\r\nnamespace AccountManagem"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Controllers/FollowersController.cs",
"chars": 4032,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Web.Http;\r\nusing WebApi.Hal;\r\nusing EventStore.ClientAPI"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Global.asax",
"chars": 123,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"AccountManagement.Accounts.Api.WebApiApplication\" Language=\"C#\" %"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Global.asax.cs",
"chars": 746,
"preview": "using System;\r\nusing System.Web.Http;\r\nusing WebApi.Hal;\r\n\r\nnamespace AccountManagement.Accounts.Api\r\n{\r\n public cla"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Properties/AssemblyInfo.cs",
"chars": 1428,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Web.Debug.config",
"chars": 1299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Web.Release.config",
"chars": 1360,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/Web.config",
"chars": 1354,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, pleas"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.Accounts.Api/packages.config",
"chars": 898,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"EventStore.Client\" version=\"2.0.2\" targetFramework=\""
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/.gitignore",
"chars": 11,
"preview": ".DS_Store\r\n"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/AccountManagement.EntryPoint.Api.csproj",
"chars": 6195,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/App_Start/WebApiConfig.cs",
"chars": 502,
"preview": "using System;\r\nusing System.Web.Http;\r\n\r\nnamespace AccountManagement.EntryPoint.Api\r\n{\r\n public static class WebApiC"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Controllers/EntryPointController.cs",
"chars": 1264,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Web.Http;\r\nusing WebApi.Hal;\r\n\r\nnamespace AccountManagem"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Global.asax",
"chars": 125,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"AccountManagement.EntryPoint.Api.WebApiApplication\" Language=\"C#\""
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Global.asax.cs",
"chars": 750,
"preview": "using System;\r\nusing System.Web.Http;\r\nusing WebApi.Hal;\r\n\r\nnamespace AccountManagement.EntryPoint.Api\r\n{\r\n public c"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/MIT-LICENSE.txt",
"chars": 1096,
"preview": "Copyright (c) 2012 Mike Kelly, http://stateless.co/\r\n\r\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Properties/AssemblyInfo.cs",
"chars": 1424,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/README.md",
"chars": 1152,
"preview": "HAL-browser\r\n===========\r\nAn API browser for the hal+json media type\r\n\r\nExample Usage\r\n=============\r\nHere is an example"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Web.Debug.config",
"chars": 1299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Web.Release.config",
"chars": 1360,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/Web.config",
"chars": 795,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, plea"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/browser.html",
"chars": 8414,
"preview": "<!doctype html>\r\n <head>\r\n <meta charset=\"utf-8\">\r\n <title>The HAL Browser</title>\r\n <link rel=\"stylesheet\" me"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/browser.js",
"chars": 1485,
"preview": "HAL.Browser = Backbone.Router.extend({\r\n initialize: function(opts) {\r\n opts = opts || {};\r\n\r\n var vent = _.exten"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/http/client.js",
"chars": 1102,
"preview": "HAL.Http.Client = function(opts) {\r\n this.vent = opts.vent;\r\n $.ajaxSetup({ headers: { 'Accept': 'application/hal+json"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/resource.js",
"chars": 1147,
"preview": "HAL.Models.Resource = Backbone.Model.extend({\r\n initialize: function(representation) {\r\n representation = representa"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/browser.js",
"chars": 765,
"preview": "HAL.Views.Browser = Backbone.View.extend({\r\n initialize: function(opts) {\r\n var self = this;\r\n this.vent = opts.v"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/documentation.js",
"chars": 176,
"preview": "HAL.Views.Documenation = Backbone.View.extend({\r\n className: 'documentation',\r\n\r\n render: function(url) {\r\n this.$e"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/embedded_resource.js",
"chars": 1435,
"preview": "HAL.Views.EmbeddedResource = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n thi"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/embedded_resources.js",
"chars": 978,
"preview": "HAL.Views.EmbeddedResources = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n _."
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/explorer.js",
"chars": 580,
"preview": "HAL.Views.Explorer = Backbone.View.extend({\r\n initialize: function(opts) {\r\n var self = this;\r\n this.vent = opts."
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/inspector.js",
"chars": 907,
"preview": "HAL.Views.Inspector = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n\r\n _.bindAl"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/links.js",
"chars": 1288,
"preview": "HAL.Views.Links = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n },\r\n\r\n events: "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/location_bar.js",
"chars": 1016,
"preview": "HAL.Views.LocationBar = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n _.bindAl"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/navigation.js",
"chars": 524,
"preview": "HAL.Views.Navigation = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n this.loca"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/non_safe_request_dialog.js",
"chars": 1497,
"preview": "HAL.Views.NonSafeRequestDialog = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.href = opts.href;\r\n "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/properties.js",
"chars": 335,
"preview": "HAL.Views.Properties = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n _.bindAll"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/query_uri_dialog.js",
"chars": 1883,
"preview": "HAL.Views.QueryUriDialog = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.href = opts.href;\r\n this."
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/request_headers.js",
"chars": 715,
"preview": "HAL.Views.RequestHeaders = Backbone.View.extend({\r\n initialize: function(opts) {\r\n var self = this;\r\n this.vent ="
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/resource.js",
"chars": 1227,
"preview": "HAL.Views.Resource = Backbone.View.extend({\r\n initialize: function(opts) {\r\n var self = this;\r\n\r\n this.vent = opt"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/response.js",
"chars": 578,
"preview": "HAL.Views.Response = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n\r\n this.head"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/response_body.js",
"chars": 1261,
"preview": "HAL.Views.ResponseBody = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n },\r\n\r\n c"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal/views/response_headers.js",
"chars": 443,
"preview": "HAL.Views.ResponseHeaders = Backbone.View.extend({\r\n initialize: function(opts) {\r\n this.vent = opts.vent;\r\n },\r\n\r\n"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/js/hal.js",
"chars": 1769,
"preview": "(function() {\r\n var urlRegex = /(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\r\n\r\n fu"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/packages.config",
"chars": 570,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Microsoft.AspNet.WebApi\" version=\"5.0.0\" targetFrame"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/styles.css",
"chars": 1143,
"preview": "#browser #location-bar { margin: 10px 0; }\r\n\r\n#browser #location-bar .address {\r\n border: 1px solid #999;\r\n padding: 4"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/css/bootstrap-responsive.css",
"chars": 23220,
"preview": "/*!\r\n * Bootstrap Responsive v2.3.1\r\n *\r\n * Copyright 2012 Twitter, Inc\r\n * Licensed under the Apache License v2.0\r\n * h"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/css/bootstrap.css",
"chars": 133405,
"preview": "/*!\r\n * Bootstrap v2.3.1\r\n *\r\n * Copyright 2012 Twitter, Inc\r\n * Licensed under the Apache License v2.0\r\n * http://www.a"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/backbone.js",
"chars": 56963,
"preview": "// Backbone.js\r\n// ===========\r\n\r\n// > (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.\r\n// > Backbone may be freely di"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/bootstrap.js",
"chars": 64027,
"preview": "/* ===================================================\r\n * bootstrap-transition.js v2.3.1\r\n * http://twitter.github.com/"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/jquery-1.10.2.js",
"chars": 282988,
"preview": "/*!\r\n * jQuery JavaScript Library v1.10.2\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/underscore.js",
"chars": 42653,
"preview": "// Underscore.js 1.4.4\r\n// ===================\r\n\r\n// > http://underscorejs.org\r\n// > (c) 2009-2013 Jeremy Ashkenas, Docu"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.EntryPoint/vendor/js/uritemplates.js",
"chars": 12407,
"preview": "/*\r\nUriTemplates Template Processor - Version: @VERSION - Dated: @DATE\r\n(c) marc.portier@gmail.com - 2011-2012\r\nLicensed"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/AccountManagement.RegularAccounts.BeganFollowing.csproj",
"chars": 6985,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/App_Start/EnableCorsAttribute.cs",
"chars": 1,
"preview": ""
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/App_Start/WebApiConfig.cs",
"chars": 812,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web.Http;\r\nusing System.Web.Http.Cor"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Controllers/BeganFollowingController.cs",
"chars": 2665,
"preview": "using System.Net;\r\nusing System.Net.Http;\r\nusing System.Web.Http;\r\nusing System.ServiceModel.Syndication;\r\nusing System"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Global.asax",
"chars": 141,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"AccountManagement.RegularAccounts.BeganFollowing.WebApiApplicatio"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Global.asax.cs",
"chars": 421,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Http;\r\nusing "
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Properties/AssemblyInfo.cs",
"chars": 1464,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Web.Debug.config",
"chars": 1299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Web.Release.config",
"chars": 1360,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n<!-- For more information on using web.config transformation visit http://go.m"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/Web.config",
"chars": 1354,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!--\r\n For more information on how to configure your ASP.NET application, pleas"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/AccountManagement.RegularAccounts.BeganFollowing/packages.config",
"chars": 745,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"EventStore.Client\" version=\"2.0.2\" targetFramework=\""
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/Discovery.Reccommendations.Followers/BeganFollowingPollingFeedConsumer.cs",
"chars": 3674,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.ServiceModel.Synd"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/Discovery.Reccommendations.Followers/Discovery.Reccommendations.Followers.csproj",
"chars": 2978,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/Discovery.Reccommendations.Followers/Properties/AssemblyInfo.cs",
"chars": 1481,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/Discovery.Reccommendations.Followers/packages.config",
"chars": 220,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Newtonsoft.Json\" version=\"4.5.11\" targetFramework=\"n"
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.REST.SocialMedia/PPPDDD.REST.SocialMedia.sln",
"chars": 3440,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2013 for Web\nVisualStudioVersion ="
},
{
"path": "13 - Integrating Via Http and Rest/PPPDDD.SOAP.SocialMedia/AccountManagement/AccountManagement.csproj",
"chars": 5241,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
}
]
// ... and 719 more files (download for full content)
About this extraction
This page contains the full source code of the elbandit/PPPDDD GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 919 files (4.2 MB), approximately 1.2M tokens, and a symbol index with 2630 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.