<?php

namespace Litepie\Service;

use User;

class Service
{
    /**
     * $service object.
     */
    protected $service;    /**
     * $service_category object.
     */
    protected $service_category;    /**
     * $service_review object.
     */
    protected $service_review;

    /**
     * Constructor.
     */
    public function __construct(\Litepie\Service\Interfaces\ServiceRepositoryInterface $service,        \Litepie\Service\Interfaces\ServiceCategoryRepositoryInterface $service_category,        \Litepie\Service\Interfaces\ServiceReviewRepositoryInterface $service_review)
    {
        $this->service = $service;        $this->service_category = $service_category;        $this->service_review = $service_review;
    }

    /**
     * Returns count of service.
     *
     * @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.service.gadget', $count = 10)
    {

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

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

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

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

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

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

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

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

        return view('service::' . $view, compact('service_review'))->render();
    }
}