E ai pessoal!!
Estou utilizando a versão 8.54 do Laravel.
A série esta sendo deletada e aparece a mensagem flash com o nome da série deletada, só que o nome dela não esta saindo da listagem:
RemovedorDeSerie.php
<?php
namespace App\Services;
use App\Models\{Serie, Temporada, Episodio};
use Illuminate\Support\Facades\DB;
class RemovedorDeSerie
{
public function removerSerie(int $serieId): string
{
$nomeSerie = '';
DB::transaction(function () use ($serieId, &$nomeSerie) {
$serie = Serie::find($serieId);
$nomeSerie = $serie->nome;
$this->removerTemporadas($serie);
});
return $nomeSerie;
}
private function removerTemporadas(Serie $serie)
{
$serie->temporadas()->each(function (Temporada $temporada) {
$this->removerEpisodios($temporada);
$temporada->delete();
});
}
private function removerEpisodios(Temporada $temporada)
{
$temporada->episodios()->each(function (Episodio $episodio) {
$episodio->delete();
});
}
}
SeriesController.php
<?php
namespace App\Http\Controllers;
use App\Http\Requests\SeriesFormRequest;
use Illuminate\Http\Request;
use App\Models\Serie;
use App\Services\CriadorDeSerie;
use App\Services\RemovedorDeSerie;
class SeriesController extends Controller
{
public function index(Request $request)
{
$series = Serie::orderBy('nome')->get();
$mensagem = $request->session()->get('mensagem');
return view('series.index', compact('series', 'mensagem'));
}
public function create()
{
return view('series.create');
}
public function store(SeriesFormRequest $request, CriadorDeSerie $criadorDeSerie)
{
$serie = $criadorDeSerie->criarSerie(
$request->nome,
$request->qtd_temporadas,
$request->ep_por_temporadas
);
$request->session()
->flash(
'mensagem',
"Série { $serie->id } e suas temporadas e episódios criados com sucesso { $serie->nome }"
);
return redirect()->route('listar_series');
}
public function destroy(Request $request, RemovedorDeSerie $removedorDeSerie)
{
$nomeSerie = $removedorDeSerie->removerSerie($request->id);
$request->session()
->flash(
'mensagem',
"Série $nomeSerie removida com sucesso"
);
return redirect()->route('listar_series');
}
}
series.index
@extends('layout')
@section('cabecalho')
Séries
@endsection
@if(!empty($mensagem))
@section('conteudo')
<div class="alert alert-success">
{{ $mensagem }}
</div>
@endif
<a href="{{ route('form_listar_serie') }}" class="btn btn-dark mb-2">Adicionar</a>
<ul class="list-group">
@foreach($series as $serie)
<li class="list-group-item d-flex justify-content-between align-items-center">
{{ $serie->nome }}
<span class="d-flex">
<a href="/series/{{ $serie->id }}/temporadas" class="btn btn-info btn-sm mr-1">
<i class="fas fa-external-link-alt"></i>
</a>
<form method="post" action="/series/{{ $serie->id }}" onsubmit="return confirm('Tem certeza que deseja remover? {{ addslashes( $serie->nome ) }}')">
@csrf
@method('DELETE')
<button class="btn btn-danger">
<i class="far fa-trash-alt"></i>
</button>
</form>
</span>
</li>
@endforeach
</ul>
@endsection