<?php

use App\Http\Controllers\AuthController;
use App\Http\Controllers\ClosureMessageController;
use App\Http\Controllers\ForecastController;
use App\Http\Controllers\PaymentsController;
use App\Http\Controllers\SubscriberController;
use App\Http\Controllers\TransactionController;
use App\Http\Controllers\UsersController;
use App\Http\Controllers\PriceSetupController;
use App\Models\Forecast;
use App\Models\Helpers\General;
use App\Models\Payment;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Session;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

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

Route::get('data', function () {
    return time() . '-' . Str::random(5);
    $prefixes = ['02', '05', '2332', '2335', '2332'];
    // return Payment::query()->where('phone', '0553255225')->get();
    // return General::validate_lotto_message("Title: abcd --- Banker:28 --- Permutations: 30-21-1")['title'];
    // return General::convert_excel_date(45166);
    // $oneHourAgo = Carbon::now()->subHour();

    // $records = DB::table('password_reset_tokens')
    //         ->where('created_at', '<=', $oneHourAgo)->get();
    //         return $records;
    
    // return General::validate_phone($prefixes, '233553255225');
    // $message = urlencode('Hello world');
    // return view('mail.user_creation');
    // return General::send_lotto_numbers('0553255225', $message);
    //     $incoming_forecaast = Forecast::query()->where('schedule', now()->toDateString())->latest()->first();
    // return $incoming_forecaast;
    //     return route('login');
    //     return General::validate_phone($prefixes, '0253255225');
    //     return now();
    //     $banker = '93';
    // if (General::is_a_number($banker)) {
    //     return 'The number is within range';
    // }
    // else {
    //     return 'Invalid number';
    // }
    // $abcd = ['names' => 'John', 'age'=>21];
    // Session::put('personal', $abcd);
    // session(['two_sure' => $abcd]);

    // return session('two_sure')['names'];
    General::logError('JUST A TRY', 'Hello, this is a trial test', 'web.php file');
        session()->flush();
    $lotto_numbers = "2-21-90";
    $output =  General::check_two_sure($lotto_numbers);
    if (count($output) > 0) {
        return 'Sorry, the lotto numbers should be only numbers between 0 and 90';
    } else {
        return 'Perfect';
    }
});

Route::get('/', [AuthController::class, 'showLoginPage'])->name('login');
Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout');

Route::prefix('admin')->group(function () {
    //Authentication Group
    Route::post('/login', [AuthController::class, 'mainLogin'])->name('main.login');
    Route::get('/dashboard', [AuthController::class, 'dashboard'])->name('admin.dashboard');
    Route::get('/password/change-dashboard', [AuthController::class, 'admin_password_page'])->name('admin.password.page');
    Route::post('/password/change-dashboard', [AuthController::class, 'admin_password_change'])->name('admin.password.change');


    //FORECAST GROUP
    Route::post('import-forecast', [ForecastController::class, 'import_forecast'])->name('forecast.import');
    Route::get('/incoming-forecast', [ForecastController::class, 'incoming_forecast'])->name('forecast.incoming');
    Route::get('/past-forecast', [ForecastController::class, 'past_forecast'])->name('forecast.past');
    Route::get('/create-forecast', [ForecastController::class, 'showCreatePage'])->name('forecast.create');
    Route::post('/store-forecast', [ForecastController::class, 'createForecast'])->name('forecast.store');
    Route::post('forecast/create/new_directive', [ForecastController::class, 'createForecast_new_directive'])->name('forecast.create.new_directive');
    Route::get('/delete-forecast/{id}', [ForecastController::class, 'delete_forecast'])->name('forecast.delete');
    Route::get('/edit-forecast-page/{id}', [ForecastController::class, 'edit_forecast_page'])->name('forecast.edit.page');
    Route::post('/edit-forecast/{id}', [ForecastController::class, 'edit_forecast'])->name('forecast.store.edit');
    Route::post('/edit-forecast/new_directive/{id}', [ForecastController::class, 'editForecast_new_directive'])->name('forecast.store.edit.new_directive');

    //USERS GROUP
    Route::get('/users', [UsersController::class, 'index'])->name('users');
    Route::get('users/show-create', [UsersController::class, 'show_create'])->name('users.show.create');
    Route::post('users/store', [UsersController::class, 'store_user'])->name('users.store');
    Route::get('users/show/edit/{id}', [UsersController::class, 'show_edit'])->name('users.show.edit');
    Route::get('users/delete/{id}', [UsersController::class, 'delete_user'])->name('users.delete');
    Route::post('user/edit/store/{id}', [UsersController::class, 'store_user_edit'])->name('users.store.edit');

    //PASSWORD RESET GROUP
    Route::get('password/reset/page', [AuthController::class, 'password_reset_page'])->name('password.reset.page');
    Route::post('password/reset', [AuthController::class, 'password_reset'])->name('password.reset');
    Route::get('password/change-page/{token}', [AuthController::class, 'password_change_page'])->name('password.change.page');
    Route::post('password/change', [AuthController::class, 'password_change'])->name('password.change');

   
    //SUBSCRIBER GROUP
    // Route::get('subscriber', [SubscriberController::class, 'index'])->name('subscriber');
    // Route::get('subscriber/edit/page/{id}', [SubscriberController::class, 'edit_subscriber_page'])->name('subscriber.edit.page');
    // Route::post('subscriber/edit/{id}', [SubscriberController::class, 'edit_subscriber'])->name('subscriber.edit');
    // Route::get('subscriber/delete/{id}', [SubscriberController::class, 'delete_subscriber'])->name('subscriber.delete');


    //TRANSACTIONS GROUP
    Route::get('transaction', [TransactionController::class, 'index'])->name('transaction');

    //PAYMENTS GROUP
    Route::get('payments', [PaymentsController::class, 'index'])->name('payments');

    //CLOSURE MESSAGE GROUP
    Route::get('closure/message/index', [ClosureMessageController::class, 'index'])->name('closure.message.index');
    Route::get('closure/message/show_create', [ClosureMessageController::class, 'show_create'])->name('closure.message.show.create');
    Route::post('closure/message/create', [ClosureMessageController::class, 'create'])->name('closure.message.create');
    Route::get('closure/message/show_edit/{id}', [ClosureMessageController::class, 'show_edit'])->name('closure.message.show.edit');
    Route::post('closure/message/edit/{id}', [ClosureMessageController::class, 'edit'])->name('closure.message.edit');
    Route::get('closure/message/delete/{id}', [ClosureMessageController::class, 'delete_message'])->name('closure.message.delete');

    //PRICE SETUP GROUP
    Route::get('price_setup', [PriceSetupController::class, 'index'])->name('pricesetup.index');
    Route::get('prices_setup/new_price', [PriceSetupController::class, 'new_price'])->name('pricesetup.new_price');
    Route::post('prices_setup/change_price', [PriceSetupController::class, 'change_price'])->name('pricesetup.change_price');
});
