<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use symfony\Component\Routing\Annotation\Route;
use Pimcore\Model\DataObject;
use Pimcore\Model\Asset\Service;
use Pimcore\Model\DataObject\Service as DoService;
use Carbon\Carbon;
class FaqController extends FrontendController
{
public function generateAssetFolder($folderName){
$yr = date("Y");
$mt = date("M");
$dy = date("d");
$path = "/".$folderName."/".$yr."/".$mt."/".$dy;
// $createAssetFolder = DoService::createFolderByPath("/Prod");die;
// $object = DataObject::getByPath("/Product");
$object = \Pimcore\Model\Asset::getByPath($path);
if(!$object){
$path1 = "/".$folderName."/".$yr."/".$mt;
$object1 = \Pimcore\Model\Asset::getByPath($path1);
if(!$object1){
$path2 = "/".$folderName."/".$yr;
$object2 = \Pimcore\Model\Asset::getByPath($path2);
if(!$object2){
$path3 = "/".$folderName;
$object3 = \Pimcore\Model\Asset::getByPath($path3);
if(!$object3){
$createAssetFolder = Service::createFolderByPath($path3);
$createAssetFolder = Service::createFolderByPath($path2);
$createAssetFolder = Service::createFolderByPath($path1);
$createAssetFolder = Service::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}else {
$createAssetFolder = Service::createFolderByPath($path2);
$createAssetFolder = Service::createFolderByPath($path1);
$createAssetFolder = Service::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
}else {
$createAssetFolder = Service::createFolderByPath($path1);
$createAssetFolder = Service::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
} else {
$createAssetFolder = Service::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
} else
$objParentId = $object->getId();
return $objParentId;
}
public function generateObjFolder($folderName){
$yr = date("Y");
$mt = date("M");
$dy = date("d");
$path = "/".$folderName."/".$yr."/".$mt."/".$dy;
$object = DataObject::getByPath($path);
if(!$object){
$path1 = "/".$folderName."/".$yr."/".$mt;
$object1 = DataObject::getByPath($path1);
if(!$object1){
$path2 = "/".$folderName."/".$yr;
$object2 = DataObject::getByPath($path2);
if(!$object2){
$path3 = "/".$folderName;
$object3 = DataObject::getByPath($path3);
if(!$object3){
$createAssetFolder = DoService::createFolderByPath($path3);
$createAssetFolder = DoService::createFolderByPath($path2);
$createAssetFolder = DoService::createFolderByPath($path1);
$createAssetFolder = DoService::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}else {
$createAssetFolder = DoService::createFolderByPath($path2);
$createAssetFolder = DoService::createFolderByPath($path1);
$createAssetFolder = DoService::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
}else {
$createAssetFolder = DoService::createFolderByPath($path1);
$createAssetFolder = DoService::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
} else {
$createAssetFolder = DoService::createFolderByPath($path);
$objParentId = $createAssetFolder->getId();
}
} else
$objParentId = $object->getId();
return $objParentId;
}
/**
* @param Request $request
*
* @Route("/createItcFaq")
*
* @return Response
*
*/
public function createItcFaqAction(Request $request): Response
{
$faqId = $request->get('faqId');
$locationcode = $request->get('locationcode');
$fqaQuestion = $request->get('faqQuestion');
$faqAnswer = $request->get('faqAnswer');
$faqType = $request->get('faqType');
$createAssetFolder = DoService::createFolderByPath('FAQ');
$objParentId = $createAssetFolder->getId();
if(!empty($faqId)){
$location_code_array = DataObject\Locations::getById($locationcode);
$holidayObjectName = $faqId;
//--------- Check data -------------//
$msg='';
$checkDataList = DataObject\ItcAddFaq::getList();
if ($checkDataList->getClass()->getFieldDefinition('faqId')->isFilterable()) {
$checkDataList->filterByfaqId($faqId, '=');
}
$checkDataList->load();
if(count($checkDataList) > 0){
$msg .= $faqId.',';
}
//--------- End of Check data -------------//
$succ_msg='';
if($msg == '')
{
//Create a new object
$newObject = new DataObject\ItcAddFaq();
$newObject->setKey(\Pimcore\Model\Element\Service::getValidKey($holidayObjectName, 'object'));
$newObject->setParentId($objParentId);
$newObject->setfaqId($faqId);
$newObject->setlocation_code($location_code_array->getlocation_name());
$newObject->setfaqQuestion($fqaQuestion);
$newObject->setfaqAnswer($faqAnswer);
$newObject->setfaqType($faqType);
$newObject->setPublished(true);
$newObject->save();
$succ_msg = 'Faq Created Successfully';
}
if($msg != '')
$msg = substr($msg, 0, -1)." Faq(s) added already";
$succ_msg_data = ($msg && $succ_msg)?$msg.', '.$succ_msg:(($msg)?$msg:($succ_msg?$succ_msg:''));
$this->addFlash('success', $succ_msg_data);
$locationsList = DataObject\Locations::getList();
$locationsList->load();
$entries = new DataObject\ItcAddFaq\Listing();
return $this->render('faq/listing-faq.html.twig',['data' => $entries,'locationsList' => $locationsList ]);
}else{
$entries = new DataObject\ItcAddFaq\Listing();
$locationsList = DataObject\Locations::getList();
$locationsList->load();
return $this->render('faq/create-faq.html.twig',['data' => $entries,'locationsList' => $locationsList ]);
}
}
/**
* @param Request $request
*
* @Route("/itcfaqListingAction")
*
* @return Response
*
*/
public function itcfaqListingAction(Request $request): Response
{
$locationsList = DataObject\ItcAddFaq::getList();
$locationsList->load();
return $this->render('faq/listing-faq.html.twig',['data' => $locationsList,'locationsList' => $locationsList ]);
}
/**
* @param Request $request
*
* @Route("/editItcFaq/{id}")
*
* @return Response
*
*/
public function editItcFaqAction($id) {
$entries = DataObject\ItcAddFaq::getById($id);
$locationsLists = DataObject\Locations::getList();
$locationsLists->load();
$location_codes = $entries->getlocation_code();
$locationsList = new DataObject\Locations\Listing();
$locationsList->setCondition("location_name = :name", ["name" => $location_codes]);
$locationsList->load();
foreach($locationsList as $locations){
$selected = '';
if(!empty($hol_locs) && $hol_locs)
$selected = ' selected';
$locations->selected = $selected;
}
$faqTypes = ['General', 'Loyalty'];
$faqTypes_list = [];
foreach($faqTypes as $faqType_info)
{
$selected=($entries->getfaqType() != '' && $entries->getfaqType() == $faqType_info)?'selected':'';
$faqTypes_list[] = ['faqType'=>$faqType_info,'s'=>$selected];
}
return $this->render('faq/edit-faq.html.twig', compact('entries','locationsList','locationsLists','faqTypes_list'));
}
/**
* @param Request $request
*
* @Route("/updateItcFaq")
*
* @return Response
*
*/
public function updateItcFaqAction(Request $request): Response
{
$idfaq = $request->get('idfaq');
$faqId = $request->get('faqId');
$locationcode = $request->get('locationcode');
$fqaQuestion = $request->get('faqQuestion');
$faqAnswer = $request->get('faqAnswer');
$faqType = $request->get('faqType');
//--------- Check data -------------//
$msg='';
$checkDataList = DataObject\ItcAddFaq::getList();
if ($checkDataList->getClass()->getFieldDefinition('faqId')->isFilterable()) {
$checkDataList->filterByfaqId($faqId, '=');
}
$checkDataList->load();
if(count($checkDataList) > 0){
foreach($checkDataList as $checkData)
{
if($checkData->getId() != $idfaq)
$msg .= $faqId.',';
}
}
//--------- End of Check data -------------//
$succ_msg='';
if($msg == '')
{
$locationsList = DataObject\Locations::getList();
$locationsList->load();
$location_code_array = DataObject\Locations::getById($locationcode);
//Create a new object
$newObject = DataObject\ItcAddFaq::getById($idfaq);
$newObject->setfaqId($faqId);
$newObject->setlocation_code($location_code_array->getlocation_name());
$newObject->setfaqQuestion($fqaQuestion);
$newObject->setfaqAnswer($faqAnswer);
$newObject->setfaqType($faqType);
$newObject->setPublished(true);
$newObject->save();
$succ_msg = 'Faq Updated Successfully';
}
if($msg != '')
$msg = substr($msg, 0, -1)." Faq(s) added already";
$succ_msg_data = ($msg && $succ_msg)?$msg.', '.$succ_msg:(($msg)?$msg:($succ_msg?$succ_msg:''));
$this->addFlash('success', $succ_msg_data);
$list = new DataObject\ItcAddFaq\Listing();
return $this->render('faq/listing-faq.html.twig',['data' => $list ]);
}
/**
* @param Request $request
*
* @Route("/deleteItcFaq/{id}")
*
* @return Response
*
*/
public function deleteItcFaqAction($id)
{
$entries = DataObject\ItcAddFaq::getById($id);
$delete = $entries->delete();
if($delete){
$list = new DataObject\ItcAddFaq\Listing();
}else{
$list = new DataObject\ItcAddFaq\Listing();
}
$locationsList = DataObject\Locations::getList();
$locationsList->load();
return $this->render('faq/listing-faq.html.twig',['data' => $list ]);
}
/**
* @param Request $request
*
* @Route("/faqApi",methods={"POST"})
*
* @return Response
*
*/
public function faqApiAction(Request $request)
{
$createAssetFolder = DoService::createFolderByPath('Location');
$objParentId = $createAssetFolder->getId();
$locationcode = (!empty($request->get('location_code')))?$request->get('location_code'):'';
// $faqType = (!empty($request->get('type')))?$request->get('type'):'';
$loc_name = $loc_code = '';
$faqType = (!empty($request->get('type')) && $request->get('type') == 'All')?'':((!empty($request->get('type')) && $request->get('type') != 'All')?$request->get('type'):'General');
$entries = new DataObject\ItcAddFaq\Listing();
if($faqType != '')
$entries->setCondition("faqType = :faqType", ["faqType" => $faqType]);
$entries->load();
$data = array();
foreach($entries as $key => $entrie){
if($locationcode != ''){
$location = new DataObject\Locations\Listing();
$location->setCondition("location_name = :name", ["name" => $locationcode]);
$location->load();
$loc_name = '';
$loc_code = '';
foreach($location as $location_code){
$loc_name = $location_code->getlocation_name();
$loc_code = $location_code->getlocation_code();
}
}
if($loc_name == '' && $loc_code == '' && $entrie->getlocation_code()){
$locationInfo = DataObject\Locations::getBylocation_name($entrie->getlocation_code(), 1);
$loc_name = $locationInfo->getlocation_name();
$loc_code = $locationInfo->getlocation_code();
}
$data[] = array("faqId" => $entrie->getfaqId(),
"location_code" => $loc_code,
"location_name" => $loc_name,
"faqQuestion" => $entrie->getfaqQuestion(),
"faqAnswer" => $entrie->getfaqAnswer(),
"Type" => $entrie->getfaqType(),
);
}
return $this->json(["success" => true, "data" => $data]);
}
}