<?php

// Routes for payment.

// Guard routes for detail
Route::prefix('{guard}/payment')->group(function () {

    Route::get('detail/report/{report}', 'DetailReportController');
    Route::post('detail/exim/{exim}', 'DetailEximController');
    Route::patch('detail/actions/{action}', 'DetailActionsController');
    Route::patch('detail/action/{detail}/{action}', 'DetailActionController');
    Route::patch('detail/workflow/{detail}/{transition}', 'DetailWorkflowController');
    Route::resource('detail', 'DetailResourceController');
});

// Guard routes for refund
Route::prefix('{guard}/payment')->group(function () {

    Route::get('refund/report/{report}', 'RefundReportController');
    Route::post('refund/exim/{exim}', 'RefundEximController');
    Route::patch('refund/actions/{action}', 'RefundActionsController');
    Route::patch('refund/action/{refund}/{action}', 'RefundActionController');
    Route::patch('refund/workflow/{refund}/{transition}', 'RefundWorkflowController');
    Route::resource('refund', 'RefundResourceController');
});

// Guard routes for invoice
Route::prefix('{guard}/payment')->group(function () {

    Route::get('invoice/report/{report}', 'InvoiceReportController');
    Route::post('invoice/exim/{exim}', 'InvoiceEximController');
    Route::patch('invoice/actions/{action}', 'InvoiceActionsController');
    Route::patch('invoice/action/{invoice}/{action}', 'InvoiceActionController');
    Route::patch('invoice/workflow/{invoice}/{transition}', 'InvoiceWorkflowController');
    Route::resource('invoice', 'InvoiceResourceController');
});

// Guard routes for gateway
Route::prefix('{guard}/payment')->group(function () {

    Route::get('gateway/report/{report}', 'GatewayReportController');
    Route::post('gateway/exim/{exim}', 'GatewayEximController');
    Route::patch('gateway/actions/{action}', 'GatewayActionsController');
    Route::patch('gateway/action/{gateway}/{action}', 'GatewayActionController');
    Route::patch('gateway/workflow/{gateway}/{transition}', 'GatewayWorkflowController');
    Route::resource('gateway', 'GatewayResourceController');
});

// Guard routes for payment
Route::prefix('{guard}/payment')->group(function () {

    Route::get('payment/report/{report}', 'PaymentReportController');
    Route::post('payment/exim/{exim}', 'PaymentEximController');
    Route::patch('payment/actions/{action}', 'PaymentActionsController');
    Route::patch('payment/action/{payment}/{action}', 'PaymentActionController');
    Route::patch('payment/workflow/{payment}/{transition}', 'PaymentWorkflowController');
    Route::resource('payment', 'PaymentResourceController');
});



// Public routes for payment
Route::get('payments/', 'PaymentPublicController@index');
Route::get('payment/{slug?}', 'PaymentPublicController@show');