2018-07-14 18:23:41 +02:00
< ? php
namespace Grocy\Controllers ;
use \Grocy\Services\RecipesService ;
class RecipesController extends BaseController
{
public function __construct ( \Slim\Container $container )
{
parent :: __construct ( $container );
$this -> RecipesService = new RecipesService ();
}
protected $RecipesService ;
public function Overview ( \Slim\Http\Request $request , \Slim\Http\Response $response , array $args )
{
2018-07-15 10:16:36 +02:00
$recipes = $this -> Database -> recipes () -> orderBy ( 'name' );
2018-07-15 09:56:10 +02:00
$selectedRecipe = null ;
$selectedRecipePositions = null ;
if ( isset ( $request -> getQueryParams ()[ 'recipe' ]))
{
$selectedRecipe = $this -> Database -> recipes ( $request -> getQueryParams ()[ 'recipe' ]);
$selectedRecipePositions = $this -> Database -> recipes_pos () -> where ( 'recipe_id' , $request -> getQueryParams ()[ 'recipe' ]);
}
2018-07-15 10:16:36 +02:00
else
{
foreach ( $recipes as $recipe )
{
$selectedRecipe = $recipe ;
$selectedRecipePositions = $this -> Database -> recipes_pos () -> where ( 'recipe_id' , $recipe -> id );
2018-07-15 13:33:59 +02:00
break ;
2018-07-15 10:16:36 +02:00
}
}
2018-07-15 09:56:10 +02:00
2018-10-25 20:36:29 +02:00
$selectedRecipeSubRecipes = $this -> Database -> recipes () -> where ( 'id IN (SELECT includes_recipe_id FROM recipes_nestings_resolved WHERE recipe_id = :1 AND includes_recipe_id != :1)' , $selectedRecipe -> id ) -> orderBy ( 'name' ) -> fetchAll ();
$selectedRecipeSubRecipesPositions = $this -> Database -> recipes_pos () -> where ( 'recipe_id IN (SELECT includes_recipe_id FROM recipes_nestings_resolved WHERE recipe_id = :1 AND includes_recipe_id != :1)' , $selectedRecipe -> id ) -> fetchAll ();
2018-07-14 18:23:41 +02:00
return $this -> AppContainer -> view -> render ( $response , 'recipes' , [
2018-07-15 10:16:36 +02:00
'recipes' => $recipes ,
2018-07-14 18:23:41 +02:00
'recipesFulfillment' => $this -> RecipesService -> GetRecipesFulfillment (),
2018-07-15 09:56:10 +02:00
'recipesSumFulfillment' => $this -> RecipesService -> GetRecipesSumFulfillment (),
'selectedRecipe' => $selectedRecipe ,
'selectedRecipePositions' => $selectedRecipePositions ,
'products' => $this -> Database -> products (),
2018-10-25 20:36:29 +02:00
'quantityunits' => $this -> Database -> quantity_units (),
'selectedRecipeSubRecipes' => $selectedRecipeSubRecipes ,
'selectedRecipeSubRecipesPositions' => $selectedRecipeSubRecipesPositions
2018-07-14 18:23:41 +02:00
]);
}
public function RecipeEditForm ( \Slim\Http\Request $request , \Slim\Http\Response $response , array $args )
{
$recipeId = $args [ 'recipeId' ];
if ( $recipeId == 'new' )
{
$newRecipe = $this -> Database -> recipes () -> createRow ( array (
'name' => $this -> LocalizationService -> Localize ( 'New recipe' )
));
$newRecipe -> save ();
$recipeId = $this -> Database -> lastInsertId ();
}
return $this -> AppContainer -> view -> render ( $response , 'recipeform' , [
'recipe' => $this -> Database -> recipes ( $recipeId ),
'recipePositions' => $this -> Database -> recipes_pos () -> where ( 'recipe_id' , $recipeId ),
'mode' => 'edit' ,
2018-07-15 09:56:10 +02:00
'products' => $this -> Database -> products (),
'quantityunits' => $this -> Database -> quantity_units (),
2018-07-14 18:23:41 +02:00
'recipesFulfillment' => $this -> RecipesService -> GetRecipesFulfillment (),
2018-10-23 19:36:39 +02:00
'recipesSumFulfillment' => $this -> RecipesService -> GetRecipesSumFulfillment (),
2018-10-25 20:36:29 +02:00
'recipes' => $this -> Database -> recipes () -> orderBy ( 'name' ),
2018-10-23 19:36:39 +02:00
'recipeNestings' => $this -> Database -> recipes_nestings () -> where ( 'recipe_id' , $recipeId )
2018-07-14 18:23:41 +02:00
]);
}
public function RecipePosEditForm ( \Slim\Http\Request $request , \Slim\Http\Response $response , array $args )
{
if ( $args [ 'recipePosId' ] == 'new' )
{
return $this -> AppContainer -> view -> render ( $response , 'recipeposform' , [
'mode' => 'create' ,
2018-08-09 17:24:04 +02:00
'recipe' => $this -> Database -> recipes ( $args [ 'recipeId' ]),
'products' => $this -> Database -> products () -> orderBy ( 'name' ),
'quantityUnits' => $this -> Database -> quantity_units () -> orderBy ( 'name' )
2018-07-14 18:23:41 +02:00
]);
}
else
{
return $this -> AppContainer -> view -> render ( $response , 'recipeposform' , [
'mode' => 'edit' ,
'recipe' => $this -> Database -> recipes ( $args [ 'recipeId' ]),
2018-08-09 17:24:04 +02:00
'recipePos' => $this -> Database -> recipes_pos ( $args [ 'recipePosId' ]),
'products' => $this -> Database -> products () -> orderBy ( 'name' ),
'quantityUnits' => $this -> Database -> quantity_units () -> orderBy ( 'name' )
2018-07-14 18:23:41 +02:00
]);
}
}
}