<?php
namespace Bidcoz\Bundle\FrontendBundle\Controller;
use Bidcoz\Bundle\CoreBundle\Controller\CoreController;
use Bidcoz\Bundle\CoreBundle\Entity\Campaign;
use Bidcoz\Bundle\CoreBundle\Entity\Organization;
use Bidcoz\Bundle\FrontendBundle\Form\Type\ContactUsType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/{orgSlug}")
*/
class ContactUsController extends CoreController
{
/**
* @Route("/contact", name="org_contact")
* @IsGranted("VIEW", subject="organization")
*/
public function organizationAction(Request $request, Organization $organization)
{
$form = $this->getContactForm();
if (!$user = $this->getUser()) {
$this->addFlash('danger', 'You must log in to contact the site admins');
}
if ('POST' === $request->getMethod()) {
$form->handleRequest($request);
if ($user && $form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$this->getEmailManager()->sendEmailToAdmins($organization, 'contact-us', [
'message' => $data['message'],
'fromUser' => $user,
]);
$this->getEntityManager()->flush();
$this->addFlash('success', 'Your message was sent');
return $this->redirectToRoute('org_contact', [
'orgSlug' => $organization->getSlug(),
]);
}
}
return $this->render('@BidcozFrontend/Contact/organization.html.twig', [
'organization' => $organization,
'form' => $form->createView(),
]);
}
/**
* @Route("/{campaignSlug}/contact", name="campaign_contact")
* @IsGranted("VIEW", subject="organization")
* @IsGranted("FRONT_END", subject="campaign")
*/
public function campaignAction(Request $request, Organization $organization, Campaign $campaign)
{
$form = $this->getContactForm();
if (!$user = $this->getUser()) {
$this->addFlash('danger', 'You must log in to contact the site admins');
}
if ('POST' === $request->getMethod()) {
$form->handleRequest($request);
if ($user && $form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$this->getEmailManager()->sendEmailToAdmins($campaign, 'contact-us', [
'message' => $data['message'],
'fromUser' => $user,
]);
$this->getEntityManager()->flush();
$this->addFlash('success', 'Your message was sent');
return $this->redirectToRoute('campaign_contact', [
'orgSlug' => $organization->getSlug(),
'campaignSlug' => $campaign->getSlug(),
]);
}
}
return $this->render('@BidcozFrontend/Contact/campaign.html.twig', [
'organization' => $organization,
'campaign' => $campaign,
'form' => $form->createView(),
]);
}
protected function getContactForm()
{
return $this->createForm(ContactUsType::class);
}
}