<?php

// Routes for account.

// Guard routes for invoice
Route::prefix('{guard}/account')->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 coa
Route::prefix('{guard}/account')->group(function () {

    Route::get('coa/report/{report}', 'CoaReportController');
    Route::patch('coa/actions/{action}', 'CoaActionsController');
    Route::patch('coa/action/{coa}/{action}', 'CoaActionController');
    Route::patch('coa/workflow/{coa}/{transition}', 'CoaWorkflowController');
    Route::resource('coa', 'CoaResourceController');
});

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

    Route::patch('payrec/actions/{action}', 'PayrecActionsController');
    Route::patch('payrec/action/{payrec}/{action}', 'PayrecActionController');
    Route::patch('payrec/workflow/{payrec}/{transition}', 'PayrecWorkflowController');
    Route::resource('payrec', 'PayrecResourceController');
});

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

    Route::resource('payrec_detail', 'PayrecDetailResourceController');
});

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

    Route::resource('payrec_receipts', 'PayrecReceiptsResourceController');
});

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

    Route::resource('invoice_detail', 'InvoiceDetailResourceController');
});

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

    Route::patch('product/actions/{action}', 'ProductActionsController');
    Route::patch('product/action/{product}/{action}', 'ProductActionController');
    Route::patch('product/workflow/{product}/{transition}', 'ProductWorkflowController');
    Route::resource('product', 'ProductResourceController');
});

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

    Route::patch('costcenter/actions/{action}', 'CostcenterActionsController');
    Route::patch('costcenter/action/{costcenter}/{action}', 'CostcenterActionController');
    Route::patch('costcenter/workflow/{costcenter}/{transition}', 'CostcenterWorkflowController');
    Route::resource('costcenter', 'CostcenterResourceController');
});

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

    Route::patch('account/actions/{action}', 'AccountActionsController');
    Route::patch('account/action/{account}/{action}', 'AccountActionController');
    Route::patch('account/workflow/{account}/{transition}', 'AccountWorkflowController');
    Route::resource('account', 'AccountResourceController');
});

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

    Route::patch('drcrnote/actions/{action}', 'DrcrnoteActionsController');
    Route::patch('drcrnote/action/{drcrnote}/{action}', 'DrcrnoteActionController');
    Route::patch('drcrnote/workflow/{drcrnote}/{transition}', 'DrcrnoteWorkflowController');
    Route::resource('drcrnote', 'DrcrnoteResourceController');
});

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

    Route::patch('drcrnote_detail/actions/{action}', 'DrcrnoteDetailActionsController');
    Route::patch('drcrnote_detail/action/{drcrnote_detail}/{action}', 'DrcrnoteDetailActionController');
    Route::patch('drcrnote_detail/workflow/{drcrnote_detail}/{transition}', 'DrcrnoteDetailWorkflowController');
    Route::resource('drcrnote_detail', 'DrcrnoteDetailResourceController');
});

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

    Route::patch('bank/actions/{action}', 'BankActionsController');
    Route::patch('bank/action/{bank}/{action}', 'BankActionController');
    Route::patch('bank/workflow/{bank}/{transition}', 'BankWorkflowController');
    Route::resource('bank', 'BankResourceController');
});

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

    Route::patch('customer/actions/{action}', 'CustomerActionsController');
    Route::patch('customer/action/{customer}/{action}', 'CustomerActionController');
    Route::patch('customer/workflow/{customer}/{transition}', 'CustomerWorkflowController');
    Route::resource('customer', 'CustomerResourceController');
});

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

    Route::resource('acknowledgement', 'AcknowledgementResourceController');
});

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

    Route::patch('acknowledgement_detail/actions/{action}', 'AcknowledgementDetailActionsController');
    Route::patch('acknowledgement_detail/action/{acknowledgement_detail}/{action}', 'AcknowledgementDetailActionController');
    Route::patch('acknowledgement_detail/workflow/{acknowledgement_detail}/{transition}', 'AcknowledgementDetailWorkflowController');
    Route::resource('acknowledgement_detail', 'AcknowledgementDetailResourceController');
});

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

    Route::resource('allocation', 'AllocationResourceController');
});

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

    Route::get('journal/report/{report}', 'JournalReportController');
    Route::patch('journal/actions/{action}', 'JournalActionsController');
    Route::patch('journal/action/{journal}/{action}', 'JournalActionController');
    Route::patch('journal/workflow/{journal}/{transition}', 'JournalWorkflowController');
    Route::resource('journal', 'JournalResourceController');
});

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

    Route::resource('journal_detail', 'JournalDetailResourceController');
});

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

    Route::resource('ledger', 'LedgerResourceController');
});

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

    Route::resource('transaction', 'TransactionResourceController');
});

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

    Route::patch('transactions_detail/actions/{action}', 'TransactionsDetailActionsController');
    Route::patch('transactions_detail/action/{transactions_detail}/{action}', 'TransactionsDetailActionController');
    Route::patch('transactions_detail/workflow/{transactions_detail}/{transition}', 'TransactionsDetailWorkflowController');
    Route::resource('transactions_detail', 'TransactionsDetailResourceController');
});



// Public routes for account
Route::get('accounts/', 'AccountPublicController@index');
Route::get('account/{slug?}', 'AccountPublicController@show');