<?php
namespace App\project\OfficeBrain\CustomBundle\UserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\Translator;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\OfficeBrain\Bundle\CoreBundle\CustomeHandler as FormErrorManager;
use App\OfficeBrain\Bundle\UserBundle\Entity\User;
// use App\project\OfficeBrain\CustomBundle\UserBundle\Entity\User; // change project user entity
use App\project\OfficeBrain\CustomBundle\UserBundle\Form\UserType;
use App\OfficeBrain\Bundle\UserBundle\Form\UserPhotoType;
use Symfony\Component\DependencyInjection\ContainerInterface;
use App\OfficeBrain\Bundle\UserBundle\Controller\UserController as baseUserController;
use App\OfficeBrain\Bundle\UserBundle\Manager\Service\UserService;
use App\OfficeBrain\Bundle\UserBundle\Manager\Service\SignUpService;
use App\OfficeBrain\Bundle\CoreBundle\Manager\Service\CoreService;
use App\OfficeBrain\Bundle\SubShopBundle\Manager\Service\SubShopService;
use App\OfficeBrain\Bundle\UserBundle\Manager\Service\BiosService;
use App\OfficeBrain\Bundle\OrderBundle\Manager\Service\OrderService;
use App\OfficeBrain\Bundle\WishListBundle\Manager\Service\WishListService;
use App\OfficeBrain\Bundle\RequestQuoteBundle\Manager\Service\RequestQuoteService;
use App\project\OfficeBrain\CustomBundle\UserBundle\Manager\Service\UserService as CustomUserService;
use App\project\OfficeBrain\CustomBundle\UserBundle\Manager\Service\SignUpService as CustomSignUpService;
use App\OfficeBrain\Bundle\QueueBundle\Manager\Service\ApiManager as QueueApiManager;
class UserController extends baseUserController
{
/**
* @author Employee Id: 4834
* set default value
* @return NULL
*/
public function __construct(ContainerInterface $container, UserService $userService, SignUpService $signUpService, CoreService $coreService, SubShopService $subShopService, BiosService $biosService, OrderService $orderService, WishListService $wishlistService, RequestQuoteService $requestQuoteService, CustomUserService $customUserService, CustomSignUpService $customSignUpService, QueueApiManager $queueApiManager)
{
parent::__construct($container, $userService, $signUpService, $coreService, $subShopService, $biosService, $orderService, $wishlistService, $requestQuoteService, $queueApiManager);
$this->customUserService = $customUserService->getUserExtended();
$this->customSignUpService = $customSignUpService->getSignUpExtended();
}
/**
* @author Employee Id: 4834
* unset default value
* @return NULL
*/
public function __destruct()
{
parent::__destruct();
}
/**
*
* @author Employee Id: 4273
*
* Create various objects required action in this class
*
* @return NULL
*/
public function initAction(Request $request)
{
parent::initAction($request);
// $this->userManager = $this->serviceContainer->get('office_brain_user_manager_custom');
$this->userManager = $this->customUserService;
// $this->signUpManager = $this->serviceContainer->get('office_brain_user_sign_up_manager_custom');
$this->signUpManager = $this->customSignUpService;
// $this->projectUserSetting = $this->request->get('project_user_setting');
}
/**
* @author Employee Id: 4273
* OB eCommerce Product - Login
* Function created to show edit info form
*
* @Route("/{_locale}/my-account/edit-info",
* name="office_brain_userbundle_user_my_account_edit",
* options={"expose"=true}, methods={"GET"}
* )
* @Template("project/OfficeBrain/CustomBundle/UserBundle/User/myAccountEdit.html.twig")
*/
public function myAccountEditAction(Request $request)
{
$this->initAction($request);
$data = array();
$user = $this->projectUserSetting['user_data'];
$user = $user->getId();
$user = $this->userManager->getUserById($user);
$userType = $user->getUserType();
$signUpFormFields = $this->signUpManager->getsignUpFormData($userType);
// $userTypeObj = new UserType($this->coreManager, $signUpFormFields, 'main_edit'); // symfony 4
$form = $this->createForm( UserType::class, $user,[
'core_manager' => $this->coreManager,
'form_fields' => $signUpFormFields,
'form_type' => 'main_edit',
]);
if($user->getCountryId()=='739')
{
$data['othercountry']=1;
}
// $form = $this->createForm($userTypeObj, $user); // symfony 4
$form_photo = $this->createForm(UserPhotoType::class, $user);
$data['form_user'] = $form->createView();
$data['form_fields'] = $signUpFormFields;
$data['form_photo'] = $form_photo->createView();
$data['states'] = $this->coreManager->getStateData($user->getCountryId());
$data['distributors'] = $this->userManager->getDistributors();
return $data;
}
/**
* @author Employee Id: 4273
* OB eCommerce Product - Login
* Function created to save edit info
*
* @Route("/{_locale}/my-account/edit-info",
* name="office_brain_userbundle_user_my_account_edit_post",
* options={"expose"=true}, methods={"POST"}
* )
* @Template("project/OfficeBrain/CustomBundle/UserBundle/User/myAccountEdit.html.twig")
*/
public function myAccountEditPostAction(Request $request)
{
$this->initAction($request);
$data = array();
$errors = '';
$user = $this->projectUserSetting['user_data'];
$user = $user->getId();
$user = $this->userManager->getUserById($user);
$userType = $user->getUserType();
$signUpFormFields = $this->signUpManager->getsignUpFormData($userType);
$requestarray=$this->request->request->all();
// if($requestarray['ob_user']['countryId']=='739') // symfony 4
if($requestarray['user']['countryId']=='739')
{
unset($signUpFormFields['validations'][7]);
unset($signUpFormFields['validations'][8]);
unset($signUpFormFields['validations'][9]);
$data['othercountry']=1;
}
// $userTypeObj = new UserType($this->coreManager, $signUpFormFields, 'main_edit'); // symfony 4
$form = $this->createForm( UserType::class, $user,[
'core_manager' => $this->coreManager,
'form_fields' => $signUpFormFields,
'form_type' => 'main_edit',
]);
$isIndividual = $user->getIsIndividual();
// $form = $this->createForm($userTypeObj, $user); // symfony 4
$form->handleRequest($this->request);
$form_photo = $this->createForm(UserPhotoType::class, $user);
$form->getData()->setIsIndividual($isIndividual); // for admin issue
$userStatus = $this->userManager->editUser($form);
if ($userStatus) {
$erpIntegration = $this->projectSetting['configuration_rule']['erp_integration'];
$is_individual = $userStatus->getIsIndividual();
$erp_flag = TRUE;
$user_type = $userStatus->getUserType();
if (($user_type == 'end_user' && $this->projectSetting['instance_type'] == 'supplier') || ($is_individual == TRUE && $this->projectSetting['instance_type'] == 'supplier')) {
$erp_flag = FALSE;
}
if ($erpIntegration && $erpIntegration['userManagement'] == 1 && !empty($this->queueApiManager) && $userStatus->getErpId()>0 && $erp_flag == TRUE ) {
$this->queueApiManager->mapQueue("update", $userStatus);
}
$this->get('session')->getFlashBag()->set('success_message', $this->translator->trans('user.my_account_edit.success_msg'));
return $this->redirect($this->generateUrl('office_brain_userbundle_user_my_account_info'));
}
$data['form_user'] = $form->createView();
$data['form_fields'] = $signUpFormFields;
$data['form_photo'] = $form_photo->createView();
$data['states'] = $this->coreManager->getStateData($user->getCountryId());
$data['distributors'] = $this->userManager->getDistributors();
if ($this->request->isXmlHttpRequest()) {
if ($this->request->get('call_type')=='country_code' || $this->request->get('call_type')=='state_code') {
return $data;
} else {
$errors = array(
'form_name' => $form->getName(),
'form_status' => 'error',
'form_errors' => $this->formErrorManager->prepareErrorArray($this->get('validator')->validate($form))
);
return new JsonResponse($errors);
}
}
return $data;
}
}