diff --git a/api-java/src/main/java/javaclasses/mealorder/c/BoundedContexts.java b/api-java/src/main/java/javaclasses/mealorder/c/BoundedContexts.java index 74684f35..6e1663b8 100644 --- a/api-java/src/main/java/javaclasses/mealorder/c/BoundedContexts.java +++ b/api-java/src/main/java/javaclasses/mealorder/c/BoundedContexts.java @@ -26,6 +26,15 @@ import javaclasses.mealorder.c.order.OrderRepository; import javaclasses.mealorder.c.po.PurchaseOrderRepository; import javaclasses.mealorder.c.vendor.VendorRepository; +import javaclasses.mealorder.q.repository.FullMenuViewRepository; +import javaclasses.mealorder.q.repository.MenuCalendarViewRepository; +import javaclasses.mealorder.q.repository.MenuListViewRepository; +import javaclasses.mealorder.q.repository.MonthlySpendingsReportViewRepository; +import javaclasses.mealorder.q.repository.OrderListViewRepository; +import javaclasses.mealorder.q.repository.PurchaseOrderDetailsByDishViewRepository; +import javaclasses.mealorder.q.repository.PurchaseOrderDetailsByUserViewRepository; +import javaclasses.mealorder.q.repository.PurchaseOrderItemViewRepository; +import javaclasses.mealorder.q.repository.VendorListViewRepository; import static com.google.common.base.Preconditions.checkNotNull; @@ -71,16 +80,36 @@ public static BoundedContext create() { */ public static BoundedContext create(StorageFactory storageFactory) { checkNotNull(storageFactory); - final VendorRepository vendorRepository = VendorRepository.getRepository(); - + final VendorRepository vendorRepository = VendorRepository.createRepository(); final OrderRepository orderRepository = new OrderRepository(); final PurchaseOrderRepository purchaseOrderRepository = new PurchaseOrderRepository(); + final FullMenuViewRepository fullMenuViewRepository = new FullMenuViewRepository(); + final MenuCalendarViewRepository menuCalendarViewRepository = new MenuCalendarViewRepository(); + final MenuListViewRepository menuListViewRepository = new MenuListViewRepository(); + final MonthlySpendingsReportViewRepository monthlySpendingsReportViewRepository = new MonthlySpendingsReportViewRepository(); + final OrderListViewRepository orderListViewRepository = new OrderListViewRepository(); + final PurchaseOrderDetailsByDishViewRepository poDetailsByDishViewRepository = new PurchaseOrderDetailsByDishViewRepository(); + final PurchaseOrderDetailsByUserViewRepository poDetailsByUserViewRepository = new PurchaseOrderDetailsByUserViewRepository(); + final PurchaseOrderItemViewRepository poItemViewRepository = new PurchaseOrderItemViewRepository(); + final VendorListViewRepository vendorListViewRepository = new VendorListViewRepository(); + final BoundedContext boundedContext = createBoundedContext(storageFactory); boundedContext.register(vendorRepository); boundedContext.register(orderRepository); boundedContext.register(purchaseOrderRepository); + + boundedContext.register(fullMenuViewRepository); + boundedContext.register(menuCalendarViewRepository); + boundedContext.register(menuListViewRepository); + boundedContext.register(monthlySpendingsReportViewRepository); + boundedContext.register(orderListViewRepository); + boundedContext.register(poDetailsByDishViewRepository); + boundedContext.register(poDetailsByUserViewRepository); + boundedContext.register(poItemViewRepository); + boundedContext.register(vendorListViewRepository); + return boundedContext; } diff --git a/api-java/src/main/java/javaclasses/mealorder/c/order/OrderAggregate.java b/api-java/src/main/java/javaclasses/mealorder/c/order/OrderAggregate.java index 5e801181..1a3b44a9 100644 --- a/api-java/src/main/java/javaclasses/mealorder/c/order/OrderAggregate.java +++ b/api-java/src/main/java/javaclasses/mealorder/c/order/OrderAggregate.java @@ -99,6 +99,7 @@ OrderCreated handle(CreateOrder cmd) throws OrderAlreadyExists, MenuNotAvailable final OrderCreated result = OrderCreated.newBuilder() .setOrderId(orderId) .setMenuId(menuId) + .setWhenCreated(getCurrentTime()) .build(); return result; } @@ -125,6 +126,7 @@ DishAddedToOrder handle(AddDishToOrder cmd) throws DishVendorMismatch, final DishAddedToOrder result = DishAddedToOrder.newBuilder() .setOrderId(orderId) .setDish(dish) + .setWhenAdded(getCurrentTime()) .build(); return result; } @@ -145,6 +147,7 @@ DishRemovedFromOrder handle(RemoveDishFromOrder cmd) throws CannotRemoveMissingD DishRemovedFromOrder result = DishRemovedFromOrder.newBuilder() .setOrderId(orderId) .setDish(dish) + .setWhenRemoved(getCurrentTime()) .build(); return result; } diff --git a/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrderAggregate.java b/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrderAggregate.java index 25406707..af056a22 100644 --- a/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrderAggregate.java +++ b/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrderAggregate.java @@ -221,7 +221,7 @@ void purchaseOrderCanceled(PurchaseOrderCanceled event) { } @Apply - void purchaseOrderCanceled(PurchaseOrderDelivered event) { + void purchaseOrderDelivered(PurchaseOrderDelivered event) { getBuilder().setStatus(DELIVERED); } diff --git a/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrders.java b/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrders.java index 63db91c6..d07935bd 100644 --- a/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrders.java +++ b/api-java/src/main/java/javaclasses/mealorder/c/po/PurchaseOrders.java @@ -221,7 +221,7 @@ static PurchaseOrderDelivered createPOMarkedAsDeliveredEvent(MarkPurchaseOrderAs .newBuilder() .setId(id) .setWhoMarkedAsDelivered(whoMarksAsDelivered) - .setWhenDelievered(getCurrentTime()) + .setWhenDelivered(getCurrentTime()) .build(); return result; @@ -277,6 +277,7 @@ static PurchaseOrderSent createPOSentEvent(PurchaseOrder purchaseOrder, .setPurchaseOrder(purchaseOrder) .setSenderEmail(senderEmail) .setVendorEmail(vendorEmail) + .setWhenSent(getCurrentTime()) .build(); return result; } diff --git a/api-java/src/main/java/javaclasses/mealorder/c/vendor/VendorAggregate.java b/api-java/src/main/java/javaclasses/mealorder/c/vendor/VendorAggregate.java index 352c65fb..e1dad124 100644 --- a/api-java/src/main/java/javaclasses/mealorder/c/vendor/VendorAggregate.java +++ b/api-java/src/main/java/javaclasses/mealorder/c/vendor/VendorAggregate.java @@ -25,7 +25,6 @@ import io.spine.server.command.Assign; import javaclasses.mealorder.Menu; import javaclasses.mealorder.MenuDateRange; -import javaclasses.mealorder.MenuId; import javaclasses.mealorder.Vendor; import javaclasses.mealorder.VendorChange; import javaclasses.mealorder.VendorId; @@ -33,18 +32,13 @@ import javaclasses.mealorder.VendorVBuilder; import javaclasses.mealorder.c.command.AddVendor; import javaclasses.mealorder.c.command.ImportMenu; -import javaclasses.mealorder.c.command.SetDateRangeForMenu; import javaclasses.mealorder.c.command.UpdateVendor; -import javaclasses.mealorder.c.event.DateRangeForMenuSet; import javaclasses.mealorder.c.event.MenuImported; import javaclasses.mealorder.c.event.VendorAdded; import javaclasses.mealorder.c.event.VendorUpdated; import javaclasses.mealorder.c.rejection.CannotSetDateRange; import javaclasses.mealorder.c.rejection.VendorAlreadyExists; -import java.util.List; -import java.util.stream.IntStream; - import static io.spine.time.Time.getCurrentTime; import static javaclasses.mealorder.c.vendor.VendorAggregateRejections.cannotSetDateRange; import static javaclasses.mealorder.c.vendor.VendorAggregateRejections.vendorAlreadyExists; @@ -79,6 +73,7 @@ VendorAdded handle(AddVendor cmd) throws VendorAlreadyExists { .setEmail(cmd.getEmail()) .addAllPhoneNumber(cmd.getPhoneNumberList()) .setPoDailyDeadline(cmd.getPoDailyDeadline()) + .setWhenAdded(getCurrentTime()) .build(); return vendorAdded; } @@ -95,36 +90,23 @@ VendorUpdated handle(UpdateVendor cmd) { } @Assign - MenuImported handle(ImportMenu cmd) { + MenuImported handle(ImportMenu cmd) throws CannotSetDateRange { + final MenuDateRange range = cmd.getMenuDateRange(); + final Vendor vendor = getState(); + if (!isValidDateRange(range) || isThereMenuForThisDateRange(vendor, range)) { + throw cannotSetDateRange(cmd); + } final MenuImported menuImported = MenuImported.newBuilder() .setVendorId(cmd.getVendorId()) .setMenuId(cmd.getMenuId()) .setWhoImported(cmd.getUserId()) .setWhenImported(getCurrentTime()) .addAllDish(cmd.getDishList()) + .setMenuDateRange(cmd.getMenuDateRange()) .build(); return menuImported; } - @Assign - DateRangeForMenuSet handle(SetDateRangeForMenu cmd) throws CannotSetDateRange { - final MenuDateRange range = cmd.getMenuDateRange(); - final Vendor vendor = getState(); - - if (!isValidDateRange(range) || isThereMenuForThisDateRange(vendor, range)) { - throw cannotSetDateRange(cmd); - } - final DateRangeForMenuSet dateRangeForMenuSet = - DateRangeForMenuSet.newBuilder() - .setVendorId(cmd.getVendorId()) - .setMenuId(cmd.getMenuId()) - .setWhoSet(cmd.getUserId()) - .setWhenSet(getCurrentTime()) - .setMenuDateRange(cmd.getMenuDateRange()) - .build(); - return dateRangeForMenuSet; - } - @Apply void vendorAdded(VendorAdded event) { getBuilder().setId(event.getVendorId()) @@ -149,24 +131,7 @@ void menuImported(MenuImported event) { getBuilder().addMenu(Menu.newBuilder() .setId(event.getMenuId()) .addAllDish(event.getDishList()) + .setMenuDateRange(event.getMenuDateRange()) .build()); } - - @Apply - void dateRangeForMenuSet(DateRangeForMenuSet event) { - final List