/** * Load the list scoreboard data * * @return void */ public function loadScoreboard() { $total = Product::count(); $enabled = Product::isEnabled()->count(); $inStock = Product::inStock()->isEnabled()->count(); $outOfStock = Product::outOfStock()->isEnabled()->count(); $discounted = Product::discounted()->isEnabled()->count(); $averagePrice = Product::joinPrice()->isEnabled()->avg('price'); $disabled = $total - $enabled; $this->vars['scoreboard'] = ['total' => $total, 'enabled' => $enabled, 'disabled' => $disabled, 'inStock' => $inStock, 'outOfStock' => $outOfStock, 'averagePrice' => CurrencySettings::format($averagePrice)]; }
/** * Products Index */ public function index() { // Scoreboard queries $products['total'] = Product::all()->count(); $products['isActive'] = Product::isActive()->count(); $products['isInactive'] = $products['total'] - $products['isActive']; $products['inStock'] = Product::inStock()->count(); $products['outOfStock'] = $products['isActive'] - $products['inStock']; $products['isDiscounted'] = Product::isDiscounted()->isActive()->count(); $products['isFullPrice'] = $products['isActive'] - $products['isDiscounted']; $this->vars['products'] = $products; // Extend list controller $this->asExtension('ListController')->index(); }
public function test_in_stock_and_out_of_stock_scopes() { $foo = Factory::create(new Product()); $bar = Factory::create(new Product()); Factory::create(new Inventory(), ['product_id' => $foo->id, 'quantity' => 1]); Factory::create(new Inventory(), ['product_id' => $bar->id, 'quantity' => 0]); $in_stock = Product::inStock()->get(); $out_of_stock = Product::outOfStock()->get(); $this->assertEquals(1, $in_stock->count()); $this->assertEquals(1, $out_of_stock->count()); $this->assertEquals($foo->id, $in_stock->first()->id); $this->assertEquals($bar->id, $out_of_stock->first()->id); }