/** * Method for handling single onCreate event * @param SeasonApplication $app * @return void * @throws Exceptions\InvalidStateException */ public function onCreate(SeasonApplication $app) { $amount = null; $season = $app->getSeason(); $group = $app->getSportGroup(); try { $tax = $this->seasonTaxService->getSeasonTaxSG($season, $group); if ($tax !== null) { $amount = $tax->getMemberShip(); if (empty($amount) || $amount == 0) { return; } } else { throw new Exceptions\InvalidStateException("Season tax for season {$season} and group {$group} does not exist"); } } catch (Exceptions\DataErrorException $ex) { $this->logger->addError("Application listener - onCreate - getSeasonTaxSG failed with - " . $ex->getMessage()); return; } $subject = "Application for " . $app->getSportGroup()->getName() . " (" . $app->getSportGroup()->getSportType()->getName() . ") within " . $app->getSeason()->getLabel() . " season"; $payment = new Payment(); $payment->setOwner($app->getOwner()); $payment->setSeason($app->getSeason()); $payment->setSubject($subject); $payment->setAmount($amount); $payment->setDueDate($this->paymentService->getDefaultDueDate()); $payment->setOrderedDate(new DateTime()); $payment->setEditor($app->getEditor()); $payment->setStatus(PaymentStatus::NOT_YET); $payment->setVs($this->paymentService->generateVs($payment)); $payment->setPublicNote(""); $payment->setProtectedNote(""); try { $this->paymentService->createPayment($payment); $app->setPayment($payment); $this->seasonApplicationService->updateSeasonApplication($app); } catch (Exceptions\DataErrorException $ex) { $this->logger->addError("Application listener - onCreate - savingData failed with - " . $ex->getMessage()); return; } }
private function applicationSeasonTypeHandle(SeasonApplication $app) { if ($app === null) { throw new Exceptions\NullPointerException("Argument SeasonApplication cannot be null", 0); } try { $id = $this->getMixId($app->getSeason()); $season = $this->getSeasonService()->getSeason($id, false); $app->setSeason($season); } catch (\Exception $ex) { $this->logError($ex->getMessage()); throw new Exceptions\DataErrorException($ex->getMessage(), $ex->getCode(), $ex->getPrevious()); } }
public function notifyNewSeasonApplication(SeasonApplication $app) { $u = $app->getOwner(); $subjKey = "systemModule.notification.newApplication.subject"; $bodyKey = "systemModule.notification.newApplication.body"; $subject = $this->translator->translate($subjKey, null, ["host" => $this->getHostName()]); $type = $app->getSportGroup()->getSportType(); $t = ""; if ($type !== NULL) { $t = " ({$type})"; } $body = $this->translator->translate($bodyKey, null, ["name" => $u->getName(), "surname" => $u->getSurname(), "season" => $app->getSeason()->getLabel(), "group" => $app->getSportGroup()->getName() . $t]); $mail = new Message(); $mail->setFrom($this->getSenderEmail())->setSubject($subject)->setBody($body)->addTo($u->getContact()->getEmail()); $this->send($mail); }