diff --git a/Classes/Controller/JoblistController.php b/Classes/Controller/JoblistController.php index 598577ff76b1898610b5bf157d04e76d241fd776..d21f63a335cd3150641174d2be48c6bc3a856dce 100644 --- a/Classes/Controller/JoblistController.php +++ b/Classes/Controller/JoblistController.php @@ -26,6 +26,7 @@ namespace SGalinski\SgJobs\Controller; * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ +use SGalinski\SgJobs\Domain\Model\Contact; use SGalinski\SgJobs\Domain\Model\Job; use SGalinski\SgJobs\Domain\Model\JobApplication; use SGalinski\SgJobs\Property\TypeConverter\UploadedFileReferenceConverter; @@ -55,6 +56,12 @@ class JoblistController extends ActionController { */ private $jobRepository; + /** + * @var \SGalinski\SgJobs\Domain\Repository\ContactRepository + * @inject + */ + private $contactRepository; + /** * @var \SGalinski\SgJobs\Domain\Repository\JobApplicationRepository * @inject @@ -243,6 +250,24 @@ class JoblistController extends ActionController { MailTemplateService::class, 'application_mail', 'sg_jobs', $this->getApplicationMailMarkers($applyData) ); + + // get email from the job contact, fallback is TS settings + /** @var Job $job */ + $job = $applyData->getJob(); + + if ($job !== NULL) { + /** @var Contact $contact */ + $contact = $job->getContact(); + if ($contact === NULL) { + $contact = $this->contactRepository->findByUid((int) $this->settings['defaultContactId']); + } + } else { + $contact = $this->contactRepository->findByUid((int) $this->settings['defaultContactId']); + } + + if ($contact !== NULL) { + $mailService->setToAddresses($contact->getEmail()); + } $mailService->setMarkers(['application' => $applyData]); $mailService->setIgnoreMailQueue(TRUE); diff --git a/Classes/Domain/Model/Job.php b/Classes/Domain/Model/Job.php index 66fcc0a0a56fc132611c1e18ae5d53bb013b2e67..ae33b09ab3378e8104b51b4f30d671c81c6fa17d 100644 --- a/Classes/Domain/Model/Job.php +++ b/Classes/Domain/Model/Job.php @@ -79,7 +79,7 @@ class Job extends AbstractEntity { protected $description = ''; /** - * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\SGalinski\SgJobs\Domain\Model\Contact> $contact + * @var \SGalinski\SgJobs\Domain\Model\Contact $contact */ protected $contact; @@ -182,16 +182,16 @@ class Job extends AbstractEntity { } /** - * @return ObjectStorage + * @return \SGalinski\SgJobs\Domain\Model\Contact */ public function getContact() { return $this->contact; } /** - * @param ObjectStorage $contact + * @param \SGalinski\SgJobs\Domain\Model\Contact $contact */ - public function setContact(ObjectStorage $contact) { + public function setContact(Contact $contact) { $this->contact = $contact; } diff --git a/Classes/Domain/Model/JobApplication.php b/Classes/Domain/Model/JobApplication.php index 5898cce57e787691f53a2e63bf3a867787401d90..03c76e6ed5e76e3dda7db82c573a2a377fa6f6da 100644 --- a/Classes/Domain/Model/JobApplication.php +++ b/Classes/Domain/Model/JobApplication.php @@ -27,6 +27,7 @@ namespace SGalinski\SgJobs\Domain\Model; ***************************************************************/ use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; +use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; /** @@ -46,7 +47,7 @@ class JobApplication extends AbstractEntity { protected $jobTitle = ''; /** - * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\SGalinski\SgJobs\Domain\Model\Job> $job + * @var \SGalinski\SgJobs\Domain\Model\Job $job */ protected $job; @@ -417,16 +418,16 @@ class JobApplication extends AbstractEntity { } /** - * @return ObjectStorage + * @return \SGalinski\SgJobs\Domain\Model\Job */ public function getJob() { return $this->job; } /** - * @param ObjectStorage $job + * @param \SGalinski\SgJobs\Domain\Model\Job $job */ - public function setJob(ObjectStorage $job) { + public function setJob(Job $job) { $this->job = $job; } } diff --git a/Configuration/TypoScript/Frontend/setup.ts b/Configuration/TypoScript/Frontend/setup.ts index a47d96a23d78a94034eef443c59bec943847d4d7..8badd407decf14b5a7010b9460f1d537159defd7 100644 --- a/Configuration/TypoScript/Frontend/setup.ts +++ b/Configuration/TypoScript/Frontend/setup.ts @@ -24,6 +24,7 @@ plugin.tx_sgjobs { settings { allowedFileExtensions = {$plugin.tx_sgjobs.settings.allowedFileExtensions} allowedMimeTypes = {$plugin.tx_sgjobs.settings.allowedMimeTypes} + defaultContactId = } features { diff --git a/Resources/Private/Partials/Job.html b/Resources/Private/Partials/Job.html index 5bd1903190d0127bb6254a1988a62df7e3c5c81f..89f7a039c7010bcef3a4479102d44026cf2b7669 100644 --- a/Resources/Private/Partials/Job.html +++ b/Resources/Private/Partials/Job.html @@ -81,21 +81,21 @@ <div> <h3><f:translate key="frontend.email" /></h3> <p> - {job.contact.0.email} + {job.contact.email} </p> </div> - +<f:debug>{job}</f:debug> <div> <h3><f:translate key="frontend.apply_by_mail" /></h3> {job.company.0.name} <br /> - {job.contact.0.firstName} {job.contact.0.lastName} + {job.contact.firstName} {job.contact.0.lastName} <br /> {job.company.0.street} <br /> {job.company.0.city} <br /> - {job.contact.0.email} + {job.contact.email} <br /> - {job.contact.0.phone} + {job.contact.phone} </div>