<?php
namespace App\Controller\Loyalty;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Localization\LocaleServiceInterface;
use Pimcore\Model\DataObject\ClassDefinition\Service;
use Pimcore\Model\DataObject\Userloyaltyprogram;
use Pimcore\Model\DataObject\Recipe;
use Pimcore\Model\DataObject\Trainings;
use Pimcore\Model\DataObject\Events;
use Pimcore\Model\DataObject\News;
use Pimcore\Model\DataObject\Products;
use Pimcore\Model\DataObject\Resources;
use Pimcore\Model\DataObject\Users;
use Pimcore\Model\DataObject\Slider;
use Pimcore\Model\DataObject\LoyaltyProgramhomepage;
use Pimcore\Model\DataObject;
class LoyaltyController extends FrontendController{
/**
* @Route("/loyaltyprogram", name="loyaltyprogram")
*/
public function loyaltyprogramAction(Request $request)
{
$success = false;
$UserName = $request->get('UserName');
$ObjectModule = $request->get('ObjectModule');
$ObjectName = $request->get('ObjectName');
$userid = $this->get('session')->get('loginUID');
$Userdata = Users::getById($userid);
$trianingvalidator = new Userloyaltyprogram\Listing();
$trianingvalidator->setCondition('user_data__id IN (?) and obj_data__id IN (?) and op_name = ?', [$userid , $request->get('ObjectId'), $request->get('OperationName')]);
$trianingvalidator->load();
$Userloyaltyprogram = new Userloyaltyprogram();
$Userloyaltyprogram->setKey(\Pimcore\File::getValidFilename($Userdata->getFirstname().'-'.$Userdata->getLastname().'-'.$userid.'['.$ObjectName.']'.$ObjectModule));
if($request->get('OperationName') == 'Like'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Like/'));
}
if($request->get('OperationName') == 'Share'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Share/'));
}
if($request->get('OperationName') == 'Save'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Save/'));
}
if($request->get('OperationName') == 'Purchase'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Purchase/'));
}
if($request->get('OperationName') == 'Comment'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Comment/'));
}
if($request->get('OperationName') == 'Viewed'){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/Viewed/'));
}
if($request->get('OperationName') == 'watch'){
if(count($trianingvalidator) == 0){
$Userloyaltyprogram->setParent(DataObject\Folder::getByPath('/Loyalty Program/watch/'));
}
}
$Userloyaltyprogram->setU_id($userid);
$Userloyaltyprogram->setUser_data($Userdata);
$Userloyaltyprogram->setU_name($Userdata->getFirstname());
$Userloyaltyprogram->setU_email($Userdata->getEmail());
$Userloyaltyprogram->setObj_id($request->get('ObjectId'));
$Userloyaltyprogram->setObj_name($request->get('ObjectName'));
if($request->get('ObjectModule') == "Recipe"){
$ObjectData = Recipe::getById($request->get('ObjectId'));
$Userloyaltyprogram->setObj_data($ObjectData);
}
if($request->get('ObjectModule') == "Article"){
$ObjectData = Resources::getById($request->get('ObjectId'));
$Userloyaltyprogram->setObj_data($ObjectData);
}
if($request->get('ObjectModule') == "Event"){
$ObjectData = Events::getById($request->get('ObjectId'));
$Userloyaltyprogram->setObj_data($ObjectData);
}
if($request->get('ObjectModule') == "Product"){
$ObjectData = Products::getById($request->get('ObjectId'));
$Userloyaltyprogram->setObj_data($ObjectData);
}
if($request->get('ObjectModule') == "News"){
$ObjectData = News::getById($request->get('ObjectId'));
$Userloyaltyprogram->setObj_data($ObjectData);
}
if($request->get('ObjectModule') == "Training"){
$ObjectData = Trainings::getById($request->get('ObjectId'));
if($request->get('OperationName') == 'watch'){
if(count($trianingvalidator) == 0){
$Userloyaltyprogram->setObj_data($ObjectData);
$Userloyaltyprogram->setwatch_time($request->get('watchvideo'));
$Userloyaltyprogram->setDuration($request->get('videoduration'));
}elseif(count($trianingvalidator) == 1){
foreach($trianingvalidator as $trianingvalidator){
if($trianingvalidator->getwatch_time() < $request->get('watchvideo')){
$trianingvalidator->setwatch_time($request->get('watchvideo'));
$result = $trianingvalidator->save();
if($result){
$success = true;
return $this->json(array('success'=>$success));
exit;
}
}else{
$success = false;
return $this->json(array('success'=>$success));
exit;
}
}
}
}else{
$Userloyaltyprogram->setObj_data($ObjectData);
}
}
$Userloyaltyprogram->setObj_mod_name($request->get('ObjectModule'));
$Userloyaltyprogram->setOp_name($request->get('OperationName'));
$Userloyaltyprogram->setPoints($request->get('RewardPoints'));
$Userloyaltyprogram->setOp_status('1');
if($request->get('OperationName') == 'Like'){
$Userloyaltyprogram->setDesc("You earned these points by liking");
$Userloyaltyprogram->setObj_date(date('d/m/y'));
$Userloyaltyprogram->setObj_time(date('H:i:s'));
$Userloyaltyprogram->setOrdernumber('N/A');
$Userloyaltyprogram->setAction('Appreciation');
$userid = $this->get('session')->get('loginUID');
$Userloyaltyprogrampoints = Users::getById($userid);
$Userloyaltyprogrampoints->setNet_loyalty_points($Userloyaltyprogrampoints->getNet_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_liked_loyalty_points($Userloyaltyprogrampoints->getTotal_liked_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_num_of_like($Userloyaltyprogrampoints->getTotal_num_of_like()+1);
$Userloyaltyprogrampoints->setPublished(true);
$Userloyaltyprogrampoints->save();
}
if($request->get('OperationName') == 'Share'){
$Userloyaltyprogram->setDesc("You earned these points by sharing");
$Userloyaltyprogram->setObj_date(date('d/m/y'));
$Userloyaltyprogram->setObj_time(date('H:i:s'));
$Userloyaltyprogram->setOrdernumber('N/A');
$Userloyaltyprogram->setAction('Appreciation');
$userid = $this->get('session')->get('loginUID');
$Userloyaltyprogrampoints = Users::getById($userid);
$Userloyaltyprogrampoints->setNet_loyalty_points($Userloyaltyprogrampoints->getNet_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_shared_loyalty_points($Userloyaltyprogrampoints->getTotal_shared_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_share($Userloyaltyprogrampoints->getTotal_share()+1);
$Userloyaltyprogrampoints->setPublished(true);
$Userloyaltyprogrampoints->save();
}
if($request->get('OperationName') == 'Save'){
$Userloyaltyprogram->setDesc("You earned these points by saving");
$Userloyaltyprogram->setObj_date(date('d/m/y'));
$Userloyaltyprogram->setObj_time(date('H:i:s'));
$Userloyaltyprogram->setOrdernumber('N/A');
$Userloyaltyprogram->setAction('Appreciation');
$userid = $this->get('session')->get('loginUID');
$Userloyaltyprogrampoints = Users::getById($userid);
$Userloyaltyprogrampoints->setNet_loyalty_points($Userloyaltyprogrampoints->getNet_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_download_loyalty_points($Userloyaltyprogrampoints->getTotal_download_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_downloads($Userloyaltyprogrampoints->getTotal_downloads()+1);
$Userloyaltyprogrampoints->setPublished(true);
$Userloyaltyprogrampoints->save();
}
if($request->get('OperationName') == 'Purchase'){
$Userloyaltyprogram->setDesc("You earned these points by purchasing");
$Userloyaltyprogram->setObj_date(date('d/m/y'));
$Userloyaltyprogram->setObj_time(date('H:i:s'));
$Userloyaltyprogram->setOrdernumber('N/A');
$Userloyaltyprogram->setAction('Purchase');
}
if($request->get('OperationName') == 'Viewed'){
$Userloyaltyprogram->setDesc("You earned these points by Viewed");
$Userloyaltyprogram->setObj_date(date('d/m/y'));
$Userloyaltyprogram->setObj_time(date('H:i:s'));
$Userloyaltyprogram->setOrdernumber('N/A');
$Userloyaltyprogram->setAction('Read');
$userid = $this->get('session')->get('loginUID');
$Userloyaltyprogrampoints = Users::getById($userid);
$Userloyaltyprogrampoints->setNet_loyalty_points($Userloyaltyprogrampoints->getNet_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_viewed_loyalty_points($Userloyaltyprogrampoints->getTotal_viewed_loyalty_points()+$request->get('RewardPoints'));
$Userloyaltyprogrampoints->setTotal_viewed($Userloyaltyprogrampoints->getTotal_viewed()+1);
$Userloyaltyprogrampoints->setPublished(true);
$Userloyaltyprogrampoints->save();
}
$Userloyaltyprogram->setPublished(true);
$result = $Userloyaltyprogram->save();
if($result){
$success = true;
}
return $this->json(array('success'=>$success));
}
public function dashboardAction(Request $request)
{
if($this->get('session')->get('loginUID') != null){
$userid = $this->get('session')->get('loginUID');
$userdata = new Userloyaltyprogram\Listing();
$userdata->setCondition("u_id =".$userid);
$userdata->Load();
$ob_id = [];
$recipe_id = [];
$points= 0;
foreach($userdata as $data){
$ob_id[]= $data->getObj_id();
$points += $data->getPoints();
}
$points;
$ob_id;
$userdatalikerecipe = new Userloyaltyprogram\Listing();
$userdatalikerecipe->setCondition("u_id = ? and op_name LIKE ?",[$userid,"%Like%"]);
$userdatalikerecipe->Load();
$userdatalikerecipeid;
$likeres = [];
foreach($userdatalikerecipe as $Userdatalikerecipe){
$userdatalikerecipeid = $Userdatalikerecipe->getObj_id();
//dd($userdatalikerecipeid);
$userlikerecipes = new Recipe\Listing();
$userlikerecipes->setCondition("O_id =".$userdatalikerecipeid);
if($userlikerecipes->getData() != null){
$likeres[] = $userlikerecipes->Load();}
}
//dd($likeres);
// $userdatalikerecipeidtotal = count($userdatalikerecipeid);
// for($i =0; $i<$userdatalikerecipeidtotal; $i++){
// $userlikerecipes = new Recipe\Listing();
// $userlikerecipes->setCondition("O_id =".$ob_id[$i]);
// $userlikerecipes->Load();
$userdatashareobject = new Userloyaltyprogram\Listing();
$userdatashareobject->setCondition("u_id = ? and op_name LIKE ?",[$userid,"%Share%"]);
$userdatashareobject->Load();
// dd($userdatasharerecipe);
$userdatasharerecipeid;
$shareres = [];
foreach($userdatasharerecipe as $Userdatasharerecipe){
$userdatasharerecipeid = $Userdatasharerecipe->getObj_id();
//dd($userdatasharerecipeid);
$usersharerecipes = new Recipe\Listing();
$usersharerecipes->setCondition("O_id =".$userdatasharerecipeid);
if($usersharerecipes->getData() != null){
$shareres[] = $usersharerecipes->Load();}
}
// dd($shareres);
$userdatasaverecipe = new Userloyaltyprogram\Listing();
$userdatasaverecipe->setCondition("u_id = ? and op_name LIKE ?",[$userid,"%Save%"]);
$userdatasaverecipe->Load();
$userdatasaverecipe = [];
$userdatacommentrecipe = new Userloyaltyprogram\Listing();
$userdatacommentrecipe->setCondition("u_id = ? and op_name LIKE ?",[$userid,"%Comment%"]);
$userdatacommentrecipe->Load();
$userdatacommentrecipe = [];
$userdataprintrecipe = new Userloyaltyprogram\Listing();
$userdataprintrecipe->setCondition("u_id = ? and op_name LIKE ?",[$userid,"%Print%"]);
$userdataprintrecipe->Load();
$userdataprintrecipe = [];
//dd($userdataprintrecipe);
// $res = [];
// for($i =0; $i<count($ob_id); $i++){
// $userlikerecipes = new Recipe\Listing();
// $userlikerecipes->setCondition("O_id =".$ob_id[$i]."and ");
// $res[] = $userlikerecipes->Load();
return $this->render('users/user-dashboard.html.twig',
[
'saverecipes'=> $userdatasaverecipe,
'sharerecipes'=> $shareres,
'likerecipes'=> $likeres,
'commentecipes'=> $userdatacommentrecipe,
'printrecipes'=> $userdataprintrecipe,
'totalrewardpoints'=>$points,
]);
return $this->redirect($locate.'/signin');
}
}
public function loyaltyprogramhomeAction(Request $request){
$LoyaltyProgramhomepage = new LoyaltyProgramhomepage\Listing();
$LoyaltyProgramhomepage->setLimit(1);
$LoyaltyProgramhomepage->load();
foreach($LoyaltyProgramhomepage as $loyaltyProgramhomepage){
break;
}
$ref = $request->server->get('REDIRECT_URL');
$this->get('session')->set('refURL', $ref);
$loyalty_banner = new Slider\Listing();
$loyalty_banner->setCondition("o_id = 206");
$loyalty_banner->load();
foreach($loyalty_banner as $loyaltybanner){
break;
}
$loyalty_banner_spotlight = new Slider\Listing();
$loyalty_banner_spotlight->setCondition("o_id = 48093");
$loyalty_banner_spotlight->load();
foreach($loyalty_banner_spotlight as $loyaltybannerspotlight){
break;
}
return $this->render('Loyalty Program/loyalty-program.html.twig',
[
'loyaltyProgramhomepage'=>$loyaltyProgramhomepage,
'loyaltybanner'=>$loyaltybanner,
'loyaltybannerspotlight'=>$loyaltybannerspotlight,
]);
}
public function loyaltyprogramcatalogAction(Request $request)
{
return $this->render('Loyalty Program/loyalty-program-catalog.html.twig');
}
}
?>