<?php
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Models\Auth\User;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {

  if (Auth::check()) {
    return redirect()->route("home");
  }else{
    return view('/auth/login');
  }

});


Route::get('/login/{provider}', 'Auth\LoginController@redirectToProvider');
Route::get('/callback/{provider}','Auth\LoginController@handleProviderCallback');


Route::group(['middleware' => 'revalidate'],function(){
  Auth::routes();
  Route::get('/home', 'Dashboard\HomeController@index')->name('home');
});


Route::group(['middleware' => 'auth'], function () {
Route::POST('home/team-selected', 'Dashboard\HomeController@teamSelected')->name('home.team-selected');

Route:: post('store', 'Dashboard\HomeController@store')->name('store');

Route::GET('latecheckin-earlycheckout', 'Dashboard\HomeController@lateCheckinEarlyCheckout')->name('latecheckin-earlycheckout');


Route:: get('process-attendance/{id}', 'Dashboard\AttendanceDetailController@processAttendance')->name('process-attendance');

Route:: post('process-attendance-self-service', 'Dashboard\AttendanceDetailController@processAttendanceSelfService')->name('process-attendance-self-service');

Route::resource('department', 'Admin\DepartmentController');
Route::POST('department/update','Admin\DepartmentController@update')->name('department.update');

Route::resource('organisation', 'Admin\OrganisationController');

Route::group(['middleware' => 'permission'], function () {
Route::resource('team','Admin\TeamController');
Route:: get('teamlistdata', 'Admin\TeamController@teamlistdata')->name('teamlistdata');
Route:: get('deleteteam/{id}', 'Admin\TeamController@destroy')->name('deleteteam');
});

Route::resource('role','Admin\RoleController');
Route::resource('permission','Admin\PermissionController');
Route:: get('rolelistdata', 'Admin\RoleController@rolelistdata')->name('rolelistdata');
Route:: get('deleterole/{id}', 'Admin\RoleController@destroy')->name('deleterole');
Route::resource('shift','Admin\ShiftController');
Route:: get('shiftlistdata', 'Admin\ShiftController@shiftlistdata')->name('shiftlistdata');
Route:: get('deleteshift/{id}', 'Admin\ShiftController@destroy')->name('deleteshift');

Route::resource('holiday','Admin\HolidayController');
Route:: get('holidaylistdata', 'Admin\HolidayController@holidaylistdata')->name('holidaylistdata');
Route:: get('deleteholiday/{id}', 'Admin\HolidayController@destroy')->name('deleteholiday');


Route::resource('holiday-list','Admin\HolidayListController');

Route::resource('leave','Admin\LeaveController');

Route::resource('audit','Admin\AuditController');
Route::get('auditlistdata','Admin\AuditController@auditlistdata')->name('auditlistdata');
Route::resource('edit-profile','EditProfile\EditProfileController');

Route::resource('attendancedetail','Dashboard\AttendanceDetailController');

Route::resource('attendance-report', 'Reports\AttendanceReportController');

Route::resource('attendance-individual-report', 'Reports\AttendanceIndividualReportController');

Route::resource('leave-balance-report', 'Reports\LeaveBalanceReportController');
Route::POST('leave-balance-report/update-user-leave-balance','Reports\LeaveBalanceReportController@updateUserLeaveBalance')->name('leave-balance-report.update-user-leave-balance');

Route::POST('attendance-report/select-team-report', 'Reports\AttendanceReportController@SelectTeamReport')->name('attendance-report.select-team-report');

Route::POST('attendance-individual-report/select-employee-report', 'Reports\AttendanceIndividualReportController@selectEmployeeReport')->name('attendance-individual-report.select-employee-report');

Route::resource('daily-attendance-report','Reports\DailyAttendanceReportController');

Route::POST('daily-attendance-report/get-daily-attendance-report','Reports\DailyAttendanceReportController@getDailyAttendanceReport')->name('daily-attendance-report.get-daily-attendance-report');

//Route::resource('variance-attendance-report','Reports\VarianceAttendanceReportController');

Route::resource('holidaycalendar' ,'HolidayCalendar\HolidayCalendarController');

Route::resource('notification','NotificationController\NotificationController');
Route::get('notification-list','NotificationController\NotificationController@showNotification');
Route::get('notificationlistdata','NotificationController\NotificationController@notificationlistdata')->name('notificationlistdata');
Route::get('particular-notification/{id}','NotificationController\NotificationController@showParticularNotification');
Route::get('mark-all-as-read','NotificationController\NotificationController@markAllAsRead');
Route::get('notifications-ajax','NotificationController\NotificationController@notificationsAjax');

Route::resource('update-attendance','Attendance\UpdateAttendanceController');

Route::POST('update-attendance/update-attendance-detail' ,'Attendance\UpdateAttendanceController@updateAttendanceDetail')->name('update-attendance-detail');

Route::resource('request-attendance','Attendance\RequestAttendanceController');

Route::POST('request-attendance/request-attendance-detail' ,'Attendance\RequestAttendanceController@requestAttendanceDetail')->name('request-attendance-detail');

Route::resource('approve-attendance','Attendance\ApproveAttendanceController');

Route::PUT('approve-reject-attendance-from-home-page/{id}', 'Attendance\ApproveAttendanceController@updateFromHomePage');
Route::resource('attendance-reason','Attendance\AttendanceReasonController');
Route::get('get-approve-attendance', 'Dashboard\HomeController@getAttendanceRequest')->name('get-approve-attendance');
Route::get('get-leave-request', 'Dashboard\HomeController@getLeaveRequest')->name('get-leave-attendance');

Route::group(['middleware' => 'leavepermission'],function(){
  Route::resource('apply-leave','Leave\ApplyLeaveController');
  Route::resource('view-leave-balance','Leave\LeaveBalanceController');
});

Route::POST('apply-leave/get-leave-count' ,'Leave\ApplyLeaveController@getLeaveCount')->name('get-leave-count');
Route::resource('leave-report','Leave\LeaveReportController');
Route::PUT('approve-reject-leave-from-home-page/{id}', 'Leave\LeaveReportController@updateFromHomePage');
Route::resource('admin-apply-leave','Leave\AdminApplyLeaveController');
Route::POST('admin-apply-leave/admin-get-leave-count' ,'Leave\AdminApplyLeaveController@adminGetLeaveCount')->name('admin-get-leave-count');
Route::get('manage-leave-request/{id}' ,'Leave\AdminLeaveReportController@editapplyleave')->name('manage-leave-request');
Route::post('updatemanageleave' ,'Leave\AdminLeaveReportController@updatemanageleave')->name('updatemanageleave');
Route::resource('admin-leave-report','Leave\AdminLeaveReportController');
Route::Post('admin-leave-report/select-leave-report','Leave\AdminLeaveReportController@selectleaveReport')->name('select-leave-report');
// Route::resource('roster','Roster\RosterController');
});
Route::resource('show-teams','ScheduleManagement\ScheduleController');
Route::resource('scheduleshow','ScheduleManagement\ScheduleController');
Route::resource('add-custom-schedule','ScheduleManagement\ScheduleController');
Route::resource('added','ScheduleManagement\ScheduleController');
Route::resource('delete','ScheduleManagement\ScheduleController');
//Route::get('edit-schedule/{scheduleId}/{teamId}','ScheduleManagement\ScheduleController@edit');
Route::resource('edit-schedule','ScheduleManagement\ScheduleController');
Route::get('change-status/{id}','ScheduleManagement\ScheduleController@ChangeStatus');
Route::get('change-default/{id}','ScheduleManagement\ScheduleController@ChangeDefault');
Route::POST('scheduleshow/change-default-schedule/{scheduleId}', 'ScheduleManagement\ScheduleController@ChangeDefaultSchedule')->name('change-default-schedule');
Route::POST('schedule-calendar-data/{teamId}', 'ScheduleManagement\ViewScheduleController@fetchCalendarData')->name('schedule-calendar-data');
Route::POST('my-schedule-calendar-data', 'ScheduleManagement\MyScheduleController@fetchCalendarData')->name('my-schedule-calendar-data');
Route::resource('view-show-teams','ScheduleManagement\ViewScheduleController');
Route::resource('view-team-schedule','ScheduleManagement\ViewScheduleController');
Route::resource('my-schedule','ScheduleManagement\MyScheduleController');
Route::resource('setting','Setting\GeneralSettingController');

//clear chache
Route::get('/clear-cache', function() {
  $exitCode = Artisan::call('config:clear');
  $exitCode = Artisan::call('cache:clear');
  $exitCode = Artisan::call('config:cache');
  $exitCode = Artisan::call('key:generate');
  return 'DONE'; //Return anything
});

Route::get('/create-storage-mklink', function() {
  $exitCode = Artisan::call('storage:link');
  return 'DONE LINKING'; //Return anything
});

// Route::get('/migrate-force', function() {
//     $exitCode = Artisan::call('migrate --force');
//     return 'migrate'; //Return anything
// });

Route::resource('user-details','Admin\UserDetails\UserDetailController');

Route::get('userlistdata','Admin\UserDetails\UserDetailController@userlistdata')->name('userlistdata');
Route::get('deleteuser/{id}','Admin\UserDetails\UserDetailController@destroy')->name('deleteuser');
Route::resource('user-tab','Admin\UserDetails\UserTabController');

Route::Post('user-tab/mobile-number','Admin\UserDetails\UserTabController@mobileNumber')->name('user-tab.mobile-number');

Route::Post('user-tab/email','Admin\UserDetails\UserTabController@email')->name('user-tab.email');

Route::Post('team-tab/biometric','Admin\UserDetails\TeamController@biometric')->name('team-tab.biometric');

Route::Post('team-tab/employee-id','Admin\UserDetails\TeamController@employeeId')->name('team-tab.employee-id');


//get team
Route::Post('team-tab/get-teams','Admin\UserDetails\TeamController@getTeams');
//get users
Route::Post('team-tab/get-users','Admin\UserDetails\TeamController@getUsers');
//get primary reporting managers
Route::Post('team-tab/get-primary-reporting-managers','Admin\UserDetails\TeamController@getPrimaryReportingManagers');

Route::resource('team-tab','Admin\UserDetails\TeamController');
Route::resource('address-detail-tab','Admin\UserDetails\AddressDetailController');
Route::resource('bank-detail-tab','Admin\UserDetails\BankDetailController');
Route::resource('document-tab','Admin\UserDetails\DocumentController');
Route::resource('setting-tab','Admin\UserDetails\SettingController');


Route::get('/autologin/{user}', function (User $user) {
    Auth::login($user);
    return redirect()->home();
  })->name('autologin')->middleware('signed');

