Fix create form and add edit Recettes / delete Recettes
This commit is contained in:
@@ -41,13 +41,17 @@ class RecettesAPIController extends Controller {
|
||||
$recetteRepo = new RecetteRepository();
|
||||
$resp = $recetteRepo->advancedRecetteSearch( $title, $tagsId, $ingredientsId );
|
||||
|
||||
$resp = array_map( function($recette) use ($recetteRepo){
|
||||
$r = $recetteRepo->getByID( $recette['num_recette'] );
|
||||
$r->url = Router::getRouteURL( 'recettes->show', $r->slug );
|
||||
$r->nb_ingredients = $r->getNumberOfIngredients();
|
||||
return $r;
|
||||
}, $resp ?? [] );
|
||||
JSONResponse::sendSuccess( [ 'data' => $resp ] );
|
||||
$objResp = [];
|
||||
foreach( $resp as $r ){
|
||||
$r = $recetteRepo->getByID( $r['num_recette'] );
|
||||
$r->url = Router::getRouteURL( 'recettes->show', $r->slug );
|
||||
$r->nb_ingredients = $r->getNumberOfIngredients();
|
||||
if( !in_array( $r, $objResp ) ){
|
||||
$objResp[] = $r;
|
||||
}
|
||||
}
|
||||
|
||||
JSONResponse::sendSuccess( [ 'data' => $objResp ] );
|
||||
|
||||
}
|
||||
|
||||
@@ -58,8 +62,8 @@ class RecettesAPIController extends Controller {
|
||||
$temps = Request::post( 'temps' ) ?? "";
|
||||
$fileField = "image";
|
||||
|
||||
$tagsId = explode( ",", Request::post( 'tag' ) ) ?? [];
|
||||
$ingredientsId = explode( ",", Request::post( 'ingr' ) ) ?? [];
|
||||
$tagsId = explode( ",", Request::post( 'tags' ) ) ?? [];
|
||||
$ingredientsId = explode( ",", Request::post( 'ingredients' ) ) ?? [];
|
||||
|
||||
if( $tagsId == [ "" ] )
|
||||
$tagsId = [];
|
||||
@@ -83,13 +87,16 @@ class RecettesAPIController extends Controller {
|
||||
|
||||
// Vérification d'une entrée qui existerait déjà.
|
||||
$slug = strtolower( $name );
|
||||
$slug = str_replace( ' ', '-', $slug );
|
||||
$slug = str_replace( ' ', '', $slug );
|
||||
|
||||
$recetteRepo = new RecetteRepository();
|
||||
|
||||
if( $recetteRepo->getBySlug( $slug ) ){
|
||||
JSONResponse::sendError( [ 'error' => "Recette already exists" ] );
|
||||
}
|
||||
if( in_array( $slug, [ 'create', 'edit', 'delete' ] ) ){
|
||||
JSONResponse::sendError( [ 'error' => "Recette already exists" ] );
|
||||
}
|
||||
|
||||
// Création de la recette.
|
||||
$recette = new Recette();
|
||||
@@ -98,7 +105,7 @@ class RecettesAPIController extends Controller {
|
||||
$recette->titre_recette = $name;
|
||||
$recette->slug = $slug;
|
||||
|
||||
$recette->temps_de_preparation = intval( $temps );
|
||||
$recette->temps_de_preparation = intval( $temps <= 0 ? 1 : $temps );
|
||||
$recette->photo = $urlOrError;
|
||||
$recette->description_recette = $description;
|
||||
$recette->publication_date = date("Y-m-d");
|
||||
@@ -140,8 +147,8 @@ class RecettesAPIController extends Controller {
|
||||
$temps = Request::post( 'temps' ) ?? "";
|
||||
$fileField = "image";
|
||||
|
||||
$tagsId = explode( ",", Request::post( 'tag' ) ) ?? [];
|
||||
$ingredientsId = explode( ",", Request::post( 'ingr' ) ) ?? [];
|
||||
$tagsId = explode( ",", Request::post( 'tags' ) ) ?? [];
|
||||
$ingredientsId = explode( ",", Request::post( 'ingredients' ) ) ?? [];
|
||||
|
||||
if( $tagsId == [ "" ] )
|
||||
$tagsId = [];
|
||||
@@ -173,12 +180,12 @@ class RecettesAPIController extends Controller {
|
||||
|
||||
// Vérification d'une entrée qui existerait déjà.
|
||||
$slug = strtolower( $name );
|
||||
$slug = str_replace( ' ', '-', $slug );
|
||||
$slug = str_replace( ' ', '', $slug );
|
||||
|
||||
$recette->titre_recette = $name;
|
||||
$recette->slug = $slug;
|
||||
|
||||
$recette->temps_de_preparation = intval( $temps );
|
||||
$recette->temps_de_preparation = intval( $temps <= 0 ? 1 : $temps );
|
||||
$recette->description_recette = $description;
|
||||
|
||||
// Importation de la recette.
|
||||
|
||||
@@ -33,4 +33,15 @@ class RecettesController extends Controller {
|
||||
] );
|
||||
}
|
||||
|
||||
public function show( string $slug ): View {
|
||||
|
||||
$recette = new RecetteRepository()->getBySlug( $slug );
|
||||
if( !$recette )
|
||||
die( "Recette not found" );
|
||||
|
||||
return new View( 'recettes/show', [
|
||||
'recette' => $recette,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,12 @@
|
||||
namespace App\Domain\Recettes;
|
||||
|
||||
use App\Domain\Controller;
|
||||
use App\Domain\Ingredients\IngredientRepository;
|
||||
use App\Domain\Tags\TagRepository;
|
||||
use App\Helpers\Authentification;
|
||||
use App\Http\JSONResponse;
|
||||
use App\Http\Request;
|
||||
use App\Infrastructure\View;
|
||||
|
||||
class RecettesManagementController extends Controller {
|
||||
|
||||
@@ -11,7 +17,69 @@ class RecettesManagementController extends Controller {
|
||||
return [
|
||||
self::Route( routeUrl: '/recettes/create', routeName: 'recettes->create', routeAction: 'create' ),
|
||||
self::Route( routeUrl: '/recettes/edit/{int}', routeName: 'recettes->edit', routeAction: 'edit' ),
|
||||
self::Route( routeUrl: '/recettes/delete/{int}', routeName: 'recettes->delete', routeAction: 'delete' ),
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
public function create(): View {
|
||||
if( !Authentification::isLoggedIn() )
|
||||
die( "Not logged in" );
|
||||
|
||||
return new View( 'recettes/create', [
|
||||
'tags' => new TagRepository()->getAll(),
|
||||
'ingredients' => new IngredientRepository()->getAll(),
|
||||
] );
|
||||
}
|
||||
|
||||
public function edit( int $idRecette ): View {
|
||||
if( !Authentification::isLoggedIn() )
|
||||
die( "Not logged in" );
|
||||
|
||||
$recette = new RecetteRepository()->getByID( $idRecette );
|
||||
if( !$recette )
|
||||
die( "Recette not found" );
|
||||
|
||||
$tagsID = array_map( function($tag) {
|
||||
return $tag->getId();
|
||||
}
|
||||
, $recette->getAllLinkedTags() ?? [] );
|
||||
|
||||
$ingredientsID = array_map( function($tag) {
|
||||
return $tag->getId();
|
||||
}
|
||||
, $recette->getAllLinkedIngredients() ?? [] );
|
||||
|
||||
return new View( 'recettes/edit', [
|
||||
'recette' => $recette,
|
||||
'recetteTags' => $tagsID,
|
||||
'recetteIngr' => $ingredientsID,
|
||||
'tags' => new TagRepository()->getAll(),
|
||||
'ingredients' => new IngredientRepository()->getAll(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function delete( int $idRecette ): never {
|
||||
if( !Authentification::isLoggedIn() )
|
||||
die( "Not logged in" );
|
||||
|
||||
$recette = new RecetteRepository()->getByID( $idRecette );
|
||||
if( !$recette )
|
||||
die( "Recette not found" );
|
||||
|
||||
$recetteRepo = new RecetteRepository();
|
||||
|
||||
// Retirer tous les liens Ingrédients/Tags.
|
||||
foreach( ( $recette->getAllLinkedIngredients() ?? [] ) as $ingr ){
|
||||
$recetteRepo->removeAnIngredient( $ingr, $recette );
|
||||
}
|
||||
foreach( ( $recette->getAllLinkedTags() ?? [] ) as $tag ){
|
||||
$recetteRepo->removeATag( $tag, $recette );
|
||||
}
|
||||
|
||||
if( !$recetteRepo->delete( $recette ) )
|
||||
JSONResponse::sendError( [ 'error' => 'An error occured while deleting recette' ] );
|
||||
|
||||
Request::redirectTo( 'recettes->index' );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user