diff --git a/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/AccountBookCommandFacade.java b/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/AccountBookCommandFacade.java index e3176f8ce..5a3ab28b9 100644 --- a/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/AccountBookCommandFacade.java +++ b/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/AccountBookCommandFacade.java @@ -5,6 +5,7 @@ import com.genesis.unipocket.accountbook.command.application.command.DeleteAccountBookCommand; import com.genesis.unipocket.accountbook.command.application.command.UpdateAccountBookCommand; import com.genesis.unipocket.accountbook.command.application.result.AccountBookBudgetUpdateResult; +import com.genesis.unipocket.accountbook.command.facade.port.AccountBookDefaultWidgetPort; import com.genesis.unipocket.accountbook.command.presentation.request.AccountBookBudgetUpdateRequest; import com.genesis.unipocket.accountbook.command.presentation.request.AccountBookCreateRequest; import com.genesis.unipocket.accountbook.command.presentation.request.AccountBookUpdateRequest; @@ -21,6 +22,7 @@ public class AccountBookCommandFacade { private final AccountBookCommandService accountBookCommandService; private final UserQueryService userQueryService; + private final AccountBookDefaultWidgetPort accountBookDefaultWidgetPort; @Transactional public Long createAccountBook(UUID userId, AccountBookCreateRequest req) { @@ -29,7 +31,9 @@ public Long createAccountBook(UUID userId, AccountBookCreateRequest req) { CreateAccountBookCommand command = CreateAccountBookCommand.of(userId, userResponse.name(), req); - return accountBookCommandService.create(command); + Long accountBookId = accountBookCommandService.create(command); + accountBookDefaultWidgetPort.setDefaultWidget(accountBookId); + return accountBookId; } @Transactional diff --git a/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/port/AccountBookDefaultWidgetPort.java b/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/port/AccountBookDefaultWidgetPort.java new file mode 100644 index 000000000..c66abb567 --- /dev/null +++ b/backend/src/main/java/com/genesis/unipocket/accountbook/command/facade/port/AccountBookDefaultWidgetPort.java @@ -0,0 +1,5 @@ +package com.genesis.unipocket.accountbook.command.facade.port; + +public interface AccountBookDefaultWidgetPort { + public void setDefaultWidget(Long accountBookId); +} diff --git a/backend/src/main/java/com/genesis/unipocket/travel/command/facade/TravelCommandFacade.java b/backend/src/main/java/com/genesis/unipocket/travel/command/facade/TravelCommandFacade.java index ab482e829..76069a96a 100644 --- a/backend/src/main/java/com/genesis/unipocket/travel/command/facade/TravelCommandFacade.java +++ b/backend/src/main/java/com/genesis/unipocket/travel/command/facade/TravelCommandFacade.java @@ -6,6 +6,7 @@ import com.genesis.unipocket.travel.command.application.command.UpdateTravelCommand; import com.genesis.unipocket.travel.command.application.command.UpdateWidgetsCommand; import com.genesis.unipocket.travel.command.application.result.CreateTravelResult; +import com.genesis.unipocket.travel.command.facade.port.TravelDefaultWidgetPort; import com.genesis.unipocket.travel.command.presentation.request.TravelRequest; import com.genesis.unipocket.travel.command.presentation.request.TravelUpdateRequest; import com.genesis.unipocket.travel.command.presentation.request.WidgetRequest; @@ -21,13 +22,17 @@ public class TravelCommandFacade { private final TravelCommandService travelCommandService; private final UserAccountBookValidator userAccountBookValidator; + private final TravelDefaultWidgetPort travelDefaultWidgetPort; public Long createTravel(TravelRequest request, UUID userId) { userAccountBookValidator.validateUserAccountBook( userId.toString(), request.accountBookId()); CreateTravelCommand command = CreateTravelCommand.from(request); CreateTravelResult result = travelCommandService.createTravel(command); - return result.travelId(); + + Long travelId = result.travelId(); + travelDefaultWidgetPort.setDefaultWidget(travelId); + return travelId; } public void updateTravel(Long travelId, TravelRequest request, UUID userId) { diff --git a/backend/src/main/java/com/genesis/unipocket/travel/command/facade/port/TravelDefaultWidgetPort.java b/backend/src/main/java/com/genesis/unipocket/travel/command/facade/port/TravelDefaultWidgetPort.java new file mode 100644 index 000000000..de6a705bb --- /dev/null +++ b/backend/src/main/java/com/genesis/unipocket/travel/command/facade/port/TravelDefaultWidgetPort.java @@ -0,0 +1,6 @@ +package com.genesis.unipocket.travel.command.facade.port; + +public interface TravelDefaultWidgetPort { + + void setDefaultWidget(Long travelId); +} diff --git a/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/AccountBookDefaultWidgetSetter.java b/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/AccountBookDefaultWidgetSetter.java new file mode 100644 index 000000000..cc96f2a43 --- /dev/null +++ b/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/AccountBookDefaultWidgetSetter.java @@ -0,0 +1,31 @@ +package com.genesis.unipocket.widget.command.facade.provide; + +import com.genesis.unipocket.accountbook.command.facade.port.AccountBookDefaultWidgetPort; +import com.genesis.unipocket.global.common.enums.WidgetType; +import com.genesis.unipocket.widget.command.application.WidgetCommandService; +import com.genesis.unipocket.widget.command.application.command.UpdateAccountBookWidgetsCommand; +import com.genesis.unipocket.widget.common.WidgetItem; +import com.genesis.unipocket.widget.common.enums.CurrencyType; +import com.genesis.unipocket.widget.common.enums.Period; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class AccountBookDefaultWidgetSetter implements AccountBookDefaultWidgetPort { + + private final WidgetCommandService widgetCommandService; + + @Override + public void setDefaultWidget(Long accountBookId) { + List items = + List.of( + new WidgetItem(0, WidgetType.BUDGET, CurrencyType.BASE, Period.MONTHLY), + new WidgetItem(1, WidgetType.PERIOD, CurrencyType.BASE, Period.MONTHLY), + new WidgetItem(2, WidgetType.CATEGORY, CurrencyType.BASE, Period.MONTHLY)); + + widgetCommandService.updateAccountBookWidgets( + new UpdateAccountBookWidgetsCommand(accountBookId, items)); + } +} diff --git a/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/TravelDefaultWidgetSetter.java b/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/TravelDefaultWidgetSetter.java new file mode 100644 index 000000000..d926bd0cf --- /dev/null +++ b/backend/src/main/java/com/genesis/unipocket/widget/command/facade/provide/TravelDefaultWidgetSetter.java @@ -0,0 +1,30 @@ +package com.genesis.unipocket.widget.command.facade.provide; + +import com.genesis.unipocket.global.common.enums.WidgetType; +import com.genesis.unipocket.travel.command.facade.port.TravelDefaultWidgetPort; +import com.genesis.unipocket.widget.command.application.WidgetCommandService; +import com.genesis.unipocket.widget.command.application.command.UpdateTravelWidgetsCommand; +import com.genesis.unipocket.widget.common.WidgetItem; +import com.genesis.unipocket.widget.common.enums.CurrencyType; +import com.genesis.unipocket.widget.common.enums.Period; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class TravelDefaultWidgetSetter implements TravelDefaultWidgetPort { + + private final WidgetCommandService widgetCommandService; + + @Override + public void setDefaultWidget(Long travelId) { + List items = + List.of( + new WidgetItem(0, WidgetType.BUDGET, CurrencyType.BASE, Period.MONTHLY), + new WidgetItem(1, WidgetType.PERIOD, CurrencyType.BASE, Period.MONTHLY), + new WidgetItem(2, WidgetType.CATEGORY, CurrencyType.BASE, Period.MONTHLY)); + + widgetCommandService.updateTravelWidgets(new UpdateTravelWidgetsCommand(travelId, items)); + } +}