<?php
namespace App\Controller\Recipes;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use CustomerManagementFrameworkBundle\CustomerProvider\CustomerProviderInterface;
use Pimcore\Localization\LocaleServiceInterface;
use Pimcore\Model\DataObject\ClassDefinition\Service;
use Pimcore\Model\DataObject\Users;
use Pimcore\Model\DataObject\Userloyaltyprogram;
use Pimcore\Model\DataObject\Recipe;
use Pimcore\Model\DataObject\Slider;
use CustomerManagementFrameworkBundle\CustomerSaveValidator\Exception\DuplicateCustomerException;
class recipemenubuilderController extends FrontendController{
public function menubuilderlistingAction(Request $request){
$get_param = $request->query->all();
$category_ids = '';
$brand_ids = '';
$query = '';
$meal_type = '';
if(!empty($get_param)){
foreach($get_param as $key => $value){
if($key == 'category_id'){
$category_ids .= str_replace('_',',', $value);
}
if($key == 'brand_id'){
$brand_ids .= str_replace('_',',', $value);
}
if($key == 'query'){
$query = $value;
}
if($key == 'meal_type'){
$meal_type .= str_replace('_',',', $value);
}
}
}
// if(!empty($category_ids)){
// $category_ids = $category_ids;
// }elseif(!empty($request->get('url')) && empty($get_param)){
// $category_ids = (string)$this->getCategoryId($request->get('url'));
// }
// if(!empty($brand_ids)){
// $brand_ids = array_map('intval',explode(',',$brand_ids));
// }elseif(!empty($request->get('url')) && empty($get_param)){
// $brand_ids = (string)$this->getBrandId($request->get('url'));
// }
// if(!empty($meal_type)){
// $meal_type = explode(',',$meal_type);
// }
$recipes = new Recipe\Listing();
$menu = 0;
if(!empty($category_ids)){
$recipes->addConditionParam("category REGEXP CONCAT('(^|,)(', REPLACE('$category_ids',',', '|'), ')(,|$)')");
$menu = 1;
}
if(!empty($brand_ids)){
// $recipes->addConditionParam("brands_id IN (?)", [$brand_ids]);
$recipes->addConditionParam("brands REGEXP CONCAT('(^|,)(', REPLACE('$brand_ids',',', '|'), ')(,|$)')");
$menu = 1;
}
if(!empty($query)){
$recipes->addConditionParam("name LIKE " . $recipes->quote("%$query%"));
$menu = 1;
}
if(!empty($meal_type)){
$recipes->addConditionParam("typeofmeal LIKE ?", ["%".$meal_type."%"]);
$menu = 1;
}
$page = $request->get('page');
$limit = 9;
if($page == '' || $page ==1){
$start = 0;
$end = $limit;
}else{
$start = $page*$limit - 9;
$end = $limit;
}
$recipes->setOffset($start);
$recipes->setLimit($end);
$recipes->load();
// filters
$filters = array(
'category_ids' => $category_ids,
'brand_ids' => $brand_ids,
'query' => $query,
'meal_type' => $meal_type,
);
$total_recipes = count($recipes);
$total_pages = ceil($total_recipes/9);
$loyalty_banner = new Slider\Listing();
$loyalty_banner->setCondition("o_id = 206");
$loyalty_banner->load();
foreach($loyalty_banner as $loyaltybanner){
break;
}
$ObjectIds = [];
foreach($recipes as $Recipes){
$ObjectIds[] = $Recipes->getId();
}
$uid = $this->get('session')->get('loginUID');
//$rid = $recipedata->getId();
$Liked = new Userloyaltyprogram\Listing();
//for($i=0; $i<count($ObjectIds); $i++){
$Liked->setCondition("op_name = ? and u_id = ? and obj_mod_name = ? and obj_data__id IN (?)",['Like',$uid,'Recipe',$ObjectIds]);
//}
$Liked->load();
$LikedId = [];
foreach($Liked as $liked){
$LikedId[]=$liked->getObj_id();
}
//dd($LikedId);
// $recipe = new Recipe\Listing();
// $recipe->load();
// $recipetype = [];
// $recipesarray = [];
// $newArray = [];
// foreach($recipe as $Recipes){
// // if ($Recipes->getCuisine() not in $recipesarray){
// if (!(in_array($Recipes->getCuisine(), $recipesarray))){
// // $recipesarray = $recipesarray|merge([$Recipes->getCuisine()]);
// $recipesarray = array_merge($recipesarray,[$Recipes->getCuisine()]);
// }
// $recipetype[] = $Recipes->getCuisine();
// }
// //dd($recipesarray);
return $this->render('menubuilder/menu-builder.html.twig',
[
'recipes' => $recipes,
'total_pages' => $total_pages,
'loyaltybanner' => $loyaltybanner,
'filters' => $filters,
'menu' => $menu,
'LikedId' => $LikedId,
]);
}
public function menubuilderdetailAction(Request $request){
$url = $request->get('url');
$menu_builder_details = new Recipe\Listing();
$menu_builder_details->setCondition("url = ?", [$url]);
$menu_builder_details->load();
foreach ($menu_builder_details as $menubuilderdetails) {
break;
}
$similar_menu_ideas = new Recipe\Listing();
$menu_recipe_category = $menubuilderdetails->getCuisine();
$menu_recipe_name = $menubuilderdetails->getName();
$similar_menu_ideas->setCondition("cuisine IN (?) and name != ?",[$menu_recipe_category , $menu_recipe_name]);
$similar_menu_ideas->setLimit(3);
$similar_menu_ideas->setOrderKey("RAND()", false);
$similar_menu_ideas->load();
$uid = $this->get('session')->get('loginUID');
$rid = $menubuilderdetails->getId();
$Liked = new Userloyaltyprogram\Listing();
$Liked->setCondition("op_name = ? and u_id = ? and obj_id = ?",['Like',$uid,$rid]);
$Liked->load();
return $this->render('menubuilder/menu-builder-detail.html.twig',
[
'menu_builder_details' => $menubuilderdetails,
'similar_menu_ideas' => $similar_menu_ideas,
'Liked'=>$Liked,
]);
}
/**
* @Route("/menufilter", name="menufilter")
*/
public function getmenurecipenamefilter(Request $request){
$name = $request->get('mune_recipe_name');
dd($name);
$Recipe = new Recipe\Listing();
$Recipe->setCondition("name IN (?)", [[$name]]);
$brands->load();
if(isset($brand)){
return $brand;
}
return '';
}
}
?>