<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\MeetingScheduleController;
use App\Http\Controllers\MemberController;
use App\Http\Controllers\VisitorController;
use App\Http\Controllers\MembershipPaymentController;
use App\Http\Controllers\ReportController;

Route::get('/', [LoginController::class, 'showLogin'])->name('login');
Route::get('/login', [LoginController::class, 'showLogin'])->name('login');
Route::post('/login', [LoginController::class, 'login'])->name('login.submit');

Route::get('/logout', [LoginController::class, 'logout'])->name('logout');

Route::middleware('auth')->group(function () {

    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');

    Route::get('/visitors', [VisitorController::class, 'index'])->name('visitors');
    Route::post('/visitors', [VisitorController::class, 'store'])->name('visitors.store');
    Route::post('/visitor/payment/{visitor}', [VisitorController::class, 'update'])->name('visitors.update');
    Route::get('/api/visitors/meeting-by-date', [VisitorController::class, 'getMeetingByDate'])->name('api.visitors.meeting-by-date');

    Route::get('/members', [MemberController::class, 'index'])->name('members');
    Route::post('/members', [MemberController::class, 'store'])->name('members.store');
    Route::get('/members/payment/{memberId}', [MemberController::class, 'payment'])->name('members.payment');
    Route::post('/members/payment/store', [MemberController::class, 'paymentStore'])->name('members.payment.store');
    Route::get('/payment/calculate-end-month', [MemberController::class, 'calculateEndMonth'])->name('payment.calculate-end-month');

    Route::get('/meeting-schedules', [MeetingScheduleController::class, 'index'])->name('meeting-schedules.index');
    Route::get('/meeting-schedules/upcoming', [MeetingScheduleController::class, 'upcoming'])->name('meeting-schedules.upcoming');
    Route::get('/meeting-schedules/completed', [MeetingScheduleController::class, 'completed'])->name('meeting-schedules.completed');
    Route::get('/meeting-schedules/cancelled', [MeetingScheduleController::class, 'cancelled'])->name('meeting-schedules.cancelled');
    Route::post('/meeting-schedules', [MeetingScheduleController::class, 'store'])->name('meeting-schedules.store');
    Route::post('/meeting-schedules/{id}/status', [MeetingScheduleController::class, 'updateStatus']);

    Route::get('/reports', [ReportController::class, 'index'])->name('reports.index');
    Route::post('/reports', [ReportController::class, 'index'])->name('reports.generate');
    Route::post('/reports/download', [ReportController::class, 'download'])->name('reports.download');
});
