public function view() { $dateFrom = $this->post('dateFrom'); $dateTo = $this->post('dateTo'); if (!$dateFrom) { $dateFrom = OrderList::getDateOfFirstOrder(); } if (!$dateTo) { $dateTo = date('Y-m-d'); } $pr = new ProductReport($dateFrom, $dateTo); $orderBy = $this->post('orderBy'); if (!$orderBy) { $orderBy = 'quantity'; } if ($orderBy == 'quantity') { $pr->sortByPopularity(); } else { $pr->sortByTotal(); } //$products = $pr->getProducts(); $this->set('dateFrom', $dateFrom); $this->set('dateTo', $dateTo); $pr->setItemsPerPage(10); $paginator = $pr->getPagination(); $pagination = $paginator->renderDefaultView(); $this->set('products', $paginator->getCurrentPageResults()); $this->set('pagination', $pagination); $this->set('paginator', $paginator); }
public function finalizeQuery(\Doctrine\DBAL\Query\QueryBuilder $query) { $paramcount = 0; if (!empty($this->gIDs)) { $validgids = array(); foreach ($this->gIDs as $gID) { if ($gID > 0) { $validgids[] = $gID; } } if (!empty($validgids)) { $query->innerJoin('p', 'VividStoreProductGroups', 'g', 'p.pID = g.pID and g.gID in (' . implode(',', $validgids) . ')'); if (!$this->groupMatchAny) { $query->having('count(g.gID) = ' . count($validgids)); } } } switch ($this->sortBy) { case "alpha": $query->orderBy('pName', 'ASC'); break; case "date": $query->orderBy('pDateAdded', 'DESC'); break; case "pricelth": $query->orderBy('pPrice', 'ASC'); break; case "pricehtl": $query->orderBy('pPrice', 'DESC'); break; case "popular": $pr = new StoreProductReport(); $pr->sortByPopularity(); $products = $pr->getProducts(); $pIDs = array(); foreach ($products as $product) { $pIDs[] = $product['pID']; } foreach ($pIDs as $pID) { $query->addOrderBy("pID = ?", 'DESC')->setParameter($paramcount++, $pID); } break; } switch ($this->featured) { case "featured": $query->andWhere("pFeatured = 1"); break; case "nonfeatured": $query->andWhere("pFeatured = 0"); break; } if (!$this->showOutOfStock) { $query->andWhere("pQty > 0 OR pQtyUnlim = 1"); } if ($this->activeOnly) { $query->andWhere("pActive = 1"); } if (is_array($this->cIDs) && !empty($this->cIDs)) { $query->innerJoin('p', 'VividStoreProductLocations', 'l', 'p.pID = l.pID and l.cID in (' . implode(',', $this->cIDs) . ')'); } $query->groupBy('p.pID'); if ($this->search) { $query->andWhere('pName like ?')->setParameter($paramcount++, '%' . $this->search . '%'); } return $query; }