<?php

namespace Renysh\Turismo\Providers;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Routing\Router;
use Renysh\Turismo\Models\Turismo;
use Request;

class RouteServiceProvider extends ServiceProvider
{
    /**
     * This namespace is applied to the controller routes in your routes file.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'Renysh\Turismo\Http\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @param   \Illuminate\Routing\Router  $router
     * @return void
     */
    public function boot(Router $router)
    {
        parent::boot($router);

        if (Request::is('*/turismo/catalogo/*')) {
            $router->bind('catalogo', function ($id) {
                $catalogo = $this->app->make('\Renysh\Turismo\Interfaces\CatalogoRepositoryInterface');
                return $catalogo->findorNew($id);
            });
        }if (Request::is('*/turismo/catalogoitem/*')) {
            $router->bind('catalogoitem', function ($id) {
                $catalogoitem = $this->app->make('\Renysh\Turismo\Interfaces\CatalogoitemRepositoryInterface');
                return $catalogoitem->findorNew($id);
            });
        }if (Request::is('*/turismo/sitioevento/*')) {
            $router->bind('sitioevento', function ($id) {
                $sitioevento = $this->app->make('\Renysh\Turismo\Interfaces\SitioeventoRepositoryInterface');
                return $sitioevento->findorNew($id);
            });
        }if (Request::is('*/turismo/ubicacion/*')) {
            $router->bind('ubicacion', function ($id) {
                $ubicacion = $this->app->make('\Renysh\Turismo\Interfaces\UbicacionRepositoryInterface');
                return $ubicacion->findorNew($id);
            });
        }if (Request::is('*/turismo/horarioatencion/*')) {
            $router->bind('horarioatencion', function ($id) {
                $horarioatencion = $this->app->make('\Renysh\Turismo\Interfaces\HorarioatencionRepositoryInterface');
                return $horarioatencion->findorNew($id);
            });
        }if (Request::is('*/turismo/calificacion/*')) {
            $router->bind('calificacion', function ($id) {
                $calificacion = $this->app->make('\Renysh\Turismo\Interfaces\CalificacionRepositoryInterface');
                return $calificacion->findorNew($id);
            });
        }if (Request::is('*/turismo/recurso/*')) {
            $router->bind('recurso', function ($id) {
                $recurso = $this->app->make('\Renysh\Turismo\Interfaces\RecursoRepositoryInterface');
                return $recurso->findorNew($id);
            });
        }if (Request::is('*/turismo/itinerario/*')) {
            $router->bind('itinerario', function ($id) {
                $itinerario = $this->app->make('\Renysh\Turismo\Interfaces\ItinerarioRepositoryInterface');
                return $itinerario->findorNew($id);
            });
        }if (Request::is('*/turismo/itinerarioitem/*')) {
            $router->bind('itinerarioitem', function ($id) {
                $itinerarioitem = $this->app->make('\Renysh\Turismo\Interfaces\ItinerarioitemRepositoryInterface');
                return $itinerarioitem->findorNew($id);
            });
        }if (Request::is('*/turismo/ruta/*')) {
            $router->bind('ruta', function ($id) {
                $ruta = $this->app->make('\Renysh\Turismo\Interfaces\RutaRepositoryInterface');
                return $ruta->findorNew($id);
            });
        }if (Request::is('*/turismo/rutaitem/*')) {
            $router->bind('rutaitem', function ($id) {
                $rutaitem = $this->app->make('\Renysh\Turismo\Interfaces\RutaitemRepositoryInterface');
                return $rutaitem->findorNew($id);
            });
        }

    }

    /**
     * Define the routes for the application.
     *
     * @param \Illuminate\Routing\Router $router
     *
     * @return void
     */
    public function map(Router $router)
    {
        $router->group(['namespace' => $this->namespace], function ($router) {
            require __DIR__ . '/../Http/routes.php';
        });
    }
}