<?php

namespace Shopping\Order;

use User;

class Order
{
    /**
     * $order object.
     */
    protected $order;    /**
     * $product object.
     */
    protected $product;    /**
     * $status object.
     */
    protected $status;

    /**
     * Constructor.
     */
    public function __construct(\Shopping\Order\Interfaces\OrderRepositoryInterface $order,        \Shopping\Order\Interfaces\ProductRepositoryInterface $product,        \Shopping\Order\Interfaces\StatusRepositoryInterface $status)
    {
        $this->order = $order;        $this->product = $product;        $this->status = $status;
    }

    /**
     * Returns count of order.
     *
     * @param array $filter
     *
     * @return int
     */
    public function count()
    {
        return  0;
    }

    /**
     * Make gadget View
     *
     * @param string $view
     *
     * @param int $count
     *
     * @return View
     */
    public function gadget($view = 'admin.order.gadget', $count = 10)
    {

        if (User::hasRole('user')) {
            $this->order->pushCriteria(new \Litepie\Shopping\Repositories\Criteria\OrderUserCriteria());
        }

        $order = $this->order->scopeQuery(function ($query) use ($count) {
            return $query->orderBy('id', 'DESC')->take($count);
        })->all();

        return view('order::' . $view, compact('order'))->render();
    }    /**
     * Make gadget View
     *
     * @param string $view
     *
     * @param int $count
     *
     * @return View
     */
    public function gadget($view = 'admin.product.gadget', $count = 10)
    {

        if (User::hasRole('user')) {
            $this->product->pushCriteria(new \Litepie\Shopping\Repositories\Criteria\ProductUserCriteria());
        }

        $product = $this->product->scopeQuery(function ($query) use ($count) {
            return $query->orderBy('id', 'DESC')->take($count);
        })->all();

        return view('order::' . $view, compact('product'))->render();
    }    /**
     * Make gadget View
     *
     * @param string $view
     *
     * @param int $count
     *
     * @return View
     */
    public function gadget($view = 'admin.status.gadget', $count = 10)
    {

        if (User::hasRole('user')) {
            $this->status->pushCriteria(new \Litepie\Shopping\Repositories\Criteria\StatusUserCriteria());
        }

        $status = $this->status->scopeQuery(function ($query) use ($count) {
            return $query->orderBy('id', 'DESC')->take($count);
        })->all();

        return view('order::' . $view, compact('status'))->render();
    }
}