diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/application/service/WriteInquiryService.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/application/service/WriteInquiryService.kt index 83f000ed..0500a4ec 100644 --- a/src/main/kotlin/andreas311/miso/domain/inquiry/application/service/WriteInquiryService.kt +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/application/service/WriteInquiryService.kt @@ -8,6 +8,8 @@ import andreas311.miso.domain.inquiry.application.port.output.CommandInquiryPort import andreas311.miso.domain.inquiry.application.port.output.DiscordMessageSendPort import andreas311.miso.domain.inquiry.domain.Inquiry import andreas311.miso.domain.inquiry.domain.InquiryStatus +import andreas311.miso.domain.notification.application.port.input.InquiryNotificationSendUseCase +import andreas311.miso.domain.notification.application.port.output.QueryDeviceTokenPort import andreas311.miso.thirdparty.aws.s3.util.S3Util import org.springframework.web.multipart.MultipartFile import java.time.LocalDateTime @@ -17,7 +19,9 @@ class WriteInquiryService( private val s3Util: S3Util, private val userSecurityPort: UserSecurityPort, private val commandInquiryPort: CommandInquiryPort, - private val discordMessageSendPort: DiscordMessageSendPort + private val queryDeviceTokenPort: QueryDeviceTokenPort, + private val discordMessageSendPort: DiscordMessageSendPort, + private val inquiryNotificationSendUseCase: InquiryNotificationSendUseCase ) : WriteInquiryUseCase { override fun execute(writeInquiryDto: WriteInquiryDto, multipartFile: MultipartFile?) { val user = userSecurityPort.currentUser() @@ -27,8 +31,9 @@ class WriteInquiryService( s3Util.execute(multipartFile) } else null - commandInquiryPort.saveInquiry( - Inquiry( + val deviceToken = queryDeviceTokenPort.findByUserIdOrNull(user.id) + + val inquiry = Inquiry( id = 0L, title = writeInquiryDto.title, content = writeInquiryDto.content, @@ -37,12 +42,15 @@ class WriteInquiryService( user = user, createdDate = LocalDateTime.now() ) - ) + + commandInquiryPort.saveInquiry(inquiry) + sendDiscordMessage(writeInquiryDto.title) + + deviceToken?.let { inquiryNotificationSendUseCase.execute(inquiry, deviceToken.deviceToken) } } private fun sendDiscordMessage(title: String) { - val inquiryMessage = discordMessageSendPort.createInquiryMessage(title) discordMessageSendPort.sendDiscordMessage(inquiryMessage)