/**
* Fetch email promotion schedule member list, based on the
* used filter.
*
* @param $emailPromotionScheduleId
*
* @Route(“/estimatedMembers”, name=”_promotion_est_members”)
*
*/
public function estimatedMembers() {
$id = $this->getRequest()->get(‘id’);
if (!$id)
throw new Exception(“Id not set”);
$em = $this->getDoctrine()
->getManager();
$emailPromotionSchedule = $em->getRepository(‘MbDbMVibesEmailBundle:EmailPromotionSchedule’)
->find($id);
$limit = 10;
$rep = $this->getDoctrine()
->getRepository(‘MbDbMVibesBundle:Member’, ‘mvibes’);
// load search form
parse_str($emailPromotionSchedule->getSearchForm(), $searchForm);
if (count($searchForm)) {
$searchForm[‘contactId’] = $emailPromotionSchedule->getContactId();
/** Pagination */
$count = $this->getRequest()->get(‘mCount’) ? $this->getRequest()->get(‘mCount’) : $rep->countByFilter($searchForm);
$page = $this->getRequest()->get(‘mPage’) ? $this->getRequest()->get(‘mPage’) : 1;
$params = array();
$pagination = new SlidingPagination($params);
$pagination->setTotalItemCount($count);
$pagination->setItemNumberPerPage($limit);
$pagination->setCurrentPageNumber($page);
$viewData = $pagination->getPaginationData();
$viewData[‘route’] = “_promotion_est_members”;
$viewData[‘query’] = array(
‘id’ => $id,
‘mCount’ => $count,
);
$viewData[‘pageParameterName’] = “mPage”;
$template = $this->get(‘twig’)
->loadTemplate(‘KnpPaginatorBundle:Pagination:twitter_bootstrap_pagination.html.twig’);
$paginationHtml = $template->render($viewData);
/** select members */
$selectFields = “m.memberId, m.email, m.nickName, m.languageId”;
$selectFields .= “, s.siteId, s.url, s.name as siteName, s.emailAddress as siteEmailAddress”;
$query = $rep->queryByFilter($searchForm, $selectFields);
if(strpos($query->getQuery()->getDQL(), “INNER JOIN m.siteAlias”) === false)
$query->innerJoin(“m.siteAlias”, “sa”);
if(strpos($query->getQuery()->getDQL(), “INNER JOIN sa.site”) === false)
$query->innerJoin(“sa.site”, “s”);
$query->setFirstResult( ($page–1) * $limit);
$query->setMaxResults($limit);
$memberList = $query->getQuery()->getArrayResult();
return $this->render(‘MbMVibesEmailBundle:Promotion:memberList.html.twig’,
array(
‘memberList’ => $memberList,
‘pagination’ => $paginationHtml,
)
);
}
return new Response(“<div class=’alert alert-error’>No members found for this schedule</div>”);
}