Implement basic trade offer via email
This commit is contained in:
parent
bed4012971
commit
e924c11558
4 changed files with 61 additions and 17 deletions
|
@ -2,38 +2,54 @@
|
|||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Entity\Offering;
|
||||
|
||||
use App\Repository\OfferingRepository;
|
||||
use App\Repository\WishRepository;
|
||||
|
||||
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Mailer\MailerInterface;
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class TradeController extends AbstractController
|
||||
{
|
||||
#[Route('/trade/{id}', name: 'trade')]
|
||||
public function sendEmail(MailerInterface $mailer, OfferingRepository $offeringRepository, WishRepository $wishRepository): Response
|
||||
public function sendEmail(MailerInterface $mailer, Offering $offer, OfferingRepository $offeringRepository, WishRepository $wishRepository): Response
|
||||
{
|
||||
$user = $this->getUser();
|
||||
$offer = $offeringRepository->();
|
||||
|
||||
if(/* user not the logged in user */)
|
||||
$email = (new Email())
|
||||
->from('no-reply@pfleanz.li')
|
||||
->to(/* user of offer */)
|
||||
->replyTo(/* logged in user */)
|
||||
->subject('Time for Symfony Mailer!')
|
||||
->text('Sending emails is fun again!')
|
||||
->htmlTemplate('user/trade/offer_email.html.twig');
|
||||
try
|
||||
if($user != $offer->getByUser())
|
||||
{
|
||||
$mailer->send($email);
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
// TODO:
|
||||
// print error
|
||||
$email = (new TemplatedEmail())
|
||||
->from('no-reply@pfleanz.li')
|
||||
->to($offer->getByUser()->getEmail())
|
||||
->replyTo($user->getEmail())
|
||||
->subject($user->getUsername() . ' wants to trade with you!')
|
||||
->text('Trade offer')
|
||||
->htmlTemplate('user/trade/offer_email.html.twig')
|
||||
->context([
|
||||
'user' => $user,
|
||||
'userOffersLink' => $this->generateUrl('user_public', [
|
||||
'id' => $offer->getByUser()->getId(),
|
||||
], UrlGeneratorInterface::ABSOLUTE_URL)
|
||||
])
|
||||
;
|
||||
try
|
||||
{
|
||||
$mailer->send($email);
|
||||
$this->addFlash('success', 'Trade offer sent!');
|
||||
} catch (TransportExceptionInterface $e) {
|
||||
$this->addFlash('error', 'There was an error: ' . $e);
|
||||
}
|
||||
} else {
|
||||
$this->addFlash('error','You can\'t trade with yourself!');
|
||||
}
|
||||
return $this->redirectToRoute('/offer', {'id': $id});
|
||||
|
||||
return $this->redirectToRoute('show_offer', ['id' => $offer->getId()]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,17 @@ class OfferingRepository extends ServiceEntityRepository
|
|||
;
|
||||
}
|
||||
|
||||
public function findById($id)
|
||||
{
|
||||
return $this->createQueryBuilder('o')
|
||||
->andWhere('o.Id = :val')
|
||||
->setParameter('val', $id)
|
||||
->orderBy('o.id', 'ASC')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
public function findOneBySomeField($value): ?Offering
|
||||
{
|
||||
|
|
Reference in a new issue