Код: Выделить всё
private CommandHandlerWithReplyBuilderByState onEmpty() {
return newCommandHandlerWithReplyBuilder()
.forState(State::isEmpty)
.onCommand(Create.class, (state, cmd) -> {
if(cmd.isInitialAutoStart()) {
List events = new ArrayList();
events.add(new CampaignCreated(cmd.getCampaignId(),
OffsetDateTime.now(ZoneOffset.UTC), cmd.getName(),
cmd.getDomainGroupId(), cmd.getDomainIdWithCount(), cmd.getContactListId(),
cmd.getContactSegmentId(), cmd.getRouteId(),
cmd.getOfferId(), cmd.getVertical(),
cmd.getContactSkipOffset(), cmd.getSendSpeed(),
cmd.getCampaignOptimization(), cmd.getDataTriggers(),
cmd.getDegreeOfParallelism(), cmd.getContactFilter(),
cmd.getMessageTemplate(), cmd.getMessageTemplateId(),
cmd.getSaveProgressEvery(), cmd.isInitialAutoStart(), cmd.getCampaignScheduledTime(), cmd.getStartOption(),
cmd.getScheduleChronExpression(),
cmd.getWebHooks(), cmd.getSliceSize(), cmd.getNetworkCarrierFilter()));
events.add(new CampaignResuming(cmd.getCampaignId(), OffsetDateTime.now(ZoneOffset.UTC), 0));
return Effect()
.persist(events)
.thenRun(newState -> {
this.campaignRunner = spawnCampaignRunner(newState, this.context,
this.campaignService, this.outboundCampaignMessageService, this.contactService, this.suppressedContactService,
this.leadService, this.domainGroupService, this.domainService, this.offerService,
this.routeService, this.clickService, this.webClientBuilder);
})
.thenReply(cmd.getReplyTo(), newState -> StatusReply.ack());
}
return Effect().persist(new CampaignCreated(cmd.getCampaignId(),
OffsetDateTime.now(ZoneOffset.UTC), cmd.getName(),
cmd.getDomainGroupId(),cmd.getDomainIdWithCount(), cmd.getContactListId(),
cmd.getContactSegmentId(), cmd.getRouteId(),
cmd.getOfferId(), cmd.getVertical(),
cmd.getContactSkipOffset(), cmd.getSendSpeed(),
cmd.getCampaignOptimization(), cmd.getDataTriggers(),
cmd.getDegreeOfParallelism(), cmd.getContactFilter(),
cmd.getMessageTemplate(), cmd.getMessageTemplateId(),
cmd.getSaveProgressEvery(), false, cmd.getCampaignScheduledTime(), cmd.getStartOption(),
cmd.getScheduleChronExpression(),
cmd.getWebHooks(), cmd.getSliceSize(), cmd.getNetworkCarrierFilter()))
.thenReply(cmd.getReplyTo(), newState -> StatusReply.ack());
})
.onCommand(Edit.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(Pause.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(ProcessCompleted.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(ProcessFailed.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(Resume.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(ProcessSaveProgress.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")))
.onCommand(ProcessRunning.class, (state, cmd) -> Effect().none().thenNoReply())
.onCommand(ProcessPaused.class, (state, cmd) -> Effect().none().thenNoReply())
.onCommand(AddCustomRevenue.class, (state, cmd) -> Effect().reply(cmd.getReplyTo(), StatusReply.error("Campaign doesn't exists.")));
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... atus-check