Last active
August 29, 2015 14:21
-
-
Save nischalsource/e5e5ebba5a1b396cb873 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace CampaignTool\CampaignToolBundle\Controller; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Bundle\FrameworkBundle\Controller\Controller; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; | |
use CampaignTool\CampaignToolBundle\Entity\Usage; | |
use CampaignTool\CampaignToolBundle\Form\UsageType; | |
use Symfony\Component\HttpFoundation\Response; | |
use CampaignTool\CampaignToolBundle\Form\Type\UsageSearchType; | |
use CampaignTool\CampaignToolBundle\Entity\UsageRepository; | |
/** | |
* Usage controller. | |
*/ | |
class UsageController extends Controller | |
{ | |
/** | |
* Lists all usage entities. | |
* | |
* @Route("/usage", name="campaign_tool_usage") | |
* @Method("GET") | |
* @Template() | |
*/ | |
public function indexAction(Request $request) | |
{ | |
$em = $this->getDoctrine()->getManager(); | |
$entities = $em->getRepository('CampaignToolBundle:Usage'); | |
$searchForm = $this->createForm(new UsageSearchType(), array()); | |
$searchForm->handleRequest($request); | |
if ($searchForm->isValid()) { | |
$requestQuery = $searchForm->getData('keyword'); | |
$keyword = $requestQuery['keyword']; | |
$searchedUsages = $entities->findBySearchKeyword($keyword); | |
if (!empty($searchedUsages)) { | |
return array( | |
'entities' => $searchedUsages, | |
'usageSearchForm' => $searchForm->createView() | |
); | |
} | |
} | |
return array( | |
'entities' => $entities->findAll(), | |
'usageSearchForm' => $searchForm->createView() | |
); | |
} | |
/** | |
* Creates a new usage entity. | |
* | |
* @Route("/usage/new", name="campaign_tool_usage_create") | |
* @Method("POST") | |
* @Template("CampaignToolBundle:usage:new.html.twig") | |
*/ | |
public function createAction(Request $request) | |
{ | |
$entity = new Usage(); | |
$form = $this->createCreateForm($entity); | |
$form->handleRequest($request); | |
if ($form->isValid()) { | |
$em = $this->getDoctrine()->getManager(); | |
$em->persist($entity); | |
$em->flush(); | |
return $this->redirect($this->generateUrl('campaign_tool_usage_show', array('id' => $entity->getId()))); | |
} | |
return array( | |
'entity' => $entity, | |
'form' => $form->createView(), | |
); | |
} | |
/** | |
* Creates a form to create a usage entity. | |
* | |
* @param usage $entity The entity | |
* | |
* @return \Symfony\Component\Form\Form The form | |
*/ | |
private function createCreateForm(usage $entity) | |
{ | |
$form = $this->createForm(new usageType(), $entity, array( | |
'action' => $this->generateUrl('campaign_tool_usage_create'), | |
'method' => 'POST', | |
)); | |
$form->add('submit', 'submit', array('label' => 'Create')); | |
return $form; | |
} | |
/** | |
* Displays a form to create a new usage entity. | |
* | |
* @Route("/usage/new", name="campaign_tool_usage_new") | |
* @Method("GET") | |
* @Template() | |
*/ | |
public function newAction() | |
{ | |
$entity = new Usage(); | |
$form = $this->createCreateForm($entity); | |
$em = $this->getDoctrine()->getManager(); | |
//Construct the Channel Tree | |
$AllMarketingChannels = $em->getRepository('CampaignToolBundle:MarketingChannel')->findAll(); | |
foreach($AllMarketingChannels as $MarketingChannel) | |
{ | |
$ControllingChannelName = $MarketingChannel->getControllingChannel()->getName(); | |
$ControllingChannelId = $MarketingChannel->getControllingChannel()->getId(); | |
$MarketingChannelName = $MarketingChannel->getName(); | |
$MarketingChannelId = $MarketingChannel->getId(); | |
$ChannelTree[$ControllingChannelName][$ControllingChannelId][$MarketingChannelName] = $MarketingChannelId; | |
} | |
//Get All Regions with their TelephoneNumbers | |
$AllTelephoneNumbers = $em->getRepository('CampaignToolBundle:Telephone')->findAll(); | |
foreach($AllTelephoneNumbers as $telephonenumber) | |
{ | |
$regionName = $telephonenumber -> getRegion() -> getName(); | |
$AllRegionsWithTelephoneNumbers[$regionName][] = $telephonenumber -> getTelephoneNumber(); | |
} | |
return array( | |
'entity' => $entity, | |
'AllRegionsWithTelephoneNumbers' => $AllRegionsWithTelephoneNumbers, | |
'ChannelTree' => $ChannelTree, | |
'form' => $form->createView(), | |
); | |
} | |
/** | |
* Finds and displays a usage entity. | |
* | |
* @Route("/usage/show/{id}", name="campaign_tool_usage_show") | |
* @Method("GET") | |
* @Template() | |
*/ | |
public function showAction($id) | |
{ | |
$em = $this->getDoctrine()->getManager(); | |
$entity = $em->getRepository('CampaignToolBundle:Usage')->find($id); | |
//$entity = $em->getRepository('CampaignToolBundle:Usage')->findBy(array(),array($id => 'ASC')); | |
if (!$entity) { | |
throw $this->createNotFoundException('Unable to find usage entity.'); | |
} | |
$deleteForm = $this->createDeleteForm($id); | |
return array( | |
'entity' => $entity, | |
'delete_form' => $deleteForm->createView(), | |
); | |
} | |
/** | |
* Displays a form to edit an existing usage entity. | |
* | |
* @Route("/usage/edit/{id}", name="campaign_tool_usage_edit") | |
* @Template() | |
*/ | |
public function editAction(Request $request,$id) | |
{ | |
$em = $this->getDoctrine()->getManager(); | |
$entity = $em->getRepository('CampaignToolBundle:Usage')->find($id); | |
if (!$entity) { | |
throw $this->createNotFoundException('Unable to find usage entity.'); | |
} | |
$editForm = $this->createEditForm($entity); | |
$deleteForm = $this->createDeleteForm($id); | |
$editForm->handleRequest($request); | |
if ($editForm->isValid()) | |
{ | |
$em->flush(); | |
return $this->redirect($this->generateUrl('campaign_tool_usage_show', array('id' => $id))); | |
} | |
else | |
{ | |
} | |
// Get related Entity Marketing Channel | |
$entityMarketingChannel = $em->getRepository('CampaignToolBundle:MarketingChannel')->find($entity->getCategoryId()); | |
//Construct the Channel Tree | |
$AllMarketingChannels = $em->getRepository('CampaignToolBundle:MarketingChannel')->findAll(); | |
foreach($AllMarketingChannels as $MarketingChannel) | |
{ | |
$ControllingChannelName = $MarketingChannel->getControllingChannel()->getName(); | |
$ControllingChannelId = $MarketingChannel->getControllingChannel()->getId(); | |
$MarketingChannelName = $MarketingChannel->getName(); | |
$MarketingChannelId = $MarketingChannel->getId(); | |
$ChannelTree[$ControllingChannelName][$ControllingChannelId][$MarketingChannelName] = $MarketingChannelId; | |
} | |
//Get All Regions with their TelephoneNumbers | |
$AllTelephoneNumbers = $em->getRepository('CampaignToolBundle:Telephone')->findAll(); | |
foreach($AllTelephoneNumbers as $telephonenumber) | |
{ | |
$regionName = $telephonenumber -> getRegion() -> getName(); | |
$AllRegionsWithTelephoneNumbers[$regionName][] = $telephonenumber -> getTelephoneNumber(); | |
} | |
//Get All Regions for this Usage | |
$Regions = array(); | |
$UsageTelephoneNumbers = $entity -> getTelephoneNumbers(); | |
foreach($UsageTelephoneNumbers as $UsageTelephoneNumber) | |
{ | |
$RegionName = $UsageTelephoneNumber -> getRegion() -> getName(); | |
$Regions[] = $RegionName; | |
} | |
return array( | |
'entity' => $entity, | |
'entityMarketingChannel' => $entityMarketingChannel, | |
'entityRegions' => $Regions, | |
'AllRegionsWithTelephoneNumbers' => $AllRegionsWithTelephoneNumbers, | |
'ChannelTree' => $ChannelTree, | |
'edit_form' => $editForm->createView(), | |
'delete_form' => $deleteForm->createView(), | |
); | |
} | |
/** | |
* Creates a form to edit a usage entity. | |
* | |
* @param usage $entity The entity | |
* | |
* @return \Symfony\Component\Form\Form The form | |
*/ | |
private function createEditForm(usage $entity) | |
{ | |
$form = $this->createForm(new usageType(), $entity, array( | |
'action' => $this->generateUrl('campaign_tool_usage_edit', array('id' => $entity->getId())) | |
)); | |
$form->add('submit', 'submit', array('label' => 'Save')); | |
return $form; | |
} | |
/** | |
* Edits an existing usage entity. | |
* | |
* @Route("/usage/update/{id}", name="campaign_tool_usage_update") | |
* @Method("PUT") | |
* @Template("CampaignToolBundle:usage:edit.html.twig") | |
*/ | |
public function updateAction(Request $request, $id) | |
{ | |
$em = $this->getDoctrine()->getManager(); | |
$entity = $em->getRepository('CampaignToolBundle:Usage')->find($id); | |
if (!$entity) { | |
throw $this->createNotFoundException('Unable to find usage entity.'); | |
} | |
$deleteForm = $this->createDeleteForm($id); | |
$editForm = $this->createEditForm($entity); | |
$editForm->handleRequest($request); | |
if ($editForm->isValid()) { | |
$em->flush(); | |
return $this->redirect($this->generateUrl('campaign_tool_usage_edit', array('id' => $id))); | |
} | |
return array( | |
'entity' => $entity, | |
'edit_form' => $editForm->createView(), | |
'delete_form' => $deleteForm->createView(), | |
); | |
} | |
/** | |
* Deletes a usage entity. | |
* | |
* @Route("/usage/delete/{id}", name="campaign_tool_usage_delete") | |
* @Method("DELETE") | |
*/ | |
public function deleteAction(Request $request, $id) | |
{ | |
$form = $this->createDeleteForm($id); | |
$form->handleRequest($request); | |
if ($form->isValid()) { | |
$em = $this->getDoctrine()->getManager(); | |
$entity = $em->getRepository('CampaignToolBundle:Usage')->find($id); | |
if (!$entity) { | |
throw $this->createNotFoundException('Unable to find usage entity.'); | |
} | |
$em->remove($entity); | |
$em->flush(); | |
} | |
return $this->redirect($this->generateUrl('usage')); | |
} | |
/** | |
* Creates a form to delete a usage entity by id. | |
* | |
* @param mixed $id The entity id | |
* | |
* @return \Symfony\Component\Form\Form The form | |
*/ | |
private function createDeleteForm($id) | |
{ | |
return $this->createFormBuilder() | |
->setAction($this->generateUrl('campaign_tool_usage_delete', array('id' => $id))) | |
->setMethod('DELETE') | |
->add('submit', 'submit', array('label' => 'Delete')) | |
->getForm(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment