diff --git a/app/Http/Controllers/AproveitamentoController.php b/app/Http/Controllers/AproveitamentoController.php
index 8898202..b16f52a 100644
--- a/app/Http/Controllers/AproveitamentoController.php
+++ b/app/Http/Controllers/AproveitamentoController.php
@@ -2,12 +2,16 @@
namespace App\Http\Controllers;
+use App\Models\Arquivo;
use App\Models\Disciplina;
use App\Models\Equivalencia;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Uspdev\Forms\Form;
use Illuminate\Support\Facades\Validator;
+use Uspdev\Forms\Models\FormDefinition;
+use Uspdev\Forms\Models\FormSubmission;
+use Illuminate\Contracts\View\View;
class AproveitamentoController extends Controller
{
@@ -18,17 +22,17 @@ class AproveitamentoController extends Controller
* gerando o html dinâmicamente a partir da biblioteca de formulários.
* @return \Illuminate\Contracts\View\View
*/
- public function create()
+ public function create(): View
{
$formHtml = app(Form::class)->generateHtml(config('app.initial_form'));
- return view('createReq',['formHtml' => $formHtml]);
+ return view('aproveitamentos.createReq',['formHtml' => $formHtml]);
}
/**
* Gera o validator para os dados de entrada da requisição de equivalencia, com as regras especifícas
* para este tipo de requisição
* @param Request $request
- * @return \Illuminate\Validation\Validator
+ * @return mixed
*/
private static function validate_req(Request $request)
{
@@ -59,42 +63,29 @@ private static function validate_req(Request $request)
}
/**
- * Função que persiste os dados de uma requisição de aproveitamento
- * na tabela de disciplinas e também na tabela de equivalência
+ * Função auxiliar para criar registros de equivalência no banco de dados
* @param Request $request
- * @return \Illuminate\Http\RedirectResponse
+ * @param FormSubmission $submission
+ * @return array{eq_group: int, modo: string, req_name: string|null}
*/
- public function store(Request $request)
+ private static function create_req(Request $request, FormSubmission $submission)
{
- // Transforma os semestres da disciplina cursada do formato ordinal (1° ou 2°) para inteiro (1 ou 2)
- for($i = 1; $i < 4; $i++)
- {
- if(!is_null($request->input('semestre_dis' . $i)))
- {$request->merge(['semestre_dis' . $i => (int)$request->input('semestre_dis' . $i)]);}
- }
-
- // Gera o validator
- $validator = static::validate_req($request);
-
- // Caso alguma falha seja encontrada, retorna com os erros
- if($validator->fails())
- {
- return redirect()->back()->withErrors($validator)->withInput();
- }
-
// ID do usuário que fez a requisição
- $user_id = Auth::user()->id;
+ $user_id = $request->user()->id;
+
+ // TODO - Ver o motivo da 'duplicação' do file e corrigir par não ter campo vazio
+ $sub_data = $submission->data;
// Dados de entrada
- $request = $request->input();
+ $input = $request->input();
// Próximo grupo de equivalências do banco de dados
$eq_group = Equivalencia::proximoGrupo();
// Salva a disciplina requerida no banco de dados de disciplinas e cria um objeto para referencia
$req_dis = Disciplina::create([
- 'coddis' => $request['coddis4'],
- 'nomdis' => $request['disciplina4'],
+ 'coddis' => $input['coddis4'],
+ 'nomdis' => $input['disciplina4'],
'ies' => 'USP',
'criado_por_id' => $user_id,
'alterado_por_id' => $user_id,
@@ -104,34 +95,329 @@ public function store(Request $request)
for($i = 1; $i < 4; $i++)
{
// Verifica se a disciplina foi preenchida (coddis{$i} preenchido)
- if(!empty($request['coddis' . $i]))
+ if(!empty($input['coddis' . $i]))
{
// Salva a i-ésima disciplina no banco de dados de disciplinas e gera um objeto para referência
$cur_dis = Disciplina::create([
- 'coddis' => $request['coddis' . $i],
- 'nomdis' => $request['disciplina' . $i],
- 'creditos' => $request['credit_dis' . $i],
- 'carga_horaria' => $request['cghr_dis' . $i],
- 'ies' => $request['unidade_ies'],
- 'ano' => $request['ano_dis' . $i],
- 'semestre' => $request['semestre_dis' . $i],
- 'frequencia' => $request['freq_dis' . $i],
- 'nota' => $request['nota_dis' . $i],
- 'criado_por_id' => $cur_dis->alterado_por_id = $user_id,
+ 'coddis' => $input['coddis' . $i],
+ 'nomdis' => $input['disciplina' . $i],
+ 'creditos' => $input['credit_dis' . $i],
+ 'carga_horaria' => $input['cghr_dis' . $i],
+ 'ies' => $input['unidade_ies'],
+ 'ano' => $input['ano_dis' . $i],
+ 'semestre' => $input['semestre_dis' . $i],
+ 'frequencia' => $input['freq_dis' . $i],
+ 'nota' => $input['nota_dis' . $i],
+ 'criado_por_id' => $user_id,
+ 'alterado_por_id' => $user_id,
]);
// Salva a relação entre a i-ésima disciplina cursada e a disciplina requerida na tabela
// de equivalências.
- Equivalencia::create([
+ $eq = Equivalencia::create([
'grupo' => $eq_group,
'requerida_id' => $req_dis->id,
'cursada_id' => $cur_dis->id,
'criado_por_id' => $user_id,
'alterado_por_id'=> $user_id,
- ]);
+ 'submission_id' => $submission->id,
+ ]);
+
+ // Registra o histórico escolar do aluno no primeiro registro de equivalência na tabela de arquivos
+ if($i == 1)
+ {
+ Arquivo::create([
+ 'equivalencia_id' => $eq->id,
+ 'tipo' => 'historico',
+ 'nome' => $sub_data['hist_esc']['original_name'],
+ 'path' => $sub_data['hist_esc']['stored_path']
+ ]);
+ }
+
+ // Registra o arquivos da ementa disciplina cursada na tabela de arquivos
+ Arquivo::create([
+ 'equivalencia_id' => $eq->id,
+ 'tipo' => 'ementa',
+ 'nome' => $sub_data['file_dis' .$i]['original_name'],
+ 'path' => $sub_data['file_dis' .$i]['stored_path'],
+ ]);
+ }
+ }
+
+ return ['eq_group' => $eq_group, 'req_name' => $req_dis->nomdis, 'modo' => 'criado'];
+ }
+
+ /**
+ * Função auxiliar para atualizar os registros existentes após mudanças feitas pelo usuário
+ * @param Request $request
+ * @param FormSubmission $submission
+ * @return array{eq_group: int|mixed, modo: string, req_name: string|null|null}
+ */
+ private static function update_req(Request $request, FormSubmission $submission)
+ {
+ // ID do usuário que fez a requisição
+ $user_id = $request->user()->id;
+
+ // TODO - Ver o motivo da 'duplicação' do file e corrigir par não ter campo vazio
+ $sub_data = $submission->data;
+
+ // Recupera o grupo de equivalências atrelado à submissão
+ $eqs = Equivalencia::where('submission_id', $request->id)->get();
+ if(empty($eqs)){return [];}
+
+ // Dados de entrada
+ $input = $request->input();
+
+ // Recupera a disciplina requerida do pedido de aproveitamento
+ $req_dis = Disciplina::where('id',$eqs[0]->requerida_id)->firstOrFail();
+ $eq_group = $eqs[0]->grupo;
+
+ // Atualiza o registro da disciplina requerida
+ $req_dis->update([
+ 'coddis' => $input['coddis4'],
+ 'nomdis' => $input['disciplina4'],
+ 'ies' => 'USP',
+ 'alterado_por_id' => $user_id,
+ ]);
+
+ // Percorre todos os registros de equivalencia (todas as disciplinas cursadas)
+ for($i = 0; $i < sizeof($eqs); $i++)
+ {
+ // Recupera a disciplina cursada, e atualiza de acordo com as modificações
+ $cur_dis = Disciplina::where('id', $eqs[$i]->cursada_id)->firstOrFail();
+ $cur_dis->update([
+ 'coddis' => $input['coddis' . ($i + 1)],
+ 'nomdis' => $input['disciplina' . ($i + 1)],
+ 'creditos' => $input['credit_dis' . ($i + 1)],
+ 'carga_horaria' => $input['cghr_dis' . ($i + 1)],
+ 'ies' => $input['unidade_ies'],
+ 'ano' => $input['ano_dis' . ($i + 1)],
+ 'semestre' => $input['semestre_dis' . ($i + 1)],
+ 'frequencia' => $input['freq_dis' . ($i + 1)],
+ 'nota' => $input['nota_dis' . ($i + 1)],
+ 'alterado_por_id' => $user_id,
+ ]);
+
+ // Recupera os arquivos atrelados à um registro de equivalência
+ $files = Arquivo::where('equivalencia_id', $eqs[$i]->id)->get();
+ foreach($files as $file)
+ {
+ // Verifica se é histŕoico ou ementa e atualiza com os respectivos dados de entrada
+ $field = '';
+ if($file->tipo == 'historico')
+ {
+ $field = 'hist_esc';
+ }
+ else{ $field = 'file_dis' . ($i + 1); }
+
+ $file->update([
+ 'nome' => $sub_data[$field]['original_name'],
+ 'path' => $sub_data[$field]['stored_path'],
+ ]);
+ }
+ }
+
+ // Retorna um vetor com dados relevantes para o redirect
+ return ['eq_group' => $eq_group, 'req_name' => $req_dis->nomdis, 'modo' => 'atualizado'];
+ }
+
+ /**
+ * Função que persiste os dados de uma requisição de aproveitamento
+ * na tabela de disciplinas e também na tabela de equivalência
+ * @param Request $request
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function store(Request $request)
+ {
+ $request_id = $request->id ?? null;
+
+ // Transforma os semestres da disciplina cursada do formato ordinal (1° ou 2°) para inteiro (1 ou 2)
+ for($i = 1; $i < 4; $i++)
+ {
+ if(!is_null($request->input('semestre_dis' . $i)))
+ { $request->merge(['semestre_dis' . $i => (int)$request->input('semestre_dis' . $i)]); }
+ }
+
+ // Gera o validator
+ $validator = static::validate_req($request);
+
+ // Caso alguma falha seja encontrada, retorna com os erros
+ if($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); }
+
+
+ // Gera (ou recupera) a submissão do formulário e a salva no banco de dados
+ $submission = (new Form(['editable' => true]))->handleSubmission($request);
+
+ if(isset($request_id)) { $data = self::update_req($request, $submission); }
+ else { $data = self::create_req($request, $submission); }
+
+ if(!isset($data))
+ {
+ return redirect()->back()->with('alert-danger', 'Nao há equivalências para a submissão editada');
+ }
+ else
+ {
+ // Redireciona para a rota de show do pedido de aproveitamento criado
+ return redirect()->route('equivalencias.req-show', ['group' => $data['eq_group']])->with('alert-success','Requerimento para '. $data['req_name'] . ' ' . $data['modo'] . ' com sucesso !');
+ }
+
+ }
+
+ /**
+ * Função index, apresenta todas as requisições feitas pelo usuário
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function index(): View
+ {
+ // Recupera o id do user
+ $user_id = Auth::user()->id;
+
+ // Busca na tabela de equivalências as requisições feitas pelo usuário
+ // Retorna em formato de array, ordenado pelo tempo de criação, de forma decrescente (mais novo -> mais velho)
+ $reqs = Equivalencia::where('criado_por_id', $user_id)->orderBy('created_at', 'desc')->get()->toArray();
+
+ $curr_group = 0; // Variável auxiliar
+ $requisitions = []; // Variável para exibição das requisições
+
+ // Percorre todas as requisições encontradas na busca anterior
+ foreach($reqs as $req)
+ {
+ // TODO - Verificar o que será necessário adicionar aqui para a exibição
+
+ // Recupera o nome da disciplina pelo id
+ $dis_name = Disciplina::where('id',$req['requerida_id'])->value('nomdis');
+
+ // Verifica se o grupo da requisição atual é o que está sendo utilizado, senão o atribui
+ if($curr_group != $req['grupo']){$curr_group = $req['grupo'];}
+
+ // Verifica se existe já um registro do grupo atual, se não, o cria
+ if(!isset($requisitions[$dis_name .'_gp' . $curr_group]))
+ {
+ $requisitions[$dis_name . '_gp'. $curr_group] = [
+ 'nomdis' => $dis_name,
+ 'estado' => $req['estado'],
+ 'grupo' => $req['grupo'],
+ ];
}
+
}
- // TODO - Retorno para a rota de 'show'.
+ // Retorna a view para exibição dos registros criados no loop acima
+ return view('aproveitamentos.index',['requisicoes' => $requisitions]);
+ }
+
+ // TODO - implementar a função show
+
+ /**
+ * Função para exibição de um pedido de aproveitamento - Placeholder
+ * @param int $group
+ */
+ public function show(int $group): View
+ {
+ // Recupera os registros de equivalencia e a a disciplina requerida
+ $eqs = Equivalencia::where('grupo', $group)->get()->toArray();
+ $req_dis = Disciplina::where('id', $eqs[0]['requerida_id'])->firstOrFail();
+
+ // Array que armazena os dados a serem exibidos, divido em disciplina requerida e cursadas
+ $show_data = [];
+ $show_data['requerida'] = [
+ 'coddis' => $req_dis->coddis,
+ 'nomdis' => $req_dis->nomdis,
+ 'sglund' => $req_dis->sglund,
+ ];
+
+ // Percorre todos os registros de equivalência atrelados ao grupo
+ foreach($eqs as $eq)
+ {
+ // Recupera a disciplina cursada neste registro
+ $cur_dis = Disciplina::where('id', $eq['cursada_id'])->firstOrFail();
+
+ // Recupera o arquivo atrelado àquele registro
+ $file = Arquivo::where('equivalencia_id',$eq['id'])->firstOrFail();
+
+ // Adiciona as informaçẽos da disciplina cursada ao array
+ $show_data['cursadas'][] = [
+ 'coddis' => $cur_dis->coddis,
+ 'nomdis' => $cur_dis->nomdis,
+ 'ementa_file' => [
+ 'name' => $file->nome,
+ 'path' => $file->path
+ ],
+ 'semestre' => $cur_dis->semestre,
+ 'ano' => $cur_dis->ano,
+ 'freq' => $cur_dis->frequencia,
+ 'nota' => $cur_dis->nota,
+ 'creditos' => $cur_dis->creditos,
+ 'carga_hr' => $cur_dis->carga_horaria,
+ 'ies' => $cur_dis->ies
+ ];
+ }
+
+ return view('aproveitamentos.show', ['show_data' => $show_data]);
+ }
+
+ /**
+ * Remove um pedido de aproveitamento do banco de dados
+ * @param int $group
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function destroy(int $group)
+ {
+ // Busca todos os registros de equivalencia do mesmo grupo (mesmo requerimento)
+ $eqs = Equivalencia::where('grupo', $group)->get();
+
+ // Recupera a disciplina requerida
+ $req_dis = Disciplina::where('id', $eqs[0]->requerida_id)->firstOrFail();
+
+ $req_name = $req_dis->nomdis; // Guarda o nome da disciplina requerida
+
+ // Percorre todos os registros de equivalencia do grupo
+ foreach($eqs as $eq)
+ {
+ // Remove o registro de cada disciplina cursada, e por consequência, o registro de equivalência
+ $cur_dis = Disciplina::find($eq->cursada_id);
+ if($cur_dis){$cur_dis->delete();}
+ }
+
+ // Remove a disciplina requerida
+ $req_dis->delete();
+
+ return redirect()->back()->with('alert-success','Requerimento de equivalência para '. $req_name . ' removido com sucesso.');
+ }
+
+ /**
+ * Função que possibilita a edição de uma requisição de equivalência
+ * @param int $group
+ * @return View
+ */
+ public function edit(int $group): View
+ {
+ // Recupera o id da submissão atrelada ao pedido de equivalência
+ $submission_id = Equivalencia::where('grupo',$group)->firstOrFail()->submission_id;
+
+ // Recupera a submissão e a definição de formulário atreladas à equivalência
+ $submission = FormSubmission::where('id', $submission_id)->firstOrFail();
+ $formDef = FormDefinition::where('id', $submission->form_definition_id)->firstOrFail();
+
+ // Gera o html para a edição do formulário
+ $formHtml = (new Form(['method' => 'PUT']))->generateHtml($formDef->name, $submission);
+
+ return view('aproveitamentos.edit',['formHtml' => $formHtml, 'submission' => $submission]);
+ }
+
+ /**
+ * Atualiza os registros de equivalencia de acordo com as modificações do usuário
+ * @param Request $request
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function update(Request $request)
+ {
+ // Recupera o caminho e extrai o grupo de equivalências a partir dele
+ $path = $request->path();
+ $eq_group = (int)explode('/',$path)[3];
+
+ // Recupera o id da submissão atrelada ao pedido de equivalência
+ $request->id = Equivalencia::where('grupo',$eq_group)->firstOrFail()->submission_id;
+ return $this->store($request);
}
}
diff --git a/app/Models/Equivalencia.php b/app/Models/Equivalencia.php
index 459310d..f0ec14b 100644
--- a/app/Models/Equivalencia.php
+++ b/app/Models/Equivalencia.php
@@ -20,6 +20,7 @@ class Equivalencia extends Model
'tipo',
'codcur',
'codhab',
+ 'submission_id',
'criado_por_id',
'alterado_por_id',
];
@@ -34,6 +35,7 @@ class Equivalencia extends Model
'cursada_id' => 'integer',
'codcur' => 'integer',
'codhab' => 'integer',
+ 'submission_id' => 'integer',
];
public function requerida()
diff --git a/config/laravel-usp-theme.php b/config/laravel-usp-theme.php
index 1c95116..04292ec 100644
--- a/config/laravel-usp-theme.php
+++ b/config/laravel-usp-theme.php
@@ -47,7 +47,7 @@
],
[
'text' => 'Meus requerimentos',
- 'url' => 'showuserobjects',
+ 'url' => 'equivalencias/index',
'can' => 'user',
],
[
diff --git a/database/migrations/2026_04_06_174059_create_equivalencias_table.php b/database/migrations/2026_04_06_174059_create_equivalencias_table.php
index 4110ac7..0f20383 100644
--- a/database/migrations/2026_04_06_174059_create_equivalencias_table.php
+++ b/database/migrations/2026_04_06_174059_create_equivalencias_table.php
@@ -46,12 +46,19 @@ public function up(): void
->constrained('users')
->cascadeOnDelete();
+ $table->foreignId('submission_id')
+ ->constrained('form_submissions')
+ ->cascadeOnDelete();
+
// Para evitar que tenhamos mais de uma equivalência com a mesma disciplina cursada no mesmo grupo.
// Esse unique não impede que tenhamos a mesma disciplina cursada em grupos diferentes,
// o que é permitido (ex: 2 equivalências diferentes, ambas com a mesma disciplina cursada, mas em grupos diferentes).
// Ele só impede que tenhamos 2 equivalências iguais (mesmo grupo, mesma disciplina cursada).
$table->unique(['grupo', 'cursada_id']);
+ $table->unique(['cursada_id','submission_id']);
+
+
$table->timestamps();
});
}
diff --git a/resources/views/createReq.blade.php b/resources/views/aproveitamentos/createReq.blade.php
similarity index 62%
rename from resources/views/createReq.blade.php
rename to resources/views/aproveitamentos/createReq.blade.php
index 75597d2..ba90678 100644
--- a/resources/views/createReq.blade.php
+++ b/resources/views/aproveitamentos/createReq.blade.php
@@ -5,6 +5,9 @@
Nova Requisição - Aproveitamento de estudos
-
+
+
+
+
@endsection
\ No newline at end of file
diff --git a/resources/views/aproveitamentos/edit.blade.php b/resources/views/aproveitamentos/edit.blade.php
new file mode 100644
index 0000000..ed5709d
--- /dev/null
+++ b/resources/views/aproveitamentos/edit.blade.php
@@ -0,0 +1,13 @@
+@extends('layouts.app')
+
+@section('content')
+
+
+
Requisição - {{ $submission->data['disciplina4'] }}
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/aproveitamentos/index.blade.php b/resources/views/aproveitamentos/index.blade.php
new file mode 100644
index 0000000..cbd8107
--- /dev/null
+++ b/resources/views/aproveitamentos/index.blade.php
@@ -0,0 +1,44 @@
+@extends('layouts.app')
+
+@section('content')
+
+
+
+
+
+
+
+
+ | Disciplina requerida |
+ Estado atual |
+ Grupo |
+ Ações |
+
+
+
+ @foreach ($requisicoes as $reqinfo)
+
+ |
+
+ {{ $reqinfo['nomdis'] }}
+
+ |
+
+ {{ $reqinfo['estado'] ?? 'PLACEHOLDERS_NULO' }}
+ |
+ {{ $reqinfo['grupo'] }} |
+
+ Remover
+ Editar
+ |
+
+ @endforeach
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/aproveitamentos/show.blade.php b/resources/views/aproveitamentos/show.blade.php
new file mode 100644
index 0000000..58e5e88
--- /dev/null
+++ b/resources/views/aproveitamentos/show.blade.php
@@ -0,0 +1,60 @@
+@extends('layouts.app')
+
+@section('content')
+
+@endsection
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 3fe1ece..8d369da 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -18,31 +18,36 @@
Route::get('/', [WorkflowController::class, 'home'])->name('workflows.index');
-Route::middleware(['auth'])->group(function () {
+Route::middleware(['auth'])->prefix('equivalencias')->group(function () {
Route::middleware('can:equivalencias')->group(function () {
- Route::get('/equivalencias', [EquivalenciaController::class, 'index'])
+ Route::get('/', [EquivalenciaController::class, 'index'])
->name('equivalencias.index');
- Route::get('/equivalencias/{codcur}/{codhab}', [EquivalenciaController::class, 'show'])
+ Route::get('/{codcur}/{codhab}', [EquivalenciaController::class, 'show'])
->name('equivalencias.show');
Route::post('/equivalencia/estado-edicao', [EquivalenciaController::class, 'saveEditModeState'])
->name('equivalencias.save-edit-mode-state');
- Route::post('/equivalencias/{codcur}/{codhab}', [EquivalenciaController::class, 'store'])
+ Route::post('/{codcur}/{codhab}', [EquivalenciaController::class, 'store'])
->name('equivalencias.store');
- Route::put('/equivalencias/{codcur}/{codhab}/{equivalencia}', [EquivalenciaController::class, 'update'])
- ->name('equivalencias.update');
- Route::delete('/equivalencias/{codcur}/{codhab}/{equivalencia}', [EquivalenciaController::class, 'destroy'])
+ Route::put('/{codcur}/{codhab}/{equivalencia}', [EquivalenciaController::class, 'update'])
+ ->name('equivalencias.update')->whereNumber('codcur')->whereNumber('codhab');
+ Route::delete('/{codcur}/{codhab}/{equivalencia}', [EquivalenciaController::class, 'destroy'])
->name('equivalencias.destroy');
- Route::post('/equivalencias/{codcur}/{codhab}/{equivalencia}/equivalencias', [EquivalenciaController::class, 'addEquivalencia'])
+ Route::post('/{codcur}/{codhab}/{equivalencia}/equivalencias', [EquivalenciaController::class, 'addEquivalencia'])
->name('equivalencias.add-equivalencia');
- Route::put('/equivalencias/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}', [EquivalenciaController::class, 'updateEquivalencia'])
+ Route::put('/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}', [EquivalenciaController::class, 'updateEquivalencia'])
->name('equivalencias.update-equivalencia');
- Route::delete('/equivalencias/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}', [EquivalenciaController::class, 'destroyEquivalencia'])
+ Route::delete('/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}', [EquivalenciaController::class, 'destroyEquivalencia'])
->name('equivalencias.destroy-equivalencia');
- Route::delete('/equivalencias/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}/grupo', [EquivalenciaController::class, 'destroyEquivalenciaGrupo'])
+ Route::delete('/{codcur}/{codhab}/{equivalencia}/equivalencias/{equivalenciaFilha}/grupo', [EquivalenciaController::class, 'destroyEquivalenciaGrupo'])
->name('equivalencias.destroy-equivalencia-grupo');
- Route::get('/equivalencias/newreq', [AproveitamentoController::class, 'create'])->name('equivalencias.newreq-create');
- Route::post('/equivalencias/newreq', [AproveitamentoController::class, 'store'])->name('equivalencias.newreq-store');
+ Route::get('/newreq', [AproveitamentoController::class, 'create'])->name('equivalencias.newreq-create');
+ Route::post('/newreq', [AproveitamentoController::class, 'store'])->name('equivalencias.newreq-store');
+ Route::get('/index',[AproveitamentoController::class, 'index'])->name('equivalencias.req-index');
+ Route::get('/req/show/{group}',[AproveitamentoController::class, 'show'])->name('equivalencias.req-show');
+ Route::get('/req/destroy/{group}',[AproveitamentoController::class, 'destroy'])->name('equivalencias.req-destroy');
+ Route::get('/req/edit/{group}',[AproveitamentoController::class, 'edit'])->name('equivalencias.req-edit');
+ Route::put('/req/edit/{group}',[AproveitamentoController::class, 'update'])->name('equivalencias.req-update');
});
Route::get('/createdefinition', [WorkflowController::class, 'createDefinition'])->name('workflows.create-definition');