<?php

use App\Http\Controllers\Cultura\Credenciamento\{
  ConvocacoesController,
  EventosController,
  MusicosArquivosController,  
  MusicosChamadosController,  
  MusicosController,  
  MusicosDadosPessoaisController,  
  MusicosDocumentosController,    
  MusicosEnderecoController, 
  MusicosCarteirinhaController, 
  Perfil\MusicosPerfilController
};


Route::view('credenciamento/musicos', "paginas.cultura.credenciamentoMusicos")->name("cultura.credenciamentoMusicos");

Route::group(['prefix' => 'conta-angra/credenciamento/musicos', 'as' => 'admin.cultura.', 'middleware' => ['auth', 'contaAngra']], function () {
    Route::view('institucional', "paginas.cultura.credenciamentoMusicos")->name("credenciamentoMusicos.perfil.institucional");
    Route::get('novo', [MusicosPerfilController::class, 'novoCredenciamento'])->name('credenciamentoMusicos.perfil.novo');
    Route::post('novo', [MusicosPerfilController::class, 'storeNovoCredenciamento'])->name('credenciamentoMusicos.perfil.storeNovo');
    Route::resource('/', MusicosPerfilController::class)->names('credenciamentoMusicos.perfil')
            ->parameters(['' => 'musico']);

    Route::get('{musico}/dados/pessoais', [MusicosPerfilController::class, 'dadosPessoais'])->name('credenciamentoMusicos.perfil.dadosPessoais');
    Route::get('{musico}/documentos', [MusicosPerfilController::class, 'documentos'])->name('credenciamentoMusicos.perfil.documentos');
    Route::post('{musico}/documentos', [MusicosPerfilController::class, 'updateDocumentos'])->name('credenciamentoMusicos.perfil.documentos.update');
    Route::post('{musico}/documentos/{documento}/upload', [MusicosPerfilController::class, 'uploadDocumento'])->name('credenciamentoMusicos.perfil.documentos.upload');
    Route::get('{musico}/endereco', [MusicosPerfilController::class, 'endereco'])->name('credenciamentoMusicos.perfil.endereco');
    Route::get('{musico}/credenciamento', [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, 'index'])->name('credenciamentoMusicos.perfil.credenciamento');
    Route::post('{musico}/credenciamento', [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, 'update'])->name('credenciamentoMusicos.perfil.credenciamento.update');
    Route::get('{musico}/integrantes', [\App\Http\Controllers\Cultura\Credenciamento\MusicosIntegrantesController::class, 'index'])->name('credenciamentoMusicos.perfil.integrantes');
    Route::post('{musico}/integrantes', [\App\Http\Controllers\Cultura\Credenciamento\MusicosIntegrantesController::class, 'update'])->name('credenciamentoMusicos.perfil.integrantes.update');
    Route::get('{musico}/arquivos', [MusicosPerfilController::class, 'arquivos'])->name('credenciamentoMusicos.perfil.arquivos');
    Route::get('{musico}/convocacoes', [MusicosPerfilController::class, 'convocacoes'])->name('credenciamentoMusicos.perfil.convocacoes');
    Route::get('{musico}/chamados', [MusicosChamadosController::class, 'index'])->name('credenciamentoMusicos.perfil.chamados.index');
    Route::get('{musico}/chamados/create', [MusicosChamadosController::class, 'create'])->name('credenciamentoMusicos.perfil.chamados.create');
    Route::post('{musico}/chamados', [MusicosChamadosController::class, 'store'])->name('credenciamentoMusicos.perfil.chamados.store');
    Route::get('{musico}/carteirinha', [MusicosCarteirinhaController::class, 'index'])->name('credenciamentoMusicos.perfil.carteirinha');
});

Route::group(['prefix' => 'admin/credenciamento', 'as' => 'admin.cultura.', 'middleware' => ['auth','credenciamentoMusicos']], function () {
    
    Route::match(["get", "post"], 'musicos/verify', [MusicosController::class, "verify"])->name("credenciamentoMusicos.verify");
    Route::resource('musicos', MusicosController::class)
            ->names("credenciamentoMusicos")
            ->parameters(['musicos' => 'musico']);
    
    Route::get("musicos/{musico}/dados/pessoais", [MusicosDadosPessoaisController::class, "index"])->name("credenciamentoMusicos.dadosPessoais");
    Route::post("musicos/{musico}/dados/pessoais", [MusicosDadosPessoaisController::class, "update"])->name("credenciamentoMusicos.dadosPessoais.update");
    
    Route::get("musicos/{musico}/documentos", [MusicosDocumentosController::class, "index"])->name("credenciamentoMusicos.documentos");
    Route::post("musicos/{musico}/documentos", [MusicosDocumentosController::class, "update"])->name("credenciamentoMusicos.documentos.update");
    Route::post("musicos/{musico}/documentos/{documento}/upload", [MusicosDocumentosController::class, "uploadDocumento"])->name("credenciamentoMusicos.documentos.upload");
    Route::post("musicos/{musico}/documentos/{documento}/avaliar", [MusicosDocumentosController::class, "avaliarDocumento"])->name("credenciamentoMusicos.documentos.avaliar");
    
    Route::get("musicos/{musico}/endereco", [MusicosEnderecoController::class, "index"])->name("credenciamentoMusicos.endereco");
    Route::post("musicos/{musico}/endereco", [MusicosEnderecoController::class, "update"])->name("credenciamentoMusicos.endereco.update");
    
    Route::get("musicos/{musico}/arquivos", [MusicosArquivosController::class, "index"])->name("credenciamentoMusicos.arquivos");
    Route::post("musicos/{musico}/arquivos", [MusicosArquivosController::class, "update"])->name("credenciamentoMusicos.arquivos.update");
    
    Route::get("musicos/{musico}/credenciamento", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "index"])->name("credenciamentoMusicos.credenciamento");
    Route::post("musicos/{musico}/credenciamento", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "update"])->name("credenciamentoMusicos.credenciamento.update");
    Route::get("musicos/{musico}/empresas/list", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasList"])->name("credenciamentoMusicos.empresas.list");
    Route::post("musicos/{musico}/empresas/verify", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasVerify"])->name("credenciamentoMusicos.empresas.verify");
    Route::post("musicos/{musico}/empresas/link", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasLink"])->name("credenciamentoMusicos.empresas.link");
    Route::post("musicos/{musico}/empresas/store", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasStore"])->name("credenciamentoMusicos.empresas.store");
    Route::post("musicos/{musico}/empresas/get", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasGet"])->name("credenciamentoMusicos.empresas.get");
    Route::post("musicos/{musico}/empresas/update", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasUpdate"])->name("credenciamentoMusicos.empresas.update");
    Route::post("musicos/{musico}/empresas/detach", [\App\Http\Controllers\Cultura\Credenciamento\MusicosCredenciamentoController::class, "empresasDetach"])->name("credenciamentoMusicos.empresas.detach");

    Route::get("musicos/{musico}/integrantes", [\App\Http\Controllers\Cultura\Credenciamento\MusicosIntegrantesController::class, "index"])->name("credenciamentoMusicos.integrantes");
    Route::post("musicos/{musico}/integrantes", [\App\Http\Controllers\Cultura\Credenciamento\MusicosIntegrantesController::class, "update"])->name("credenciamentoMusicos.integrantes.update");
    
    Route::resource('musicos.chamados', MusicosChamadosController::class)
            ->names("credenciamentoMusicos.chamados")
            ->parameters(['musico' => 'musico']);

    Route::get('eventos', [EventosController::class, 'index'])->name('credenciamentoMusicos.eventos.index');
    Route::get('eventos/create', [EventosController::class, 'create'])->name('credenciamentoMusicos.eventos.create');
    Route::post('eventos', [EventosController::class, 'store'])->name('credenciamentoMusicos.eventos.store');
    Route::get('eventos/{evento}/edit', [EventosController::class, 'edit'])->name('credenciamentoMusicos.eventos.edit');
    Route::put('eventos/{evento}', [EventosController::class, 'update'])->name('credenciamentoMusicos.eventos.update');
    Route::delete('eventos/{evento}', [EventosController::class, 'destroy'])->name('credenciamentoMusicos.eventos.destroy');

    Route::get('musicos/{musico}/convocacoes', [ConvocacoesController::class, 'historico'])->name('credenciamentoMusicos.convocacoes.historico');
    Route::get('convocacoes', [ConvocacoesController::class, 'index'])->name('credenciamentoMusicos.convocacoes.index');
    Route::get('convocacoes/evento/{evento}', [ConvocacoesController::class, 'show'])->name('credenciamentoMusicos.convocacoes.show');
    Route::post('convocacoes/evento/{evento}', [ConvocacoesController::class, 'store'])->name('credenciamentoMusicos.convocacoes.store');
    Route::patch('convocacoes/{convocacao}/status', [ConvocacoesController::class, 'updateStatus'])->name('credenciamentoMusicos.convocacoes.updateStatus');
    Route::delete('convocacoes/{convocacao}', [ConvocacoesController::class, 'destroy'])->name('credenciamentoMusicos.convocacoes.destroy');
    
    Route::delete('musicos/{musico}/destroy/{label}/arquivo', [MusicosController::class, 'destroyArquivo'])
        ->name('credenciamentoMusicos.destroyArquivo');
    
});
