<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

// Display all SQL executed in Eloquent
//Event::listen('illuminate.query', function($query)
//{
//    echo "<pre>";
//    var_dump($query);
//    echo "</pre>";
//});

/**
 * Model binding into route
 */
Route::model('users', 'App\User');

#frontend views
Route::get('/', array('as' => 'home', 'middleware' => 'SentinelUser', 'uses' => 'FrontEndController@getLogin'));

//Route::get('admin/index', function () {
//    return View::make('admin/index');
//});

Route::get('tecnico/index', array('as' => 'tecnico', 'middleware' => 'SentinelTecnico', function() {
    return View::make('tecnico/index');
}));

Route::get('cliente/index', array('as' => 'cliente', 'middleware' => 'SentinelCliente', function() {
    return View::make('cliente/index');
}));
    
//############################################################################################
//## TECNICO => SentinelTecnico
Route::group(array('prefix' => 'tecnico', 'middleware' => 'SentinelTecnico'), function () {

    Route::get('/', function() {
        return View::make('tecnico/index');
    });
    
    Route::get('index', function() {
        return View::make('tecnico/index');
    });
    
    Route::get('intervento/pdf/{id}', 'PrintController@show');
    
    Route::post('intervento', 'InterventoController@index');
    
        Route::post('intervento/search', 'InterventoController@search');
        Route::get('intervento/search', 'InterventoController@search');   

        Route::resource('intervento', 'InterventoController');
        
            
});

//############################################################################################
//## CLIENTE => SentinelCliente
Route::group(array('prefix' => 'cliente', 'middleware' => 'SentinelCliente'), function () {

    Route::get('/', function() {
        return View::make('cliente/index');
    });
    
    Route::get('index', function() {
        return View::make('cliente/index');
    });
    
    Route::get('intervento/pdf/{id}', 'PrintController@show');   
    
    Route::post('intervento', 'InterventoController@index');
    
        Route::post('intervento/search', 'InterventoController@search');
        Route::get('intervento/search', 'InterventoController@search');   
        
        Route::resource('intervento', 'InterventoController');
        
         
});

//###################################################################
//--- ADMIN
Route::group(array('prefix' => 'admin'), function () {

	# Error pages should be shown without requiring login
	Route::get('404', function () {
		return View('admin/404');
	});
	Route::get('500', function () {
		return View::make('admin/500');
	});

	# Lock screen
	Route::get('lockscreen', function () {
		return View::make('admin/lockscreen');
	});

	# All basic routes defined here
//	Route::get('signin', array('as' => 'signin', 'uses' => 'AuthController@getSignin'));
//	Route::post('signin', 'AuthController@postSignin');
        Route::get('signin', array('as' => 'signin','uses' => 'FrontEndController@getLogin'));
        Route::post('signin','FrontEndController@postLogin');

	Route::post('signup', array('as' => 'signup', 'uses' => 'AuthController@postSignup'));
	Route::post('forgot-password', array('as' => 'forgot-password', 'uses' => 'AuthController@postForgotPassword'));
	Route::get('login2', function () {
		return View::make('admin/login2');
	});

	# Register2
	Route::get('register2', function () {
		return View::make('admin/register2');
	});
	Route::post('register2', array('as' => 'register2', 'uses' => 'AuthController@postRegister2'));

	# Forgot Password Confirmation
	Route::get('forgot-password/{userId}/{passwordResetCode}', array('as' => 'forgot-password-confirm', 'uses' => 'AuthController@getForgotPasswordConfirm'));
	Route::post('forgot-password/{userId}/{passwordResetCode}', 'AuthController@postForgotPasswordConfirm');

	# Logout
	Route::get('logout', array('as' => 'logout', 'uses' => 'AuthController@getLogout'));

	# Account Activation
	Route::get('activate/{userId}/{activationCode}', array('as' => 'activate', 'uses' => 'AuthController@getActivate'));
});

//############################################################################################
//## admin => SentinelAdmin
Route::group(array('prefix' => 'admin', 'middleware' => 'SentinelAdmin'), function () {
    # Dashboard / Index
        Route::get('/', array('as' => 'home', function () {
            return View::make('admin.index');  //admin.index
        }));    
	Route::get('/', array('as' => 'dashboard','uses' => 'JoshController@showHome'));


    # User Management
    Route::group(array('prefix' => 'users'), function () {
        Route::get('/', array('as' => 'users', 'uses' => 'UsersController@index'));
        Route::get('create', 'UsersController@create');
        Route::post('create', 'UsersController@store');
        Route::get('{userId}/delete', array('as' => 'delete/user', 'uses' => 'UsersController@destroy'));
        Route::get('{userId}/confirm-delete', array('as' => 'confirm-delete/user', 'uses' => 'UsersController@getModalDelete'));
        Route::get('{userId}/restore', array('as' => 'restore/user', 'uses' => 'UsersController@getRestore'));
        Route::get('{userId}', array('as' => 'users.show', 'uses' => 'UsersController@show'));
        Route::post('passwordreset', 'UsersController@passwordreset');
    });
    Route::resource('users', 'UsersController');

    Route::get('deleted_users',array('as' => 'deleted_users','before' => 'Sentinel', 'uses' => 'UsersController@getDeletedUsers'));

	# Group Management
    Route::group(array('prefix' => 'groups'), function () {
        Route::get('/', array('as' => 'groups', 'uses' => 'GroupsController@index'));
        Route::get('create', array('as' => 'create/group', 'uses' => 'GroupsController@create'));
        Route::post('create', 'GroupsController@store');
        Route::get('{groupId}/edit', array('as' => 'update/group', 'uses' => 'GroupsController@edit'));
        Route::post('{groupId}/edit', 'GroupsController@update');
        Route::get('{groupId}/delete', array('as' => 'delete/group', 'uses' => 'GroupsController@destroy'));
        Route::get('{groupId}/confirm-delete', array('as' => 'confirm-delete/group', 'uses' => 'GroupsController@getModalDelete'));
        Route::get('{groupId}/restore', array('as' => 'restore/group', 'uses' => 'GroupsController@getRestore'));
    });
    
/*    
    //--- routes for blog
	Route::group(array('prefix' => 'blog'), function () {
        Route::get('/', array('as' => 'blogs', 'uses' => 'BlogController@index'));
        Route::get('create', array('as' => 'create/blog', 'uses' => 'BlogController@create'));
        Route::post('create', 'BlogController@store');
        Route::get('{blog}/edit', array('as' => 'update/blog', 'uses' => 'BlogController@edit'));
        Route::post('{blog}/edit', 'BlogController@update');
        Route::get('{blog}/delete', array('as' => 'delete/blog', 'uses' => 'BlogController@destroy'));
		Route::get('{blog}/confirm-delete', array('as' => 'confirm-delete/blog', 'uses' => 'BlogController@getModalDelete'));
		Route::get('{blog}/restore', array('as' => 'restore/blog', 'uses' => 'BlogController@getRestore'));
        Route::get('{blog}/show', array('as' => 'blog/show', 'uses' => 'BlogController@show'));
        Route::post('{blog}/storecomment', array('as' => 'restore/blog', 'uses' => 'BlogController@storecomment'));
	});

    //--- routes for blog category
	Route::group(array('prefix' => 'blogcategory'), function () {
        Route::get('/', array('as' => 'blogcategories', 'uses' => 'BlogCategoryController@index'));
        Route::get('create', array('as' => 'create/blogcategory', 'uses' => 'BlogCategoryController@create'));
        Route::post('create', 'BlogCategoryController@store');
        Route::get('{blogcategory}/edit', array('as' => 'update/blogcategory', 'uses' => 'BlogCategoryController@edit'));
        Route::post('{blogcategory}/edit', 'BlogCategoryController@update');
        Route::get('{blogcategory}/delete', array('as' => 'delete/blogcategory', 'uses' => 'BlogCategoryController@destroy'));
		Route::get('{blogcategory}/confirm-delete', array('as' => 'confirm-delete/blogcategory', 'uses' => 'BlogCategoryController@getModalDelete'));
		Route::get('{blogcategory}/restore', array('as' => 'restore/blogcategory', 'uses' => 'BlogCategoryController@getRestore'));
	});

	//--- routes for file
	Route::group(array('prefix' => 'file'), function () {
        Route::post('create', 'FileController@store');
		Route::post('createmulti', 'FileController@postFilesCreate');
		Route::delete('delete', 'FileController@delete');
	});

	Route::get('crop_demo', function () {
        return redirect('admin/imagecropping');
    });
    Route::post('crop_demo','JoshController@crop_demo');
*/
	//--- laravel example routes
	# datatables
	Route::get('datatables', 'DataTablesController@index');
	Route::get('datatables/data', array('as' => 'admin.datatables.data', 'uses' => 'DataTablesController@data'));

/*
    //tasks section
    Route::post('task/create', 'TaskController@store');
    Route::get('task/data', 'TaskController@data');
    Route::post('task/{task}/edit', 'TaskController@update');
    Route::post('task/{task}/delete', 'TaskController@delete');
*/



        //--- laravel example routes
        # datatables
        Route::get('intervento/datatables', 'InterventoController@datatables');
        Route::get('intervento/data', array('as' => 'intervento.data', 'uses' => 'InterventoController@data'));

        Route::post('intervento/search', 'InterventoController@search');
        Route::get('intervento/search', 'InterventoController@search');

        Route::post('intervento/export', 'InterventoController@export');
        Route::get('intervento/export', 'InterventoController@export'); 
        
        Route::resource('anagrafica', 'AnagraficaController');
        Route::resource('categoria', 'CategoriaController');
        Route::resource('prodotto', 'ProdottoController');
        Route::resource('tecnico', 'TecnicoController');
        Route::resource('intervento', 'InterventoController');
        Route::resource('user', 'UsersController');



//        Route::get('pdf', 'PrintController@index');
        Route::get('intervento/pdf/{id}', 'PrintController@show');
    
	# Remaining pages will be called from below controller method
	# in real world scenario, you may be required to define all routes manually

	Route::get('{name?}', 'JoshController@showView');

});

// Route::get('/', function () {
    // return view('welcome');
// });


#FrontEndController
Route::get('login', array('as' => 'login','uses' => 'FrontEndController@getLogin'));
Route::post('login','FrontEndController@postLogin');
Route::get('register', array('as' => 'register','uses' => 'FrontEndController@getRegister'));
Route::post('register','FrontEndController@postRegister');
Route::get('activate/{userId}/{activationCode}',array('as' =>'activate','uses'=>'FrontEndController@getActivate'));
Route::get('forgot-password',array('as' => 'forgot-password','uses' => 'FrontEndController@getForgotPassword'));
Route::post('forgot-password','FrontEndController@postForgotPassword');
# Forgot Password Confirmation
Route::get('forgot-password/{userId}/{passwordResetCode}', array('as' => 'forgot-password-confirm', 'uses' => 'FrontEndController@getForgotPasswordConfirm'));
Route::post('forgot-password/{userId}/{passwordResetCode}', 'FrontEndController@postForgotPasswordConfirm');
# My account display and update details
Route::group(array('middleware' => 'SentinelUser'), function () {
	Route::get('my-account', array('as' => 'my-account', 'uses' => 'FrontEndController@myAccount'));
    Route::put('my-account', 'FrontEndController@update');
});
Route::get('logout', array('as' => 'logout','uses' => 'FrontEndController@getLogout'));
# contact form
Route::post('contact',array('as' => 'contact','uses' => 'FrontEndController@postContact'));

//Route::get('signin', array('as' => 'signin', 'uses' => 'AuthController@getSignin'));
//Route::post('signin', 'AuthController@postSignin');
Route::get('signin', array('as' => 'signin','uses' => 'FrontEndController@getLogin'));
Route::post('signin','FrontEndController@postLogin');

/*
Route::group(array('middleware' => 'SentinelUser'), function () {
    
    //---Datatables
    //Route::post('intervento/datatables', array('as' => 'intervento/datatables', 'uses' => 'InterventoController@data'));
    
    //--- laravel example routes
    # datatables
    Route::get('intervento/datatables', 'InterventoController@datatables');
    Route::get('intervento/data', array('as' => 'intervento.data', 'uses' => 'InterventoController@data'));
    
    Route::post('intervento/search', 'InterventoController@search');
    Route::get('intervento/search', 'InterventoController@search');
    
    Route::resource('anagrafica', 'AnagraficaController');
    Route::resource('categoria', 'CategoriaController');
    Route::resource('prodotto', 'ProdottoController');
    Route::resource('tecnico', 'TecnicoController');
    Route::resource('intervento', 'InterventoController');
    Route::resource('user', 'UserController');
    

        
    Route::get('pdf', 'PrintController@index');
});
 * 
 */

Route::get('pdf', 'PrintController@index');

	# Error pages should be shown without requiring login
	Route::get('404', function () {
		return View('admin/404');
	});
	Route::get('500', function () {
		return View::make('admin/500');
	});