florianschmitt/connection-backend

View on GitHub
src/main/kotlin/de/florianschmitt/service/MailService.kt

Summary

Maintainability
D
2 days
Test Coverage
package de.florianschmitt.service

import de.florianschmitt.model.entities.ERequest
import de.florianschmitt.model.entities.EVoucher
import de.florianschmitt.model.fixtures.TemplateFixtures
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service

@Service
class MailService {
    @Autowired
    private lateinit var mailSendService: MailSendService

    @Autowired
    private lateinit var templateService: TemplateService

    @Autowired
    private lateinit var stringTemplateService: StringTemplateService

    fun requestConfirmation(request: ERequest) {
        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_CONFIRMATION_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_CONFIRMATION_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.requesterName!!, request)
        val content = stringTemplateService.replace(contentTemplate, request.requesterName!!, request)

        mailSendService.send(request.email!!, subject, content)
    }

    fun requestExpired(request: ERequest) {
        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_EXPIRED_REQUESTER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_EXPIRED_REQUESTER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.requesterName!!, request)
        val content = stringTemplateService.replace(contentTemplate, request.requesterName!!, request)

        mailSendService.send(request.email!!, subject, content)
    }

    fun requestAskVolunteer(request: ERequest, voucher: EVoucher) {
        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ASK_VOLUNTEER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ASK_VOLUNTEER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, voucher, voucher.volunteer, request)
        val content = stringTemplateService.replace(contentTemplate, voucher, voucher.volunteer, request)

        mailSendService.send(voucher.volunteer, subject, content)
    }

    fun requestAcceptedConfirmationForVolunteer(request: ERequest) {
        request.acceptedByVolunteer ?: throw NullPointerException("request.acceptedByVolunteer cannot be null")

        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ACCEPTED_VOLUNTEER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ACCEPTED_VOLUNTEER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)
        val content = stringTemplateService.replace(contentTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)

        mailSendService.send(request.acceptedByVolunteer!!, subject, content)
    }

    fun requestAcceptedConfirmationForRequester(request: ERequest) {
        request.acceptedByVolunteer ?: throw NullPointerException("request.acceptedByVolunteer cannot be null")

        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ACCEPTED_REQUESTER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_ACCEPTED_REQUESTER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.requesterName!!, request)
        val content = stringTemplateService.replace(contentTemplate, request.requesterName!!, request)

        mailSendService.send(request.email!!, subject, content)
    }

    fun requestCanceledInformVolunteer(request: ERequest) {
        request.acceptedByVolunteer ?: throw NullPointerException("request.acceptedByVolunteer cannot be null")

        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_CANCELED_INFORM_VOLUNTEER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_CANCELED_INFORM_VOLUNTEER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)
        val content = stringTemplateService.replace(contentTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)

        mailSendService.send(request.acceptedByVolunteer!!, subject, content)
    }

    fun requestFinishedInformVolunteer(request: ERequest) {
        request.acceptedByVolunteer ?: throw NullPointerException("request.acceptedByVolunteer cannot be null")

        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_FINISHED_ASK_FEEDBACK_VOLUNTEER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_FINISHED_ASK_FEEDBACK_VOLUNTEER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)
        val content = stringTemplateService.replace(contentTemplate, request.acceptedByVolunteer!!.germanDisplayString, request)

        mailSendService.send(request.acceptedByVolunteer!!, subject, content)
    }

    fun requestFinishedInformRequester(request: ERequest) {
        val subjectTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_FINISHED_ASK_FEEDBACK_REQUESTER_SUBJECT)
        val contentTemplate = templateService.getTemplate(TemplateFixtures.REQUEST_FINISHED_ASK_FEEDBACK_REQUESTER_CONTENT)

        val subject = stringTemplateService.replace(subjectTemplate, request.requesterName!!, request)
        val content = stringTemplateService.replace(contentTemplate, request.requesterName!!, request)

        mailSendService.send(request.email!!, subject, content)
    }
}