kontroler $fltr = new Filter();
$fltrqry = new FilterQuery();
$tds = $fltr->prepareFilterAndQuery($tableDetails, $tmpForms, $fltrqry);
$manager_order = $this->get('app.manager_order');
$orders = $manager_order->prepareOrder($tds);
$tableDetails = $manager_order->getTableDetails();
Order.php
class Order
{
private $em;
private $tableDetails;
function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* @return TableDetails
*/
public function getTableDetails()
{
return $this->tableDetails;
}
public function prepareOrder(TableDetails $td_f)
{
if($td_f->getQuery()){
return $this->prepareOrderRepositoryForFilterSelected($td_f);
}
if(!$td_f->getQuery()) {
return $this->prepareOrderRepositoryUnfiltered($td_f);
}
}
private function prepareOrderRepositoryUnfiltered(TableDetails $td)
{
$this->tableDetails = $td;
$repo = $this->em->getRepository('AppBundle:Zamowienie')
->findAllOrderedByY(
$td->getColumnsSortOrder(),
$td->getColumnSort());
if (!$repo) {throw new \Exception('Nie można znaleźć zamówień');}
return $repo;
}
private function prepareOrderRepositoryForFilterSelected(TableDetails $td)
{
$this->tableDetails = $td;
$repo = $this->em->getRepository('AppBundle:Zamowienie')
->findByXOrderedByY(
$td->getQuery(),
$td->getColumnsSortOrder(),
$td->getColumnSort());
if (!$repo) {throw new \Exception('Nie można znaleźć zamówień');}
return $repo;
}
}
Filter
class Filter
{
public function prepareFilterAndQuery(TableDetails $td, $forms, IFilterQuery $fq)
{
$td = $this->prepareDetails($td,$forms);
$tds = $this->makeFilterAndQuery($td,$forms,$fq);
return $tds;
}
private function prepareDetails
(TableDetails
$tableDetails, array $tmpForms) {
$tableDetails = $this->setFalse($tableDetails, $tmpForms);
$tableDetails = $this->setFilter($tableDetails, $tmpForms);
return $tableDetails;
}
private function makeFilterAndQuery(TableDetails $td, $forms, IFilterQuery $fq)
{
if($td->getFilter() == 'all'){
return $td;
}
if($td->getFilter() == 'idstatus'){
$td->setFilterField('idstatus');
$tds = $fq->prepareStatusFilterQuery($td, $forms);
return $tds;
}
if($td->getFilter() == 'data') {
$td->setFilterField('data');
$tds = $fq->prepareDataFilterQuery($td, $forms);
return $tds;
}
if($td->getFilter() == 'idklient'){
$tds = $fq->prepareKlientFilterQuery($td, $forms);
return $tds;
}
}
private function setFalse(TableDetails $tb, $fms)
{
if ($this->isAnyFormValid($fms)){
$tb->setFilterField(false);
$tb->setQuery(false);
}
if(!($tb->getFilterField()))
{
$tb->setQuery(false);
}
return $tb;
}
private function isAnyFormValid($forms)
{
if(($forms['StatusForm']->isValid())or
($forms['DataZamForm']->isValid())or
($forms['NrKlientaForm']->isValid()))
{
return true;
}
return false;
}
private function setFilter(TableDetails $td,$forms)
{
if(!($td->getFilter()))
{
$td = $this->prepareFilterValue($forms,$td);
}
return $td;
}
private function prepareFilterValue($fms,TableDetails $td){
if($td->getFilterField()){
$td->setFilter($td->getFilterField());
return $td;
}
if($fms['StatusForm']->isValid()){
$td->setFilter('idstatus');
return $td;
}
if($fms['DataZamForm']->isValid()) {
$td->setFilter('data');
return $td;
}
if($fms['NrKlientaForm']->isValid()){
$td->setFilter('idklient');
return $td;
}
$td->setFilter('all');
return $td;
}
}
FilterQuery
class FilterQuery implements IFilterQuery
{
public function prepareStatusFilterQuery(TableDetails $td, $forms)
{
if((!$td->getQuery()) and (!$td->getIdentifier())) {
$td->setIdentifier($forms['StatusForm']->get('status')->getData()->getIdstatus());
}
if((!$td->getQuery()) and ($td->getIdentifier())) {
$td->setQuery('idstatus = ' . $td->getIdentifier());
}
return $td;
}
public function prepareDataFilterQuery(TableDetails $td, $forms)
{
if($td->getQuery()) {
}
if (!$td->getQuery()) {
$od = $forms['DataZamForm']->get('od')->getData()->format('Y-m-d H:i:s');
$do = $forms['DataZamForm']->get('do')->getData()->format('Y-m-d H:i:s');
$td->setQuery("datazlozenia BETWEEN '" . $od . "' AND '" . $do . "'");
}
return $td;
}
public function prepareKlientFilterQuery(TableDetails $td, $forms)
{
if ((!($td->getQuery())) and (!$td->getIdentifier())) {
$td->setIdentifier($forms['NrKlientaForm']->get('idklient')->getData()->getIdklient());
$td->setQuery('idklient = ' . $td->getIdentifier());
return $td;
}
if ((!($td->getQuery())) and $td->getIdentifier()) {
$td->setQuery('idklient = ' . $td->getIdentifier());
return $td;
}
return $td;
}
}
TableDetails
class TableDetails
{
private $columnsSortOrder;
private $columnSort;
private $filterField;
private $query;
private $filter;
private $identifier;
//tylko gettery i settery
przed refaktoryzacją wszystko było w kontrolerze i wyglądało
tak
Ten post edytował porzeczki 12.12.2016, 16:44:07