<?php

namespace App\Http\Controllers\Frontend\User;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Repositories\Frontend\Auth\UserRepository;
use App\Repositories\Frontend\ServiceRepository;
use App\Repositories\Frontend\CityRepository;
use App\Repositories\Frontend\ServiceProviderCityRepository;
use App\Repositories\Frontend\ServiceProviderServiceRepository;

/**
 * Class DashboardController.
 */
class DashboardController extends Controller
{
    /**
     * @var UserRepository
     * @var ServiceProviderCityRepository
     * @var ServiceProviderServiceRepository
     */
    protected $userRepository;
    protected $CityRepository;
    protected $serviceproviderservicerepository;
    protected $serviceprovidercityrepository;

    /**
     * ProfileController constructor.
     *
     * @param UserRepository $userRepository
     */
    public function __construct(UserRepository $userRepository, ServiceRepository $servicesRepository, CityRepository $CityRepository, ServiceProviderCityRepository $serviceprovidercityrepository, ServiceProviderServiceRepository $serviceproviderservicerepository)
    {
        $this->userRepository = $userRepository;
        $this->servicesRepository = $servicesRepository;
        $this->CityRepository = $CityRepository;
        $this->ServiceProviderCityRepository = $serviceprovidercityrepository;
        $this->ServiceProviderServiceRepository = $serviceproviderservicerepository;
        
    }
    /**
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index()
    {   $user=$this->userRepository->findById(auth()->id());
        $user_type=$user->user_type;
        if($user_type==2){
            return view('frontend.service_list')
                ->withServices($this->servicesRepository->getActive('category_name', 'asc'))
                 ->withCities($this->CityRepository->getAll());
        }elseif($user_type==3){
            $userId = Auth::user()->id;
            $userToCities = $this->ServiceProviderCityRepository->getAll($userId);
            $cities = array();
            foreach($userToCities as $key => $val){
                $cities[] = $this->CityRepository->getAllById($val->city_id);
            }
            $userToCategories = $this->ServiceProviderServiceRepository->getSpToService($userId);
            $categories = array();
            foreach($userToCategories as $key => $val){
                $categories[] = $this->servicesRepository->getAllById($val->service_id);
            }
            return view('frontend.user.account')
                   ->withCities($cities)
                   ->withServices($categories);
                //return view('frontend.user.account');
                    
        }

    }
}
