<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\Api\PluraloPublicController;
use App\Http\Controllers\Api\BookingAttemptController;
use App\Http\Controllers\Api\VivaPaymentController;
use App\Http\Controllers\Api\VivaWebhookController;
use App\Http\Controllers\Api\OctoPublicController;
use App\Http\Controllers\Api\PycLeadController;
use App\Http\Controllers\Api\PycDirectCheckoutController;
use App\Http\Controllers\Api\FiscalSimulationController;
use App\Http\Controllers\Api\MoloniController;
use App\Http\Controllers\Api\AccountingPaymentController;

Route::post(
    '/viva/webhook',
    [VivaWebhookController::class, 'handle']
);

Route::post(
    '/booking-attempt/{id}/payment',
    [VivaPaymentController::class, 'create']
);

Route::get('/pluralo/products', [PluraloPublicController::class, 'products']);

Route::get(
    '/pluralo/products/{productId}',
    [PluraloPublicController::class, 'productDetail']
);

Route::get(
    '/pluralo/products/{productId}/availability',
    [PluraloPublicController::class, 'availability']
);

Route::post(
    '/booking-attempt',
    [BookingAttemptController::class, 'store']
);

Route::get('/octo/products', [OctoPublicController::class, 'products']);

Route::get(
    '/octo/products/{productId}/availability',
    [OctoPublicController::class, 'availability']
);

Route::post('/pyc/lead', [PycLeadController::class, 'store']);

Route::get(
    '/pyc/direct-checkout/slots',
    [PycDirectCheckoutController::class, 'slots']
);

/* Route API MOLONI */


Route::get('/moloni/connect', [MoloniController::class, 'connect']);
Route::get('/moloni/callback', [MoloniController::class, 'callback']);
Route::get('/moloni/status', [MoloniController::class, 'status']);

/*route API Simulador Fiscal
 */

Route::get(
    '/fiscal/bookings/{bookingId}/simulation',
    [FiscalSimulationController::class, 'simulation']
);

Route::get(
    '/fiscal/bookings/{bookingId}/customer-view',
    [FiscalSimulationController::class, 'customerView']
);
Route::get(
    '/fiscal/bookings/{bookingId}/document-preview',
    [FiscalSimulationController::class, 'documentPreview']
);
Route::get(
    '/fiscal/bookings/{bookingId}/readiness',
    [FiscalSimulationController::class, 'readiness']
);
Route::post(
    '/fiscal/bookings/{bookingId}/internal-document',
    [FiscalSimulationController::class, 'generateInternalDocument']
);
Route::post(
    '/fiscal/documents/{documentId}/validate',
    [FiscalSimulationController::class, 'validateInternalDocument']
);
Route::get('/moloni/countries', [MoloniController::class, 'countries']);

Route::post(
    '/moloni/customers/from-contact/{contactId}',
    [MoloniController::class, 'createCustomerFromContact']
);

/* route metodo diagnostico */
                             
Route::get(
    '/moloni/customers/test',
    [MoloniController::class, 'customerSearch']
);
Route::get(
    '/moloni/document-sets',
    [MoloniController::class, 'documentSets']
);
Route::get(
    '/moloni/document-types',
    [MoloniController::class, 'documentTypes']
);
/* fim da route metodo diagnostico */
Route::post(
    '/fiscal/documents/{documentId}/issue-moloni',
    [FiscalSimulationController::class, 'issueMoloniDocument']
);
Route::get(
    '/moloni/invoices/{moloniDocumentId}',
    [MoloniController::class, 'invoiceDetails']
);
Route::get(
    '/moloni/invoices/{moloniDocumentId}/pdf',
    [MoloniController::class, 'invoicePdf']
);
Route::get(
    '/moloni/invoice-receipts/{moloniDocumentId}',
    [MoloniController::class, 'invoiceReceiptDetails']
);

Route::get(
    '/moloni/invoice-receipts/{moloniDocumentId}/pdf',
    [MoloniController::class, 'invoiceReceiptPdf']
);
Route::post(
    '/accounting/payments/register',
    [AccountingPaymentController::class, 'register']
);
Route::post(
    '/accounting/receipts/{id}/allow-moloni',
    [AccountingPaymentController::class, 'allowMoloni']
);
Route::post(
    '/accounting/receipts/{id}/issue-moloni',
    [AccountingPaymentController::class, 'issueMoloniReceipt']
);

Route::get(
	'/moloni/payment-methods',
    [MoloniController::class, 'paymentMethods']
);
Route::get(
	'/moloni/document-sets',
	[MoloniController::class, 'documentSets']
);
Route::post(
	'/accounting/receipts/{id}/archive-pdf',
	[AccountingPaymentController::class, 'archiveMoloniReceiptPdf']
);
